مواد پر جائیں

cc_server CLI

پروسیس کا ہر فلیگ یا تو CLI فلیگ سے آتا ہے یا ماحول کے ویری ایبل سے؛ پہلے فلیگ کا اختیار چلتا ہے، پھر ماحول کا، پھر ڈیفالٹ کا۔ فریقِ ثالث کی اسناد اس کا استثنا ہیں — نیچے دیکھیں۔

فلیگ ماحول ڈیفالٹ مطلب
--data-dir CC_SERVER_DATA_DIR OS کا فی صارف ایپلیکیشن-ڈیٹا ڈائر (نیچے دیکھیں) ڈیٹا بیسز، سیکرٹس، ماڈلز اور کیش شدہ میڈیا
--port CC_SERVER_PORT 9030 TCP پورٹ (0 = عارضی)
--bind CC_SERVER_BIND loopback loopback، یا ہر انٹرفیس کے لیے any/all/0.0.0.0 (TLS یا --insecure درکار)
--repo-roots CC_SERVER_REPO_ROOTS سرور صارف کی ہوم ڈائریکٹری کوما سے الگ بیس ڈائریکٹریاں جنہیں کلائنٹ ریپو رجسٹر کرتے وقت براؤز کر سکتا ہے۔ کسی روٹ سے اوپر براؤز کرنے سے انکار ہوتا ہے
--log-level CC_SERVER_LOG_LEVEL warning debug، info، warning یا error۔ بوٹ ہونے/تیار ہونے کی لائنیں ہمیشہ پرنٹ ہوتی ہیں
--server-name CC_SERVER_NAME مشین کا ہوسٹ نیم وہ نام جو پکرز، دریافت اور پیئرنگ کی سطحوں میں دکھایا جاتا ہے
فلیگ ماحول ڈیفالٹ مطلب
--tls-cert CC_SERVER_TLS_CERT غیر سیٹ PEM سرٹیفکیٹ چین۔ کلید کے ساتھ مل کر سیٹ ہونے پر پروسیس کے اندر wss:// پیش کرتا ہے
--tls-key CC_SERVER_TLS_KEY غیر سیٹ سرٹ کے مطابق PEM پرائیویٹ کلید
--insecure CC_SERVER_INSECURE بند غیر لوپ بیک پلین ٹیکسٹ بائنڈ کی اجازت دیں۔ صرف قابلِ اعتماد نیٹ ورک پر TLS ختم کرنے والے پراکسی کے پیچھے؛ TLS کنفیگر ہونے پر نظر انداز ہو جاتا ہے
--public-url CC_SERVER_PUBLIC_URL بائنڈ سے اخذ شدہ وہ RPC URL جو یہ سرور پیئر شدہ کلائنٹس کو بتاتا ہے۔ پراکسی، NAT یا ٹنل کے پیچھے اسے واضح طور پر سیٹ کریں — ڈیفالٹ مقامی بائنڈ کا محض ایک اندازہ ہے
--allowed-origins CC_SERVER_ALLOWED_ORIGINS https://app.usectrl.dev کوما سے الگ براؤزر اوریجنز جنہیں کراس اوریجن /rpc ڈائل کرنے کی اجازت ہے۔ لوپ بیک اور نیٹو کلائنٹس کو ہمیشہ اجازت ہوتی ہے
--web-client-url CC_SERVER_WEB_CLIENT_URL غیر سیٹ میزبان ویب کلائنٹ کا اوریجن جہاں سنگل سائن اَن کے کال بیک واپس آتے ہیں
--signaling-url CC_SERVER_SIGNALING_URL wss://signaling.usectrl.dev وہ ریلے بروکر جس سے یہ سرور جڑتا ہے تاکہ کوئی فون بغیر کسی براہِ راست راستے کے اس تک پہنچ سکے
--mdns CC_SERVER_MDNS auto LAN اعلان: auto (صرف اُس وقت جب لوپ بیک سے آگے بائنڈ ہو)، on، off۔ دریافت صرف موجودگی کا اعلان کرتی ہے — جڑنے کے لیے پھر بھی پیئرنگ درکار ہے
--tunnel CC_SERVER_TUNNEL بند منظم ٹنل فراہم کنندہ: off، cloudflared، ngrok، tailscale۔ عوامی نمائش اختیاری ہے
--tunnel-binary CC_SERVER_TUNNEL_BINARY PATH سے حل شدہ ٹنل بائنری کی واضح پاتھ
--tunnel-sha256 CC_SERVER_TUNNEL_SHA256 غیر سیٹ اُس بائنری کا متوقع SHA-256، جو ہر اسپان سے پہلے تصدیق ہوتا ہے
--tunnel-args CC_SERVER_TUNNEL_ARGS خالی ٹنل کی درخواست کے لیے کوما سے الگ اضافی آرگیومنٹس
فلیگ ماحول ڈیفالٹ مطلب
--sandbox CC_SERVER_SANDBOX on کہ ایجنٹ رنز میزبان کے OS نیٹو سینڈ باکس میں لپیٹے جائیں یا نہیں، جب کوئی دستیاب ہو۔ یہ آپٹ آؤٹ ہے، آپٹ اِن نہیں — نیچے دیکھیں
--code-index CC_SERVER_CODE_INDEX on بیک گراؤنڈ کوڈ گراف انڈیکسنگ کے لیے فیلڈ بندش سوئچ۔ off بغیر دوبارہ بلڈ صاف بوٹ ہوتا ہے
--code-index-defer CC_SERVER_CODE_INDEX_DEFER 15 تیار بینر کے بعد پہلی انڈیکس جھاڑو روکنے کے سیکنڈ (0–300 تک محدود)
--tool-deferral CC_SERVER_TOOL_DEFERRAL on کہ ہارنس رنز ایک چھوٹا ریذیڈنٹ ٹول سیٹ کے ساتھ نام کا انڈیکس بھیجیں، اور باقی پہلی استعمال پر لوڈ ہوں۔ نیچے دیکھیں
--credential-gate CC_SERVER_CREDENTIAL_GATE 900 وہ سیکنڈ جن تک کوئی رن ایسے کریڈنشل کے درست ہونے کے انتظار میں پارک رہتا ہے جو اُس کی خدمت نہیں کر سکتا (0–3600 تک محدود)۔ نیچے دیکھیں

