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
سیکشن کا عنوان “رسائی اور TLS”| فلیگ | ماحول | ڈیفالٹ | مطلب |
|---|---|---|---|
--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 فائل میں)۔ خالی
رکھنے سے بوٹ ناکام ہونے کے بجائے وہ خصوصیت بند ہو جاتی ہے۔
--sandbox
سیکشن کا عنوان “--sandbox”سرور بوٹ کے وقت ایک بار میزبان کا جائزہ لیتا ہے اور جب کوئی بیک اینڈ دستیاب ہو تو ایجنٹ
کی کمانڈ ایگزیکیوشن کو OS نیٹو سینڈ باکس میں لپیٹ دیتا ہے: macOS پر sandbox-exec
(Seatbelt)، اور Linux و WSL2 پر bwrap کے ساتھ socat۔ جہاں کوئی نہ ہو — Windows،
یا وہ Linux ہوسٹ جس میں یہ ٹولز نہ ہوں — وہاں رنز ماحول کی صفائی، کمانڈ پالیسی اور
ایکشن گارڈریلز پر واپس چلے جاتے ہیں، اور اسٹارٹ اپ لاگ بتا دیتا ہے کہ کون سی حالت
لاگو ہے۔
--sandbox off اُس صورت کے لیے فیلڈ بندش سوئچ ہے جو جائزے کو نظر نہیں آتی: ایسا ہوسٹ
جہاں خود سینڈ باکس پروفائل غلط برتاؤ کرتا ہو۔ اِسے دوبارہ بلڈ کی ضرورت نہیں اور سرور
پروسیس کی پوری عمر کے لیے ایک انتباہ لاگ کرتا ہے تاکہ یہ حالت کبھی خاموش نہ رہے۔
--tool-deferral
سیکشن کا عنوان “--tool-deferral”بلٹ اِن ہارنس کے رنز ٹول تعریفوں کا ایک چھوٹا ریذیڈنٹ مجموعہ اور باقی سب کا ایک نام
انڈیکس بھیجتے ہیں، جو پہلی بار استعمال پر اپنے اسکیمے لوڈ کرتے ہیں۔ یہ ٹول بلاک کو
تقریباً 78% کم کرتا ہے اور ہمیشہ نظر آنے والے مجموعے کو اُس حد کے اندر رکھتا ہے جہاں
ماڈلز قابلِ اعتماد طریقے سے ٹولز منتخب کرتے ہیں۔ طلب پر لوڈ ٹولز ہر وقت نام سے کال
کے قابل رہتے ہیں، اور search_tools اُنہیں ارادے سے ڈھونڈ لیتا ہے۔ دیکھیں
ٹول کانٹیکسٹ اور پرامپٹ کیشنگ۔
--tool-deferral off ہر منظور شدہ ٹول کو دوبارہ ریذیڈنٹ بنا دیتا ہے، اور بالکل وہی
درخواستیں دوبارہ بناتا ہے جو سرور طلب پر لوڈ سے پہلے بناتا تھا۔ یہ ایسے ماڈل کے لیے
بندش سوئچ ہے جو دو درجوں والی سطح کو بری طرح سنبھالتا ہو — دوبارہ بلڈ کے بجائے ایک
فلیگ۔ یہ صرف بلٹ اِن ہارنس پر اثر کرتا ہے؛ بیرونی کلائنٹس کو نظر آنے والی MCP
tools/list ہمیشہ مکمل کیٹلاگ ہوتی ہے۔
--credential-gate
سیکشن کا عنوان “--credential-gate”جس رن کا فراہم کنندہ کریڈنشل غائب ہو یا ختم ہو چکا ہو، وہ ناکام ہونے کے بجائے پارک کر دیا جاتا ہے: آپریٹر کو اُسے درست کرنے کا پرامپٹ ملتا ہے، اور اگر وہ درست کر دے تو رن دوبارہ شروع ہو جاتا ہے۔ ڈیفالٹ مہلت 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 دنوں کے برعکس جو ایپ کے اندر کی پیئرنگ مقرر
کرتی ہے۔
update
سیکشن کا عنوان “update”--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) |
مزید دیکھیں
سیکشن کا عنوان “مزید دیکھیں”- ہیڈلیس سرور چلائیں — یہ فلیگز جس سیٹ اپ ترکیب سے تعلق رکھتے ہیں
- فلیٹ ورکر چلائیں — الگ
cc_workerبائنری جو اِس سرور کے ساتھ رجسٹر ہوتی ہے - بیک اپ اور بحالی — اِس ڈائریکٹری کو کسی محفوظ جگہ کاپی کرنا
- بیک اپ، ایکسپورٹ اور امپورٹ — اسنیپ شاٹ کی ترتیب اور ہر بیک اپ آپریشن
- ریموٹ سرور سے جڑیں — کسی کلائنٹ کو اُس کی طرف لگانا
- ڈیپلائمنٹ اور کلائنٹس — سرور ہر چیز کا مالک کیوں ہے