کسی کریڈنشل کی خالی قدر غیر سیٹ سمجھی جاتی ہے، چنانچہ بلٹ اِن فال بیک پھر بھی لاگو رہتا ہے۔ سورس سے بنے بلڈ میں کوئی بلٹ اِن کریڈنشل بالکل نہیں ہوتا۔

Google Calendar اور Klipy GIF picker صرف ماحول سے چلتے ہیں — کوئی --google-client-id / --klipy-app-key فلیگ نہیں ہے (نامعلوم فلیگز نظر انداز ہو جاتے ہیں)۔ GOOGLE_OAUTH_CLIENT_ID + GOOGLE_OAUTH_CLIENT_SECRET اور KLIPY_APP_KEY ماحول میں سیٹ کریں (یا سرور کے ساتھ والی .env فائل میں)۔ خالی رکھنے سے بوٹ ناکام ہونے کے بجائے وہ خصوصیت بند ہو جاتی ہے۔

سرور بوٹ کے وقت ایک بار میزبان کا جائزہ لیتا ہے اور جب کوئی بیک اینڈ دستیاب ہو تو ایجنٹ کی کمانڈ ایگزیکیوشن کو OS نیٹو سینڈ باکس میں لپیٹ دیتا ہے: macOS پر sandbox-exec (Seatbelt)، اور Linux و WSL2 پر bwrap کے ساتھ socat۔ جہاں کوئی نہ ہو — Windows، یا وہ Linux ہوسٹ جس میں یہ ٹولز نہ ہوں — وہاں رنز ماحول کی صفائی، کمانڈ پالیسی اور ایکشن گارڈریلز پر واپس چلے جاتے ہیں، اور اسٹارٹ اپ لاگ بتا دیتا ہے کہ کون سی حالت لاگو ہے۔

--sandbox off اُس صورت کے لیے فیلڈ بندش سوئچ ہے جو جائزے کو نظر نہیں آتی: ایسا ہوسٹ جہاں خود سینڈ باکس پروفائل غلط برتاؤ کرتا ہو۔ اِسے دوبارہ بلڈ کی ضرورت نہیں اور سرور پروسیس کی پوری عمر کے لیے ایک انتباہ لاگ کرتا ہے تاکہ یہ حالت کبھی خاموش نہ رہے۔

بلٹ اِن ہارنس کے رنز ٹول تعریفوں کا ایک چھوٹا ریذیڈنٹ مجموعہ اور باقی سب کا ایک نام انڈیکس بھیجتے ہیں، جو پہلی بار استعمال پر اپنے اسکیمے لوڈ کرتے ہیں۔ یہ ٹول بلاک کو تقریباً 78% کم کرتا ہے اور ہمیشہ نظر آنے والے مجموعے کو اُس حد کے اندر رکھتا ہے جہاں ماڈلز قابلِ اعتماد طریقے سے ٹولز منتخب کرتے ہیں۔ طلب پر لوڈ ٹولز ہر وقت نام سے کال کے قابل رہتے ہیں، اور search_tools اُنہیں ارادے سے ڈھونڈ لیتا ہے۔ دیکھیں ٹول کانٹیکسٹ اور پرامپٹ کیشنگ۔

--tool-deferral off ہر منظور شدہ ٹول کو دوبارہ ریذیڈنٹ بنا دیتا ہے، اور بالکل وہی درخواستیں دوبارہ بناتا ہے جو سرور طلب پر لوڈ سے پہلے بناتا تھا۔ یہ ایسے ماڈل کے لیے بندش سوئچ ہے جو دو درجوں والی سطح کو بری طرح سنبھالتا ہو — دوبارہ بلڈ کے بجائے ایک فلیگ۔ یہ صرف بلٹ اِن ہارنس پر اثر کرتا ہے؛ بیرونی کلائنٹس کو نظر آنے والی MCP tools/list ہمیشہ مکمل کیٹلاگ ہوتی ہے۔

جس رن کا فراہم کنندہ کریڈنشل غائب ہو یا ختم ہو چکا ہو، وہ ناکام ہونے کے بجائے پارک کر دیا جاتا ہے: آپریٹر کو اُسے درست کرنے کا پرامپٹ ملتا ہے، اور اگر وہ درست کر دے تو رن دوبارہ شروع ہو جاتا ہے۔ ڈیفالٹ مہلت 900 سیکنڈ (15 منٹ) ہے، جو 0–3600 تک محدود ہے۔

یہ مہلت جان بوجھ کر منظوری کے پرامپٹ سے کہیں طویل ہے: منظوری ایک فیصلہ ہے جو کوئی سیکنڈوں میں کر لیتا ہے، جبکہ کریڈنشل درست کرنے کا مطلب ہے ٹرمنل کھولنا، سائن اِن کرنا اور واپس آنا۔ اونچی حد ہی اُس غیر حاضر رن کو — کوئی پائپ لائن قدم، کوئی cron ٹرگر، کوئی ویب ہک — اُس شخص کا انتظار کرنے سے روکتی ہے جو سو رہا ہو۔ جب یہ ختم ہو جاتی ہے تو رن اُسی پیغام کے ساتھ ناکام ہوتا ہے جس کے ساتھ وہ بہرحال ناکام ہوتا۔

--credential-gate=0 بندش سوئچ ہے: کچھ بھی کبھی پارک نہیں ہوتا اور خراب کریڈنشل باری کو بالکل ویسے ہی ختم کر دیتا ہے جیسے گیٹ کے وجود سے پہلے ہوتا تھا۔

کمانڈ یہ کیا کرتی ہے
cc_server سرور کو SIGINT/SIGTERM تک چلاتا ہے
cc_server pair ایک ڈیوائس فراہم کرتا ہے اور اُس کی id اور پیئرنگ کلید پرنٹ کرتا ہے۔ اُس ڈیٹا ڈائر کے خلاف محفوظ ہے جسے کوئی سرور پہلے سے پیش کر رہا ہو — چلتا ہوا سرور نئے ڈیوائس کو بغیر ری اسٹارٹ اُٹھا لیتا ہے
cc_server calendar connect --workspace <id> ڈیوائس کوڈ فلو کے ذریعے کسی ورک اسپیس سے Google اکاؤنٹ جوڑتا ہے، پھر ختم ہو جاتا ہے
cc_server update نئی اسٹینڈ اَلون ریلیز کی جانچ کرتا ہے، ڈاؤن لوڈ کرتا ہے اور تصدیق کرتا ہے
cc_server --version بلڈ ورژن اور git SHA پرنٹ کرتا ہے — وہی شناخت جو /healthz اور RPC ہینڈ شیک ظاہر کرتے ہیں
فلیگ ڈیفالٹ مطلب
--device web-client ڈیوائس id۔ پلیٹ فارم اِسی سے اخذ ہوتا ہے، چنانچہ --device desktop ایک ڈیسک ٹاپ قطار بناتا ہے اور --device ios/android ایک فون قطار؛ باقی کچھ بھی ویب سمجھا جاتا ہے
--label پلیٹ فارم کا نام اور اِس مشین کا ہوسٹ نیم ڈیوائسز کی فہرست میں دکھایا جانے والا نام
--host localhost، یا ہر انٹرفیس پر بائنڈ ہونے پر <this-host> پرنٹ شدہ URL میں شامل کرنے والا ہوسٹ۔ اِسے وہ LAN IP یا ٹنل ہوسٹ بنائیں جسے کلائنٹ واقعی ڈائل کرے گا
--client-url غیر سیٹ میزبان ویب کلائنٹ کا اوریجن۔ ایک اسکین کے قابل ڈیپ لنک اور ٹرمنل QR شامل کرتا ہے

pair بنیادی --data-dir، --port اور --bind فلیگز بھی قبول کرتا ہے: یہ لکھنے کے لیے ڈیٹا ڈائر منتخب کرتے ہیں اور پرنٹ ہونے والا سرور URL بناتے ہیں (لوپ بیک پر ws، اور --bind any پر wss)۔ ایک ہی --device کے لیے pair دوبارہ چلانے سے اُس کی کلید بدل جاتی ہے اور اُس ڈیوائس کے زندہ سیشنز گر جاتے ہیں۔ یہاں بنایا گیا کریڈنشل بغیر میعاد ہوتا ہے، اُن 30 دنوں کے برعکس جو ایپ کے اندر کی پیئرنگ مقرر کرتی ہے۔

--apply انسٹال کو بدل دیتا ہے؛ جب تک کوئی سرور کنفیگر شدہ پورٹ پر جواب دے رہا ہو اُس وقت یہ مسترد کر دیا جاتا ہے، الا یہ کہ آپ --force دیں۔ --allow-downgrade کسی پرانی ریلیز کی اجازت دیتا ہے۔

وہ انسٹالز جن کا یہ خود مالک نہ ہو، کمانڈ اُن کے لیے خرابی کے بجائے وضاحت کے ساتھ صاف انکار کر دیتی ہے:

ماحول کس سے پتہ چلتا ہے یہ کیا کہتی ہے
ڈیسک ٹاپ کا ایمبیڈڈ سرور CC_EMBEDDED=1 یا CC_BOOTSTRAP_DEVICE_ID اس کے بجائے ایپ اپ ڈیٹ کریں — انسٹالر پورا درخت بدل دیتا ہے
dart run والا سورس چیک آؤٹ اسکرپٹ کی پاتھ .dart پر ختم ہوتی ہے اِسے git سے اپ ڈیٹ کریں
Docker کنٹینر مارکرز نئی امیج پل کریں

cc_server SIGINT / SIGTERM تک چلتا ہے۔ اِسے ایک اضافی ماحول ویری ایبل کنٹرول کرتا ہے، اور اُسے آپ کے بجائے ڈیسک ٹاپ سیٹ کرتا ہے:

ویری ایبل اثر
CC_EXIT_WITH_PARENT=1 سرور اُس وقت ختم ہو جاتا ہے جب اُس کا پیرنٹ پروسیس ہو، جس کا پتہ پیرنٹ کے اپنے stdin پائپ کا رائٹ اینڈ بند کرنے سے چلتا ہے۔ ڈیسک ٹاپ اِسے اِس لیے سیٹ کرتا ہے تاکہ کوئی کریش شدہ ایپ کبھی ڈیٹا ڈائر تھامے ہوئے کوئی یتیم سرور پیچھے نہ چھوڑے

اِسے خود صرف اُس وقت سیٹ کریں جب آپ cc_server کو بطور چائلڈ پروسیس نگرانی میں رکھے ہوں اور وہی ضمانت چاہتے ہوں۔

ڈیفالٹ ڈیٹا ڈائر macOS پر ~/Library/Application Support/control-center، Windows پر %APPDATA%\control-center اور باقی جگہوں پر $XDG_DATA_HOME/control-center (ورنہ ~/.local/share/control-center) ہوتا ہے۔ cwd کے نسبتی .cc_server صرف اُس وقت استعمال ہوتا ہے جب کوئی ہوم یا ایپ-ڈیٹا ڈائریکٹری حل نہ ہو۔

پاتھ مواد
global.db ورک اسپیس رجسٹری، صارفین، پیئر شدہ ڈیوائسز، نیوز فیڈ اور فلیٹ قطار
<workspaceId>/workspace.db ہر ورک اسپیس کے لیے ایک ڈیٹا بیس — ایجنٹس، اسپیسز، ٹکٹس، میموری، کوڈ گراف
<workspaceId>/chat_credentials/ چیٹ بوٹ ٹوکنز، سادہ JSON کی صورت میں، تاکہ وہ ورک اسپیس کے ساتھ ہی رہیں
secrets.json پیئرنگ کلیدیں، فراہم کنندہ ایپ کی شناخت، فی صارف اور Google ٹوکنز، SSO (0600)
backups/<timestamp>/ ایک انسٹال اسنیپ شاٹ — manifest.json، global.db اور ہر ورک اسپیس کی ایک کاپی
backups/exports/ واحد ورک اسپیس کی ایکسپورٹس، <workspaceId>-<timestamp>.db
backups/transfer/ بیک اپ ڈاؤن لوڈز اور اپ لوڈز کے لیے اسٹیجنگ؛ اُسی روٹ سے صاف ہوتا ہے جو اسے لکھتا ہے
models/ ڈیوائس پر موجود ایمبیڈنگ، ڈائریائزیشن اور اسپیچ ماڈلز
meetings/<meetingId>/ محفوظ رکھی گئی میٹنگ آڈیو
rigs/images/ درآمد شدہ رگ ڈسک امیجز (QEMU ڈیسک ٹاپ سطح)
rigs/smolvm/<rigId>/ فی رگ microVM رن ٹائم حالت (بروکر سیکرٹ، 0600)
rigs/smolvm-packs/ پہلے سے ایکسٹریکٹ شدہ مشین پیکس — وہ کیش جو بار بار رگ بوٹ کو تیز بناتا ہے
rigs/tls/ رگ HTTPS کے لیے ڈیولپمنٹ ڈومین کی سرٹیفکیٹ اتھارٹی (کلیدیں 0600)
rigs/run/<rigId>/ QEMU اوورلے، سیڈ امیجز اور فی VM کلیدیں (0600)