Vzdálené ovládání a mobil
Control Center je aplikace pro počítač, ale práce, kterou sleduje, neskončí, když
odejdeš od stolu. Vzdálené ovládání spáruje telefon s cc_server přes
Remote, doprovodnou aplikaci na
remote.usectrl.dev, takže odtamtud sleduješ flotilu: čteš zprávy a tickety,
odpovíš agentovi, vytřídíš kanál novinek, a zvuk, přepis, zdrojový kód ani
přihlašovací údaje, které žijí na serveru, ho nikdy neopustí.
Ber ho jako společníka stolu, který skoro jen čte. Plného klienta na počítači nahradit nemá.
Přenos
Sekce “Přenos”Telefon dosáhne na cc_server přes WebSocket: buď přímým spojením (loopback,
LAN, tailnet nebo wss://), nebo místností za pozvánkou na signalizačním
zprostředkovateli, který přepojuje zapečetěné rámce. Datový kanál peer-to-peer
tu není.
Co telefon umí
Sekce “Co telefon umí”Spárovaný telefon dosáhne na malý, záměrný výřez plochy serveru:
- Čtení ticketů, agentů, prostorů a jejich zpráv a tvého kanálu novinek
- Odpověď: pošleš zprávu v prostoru, aktualizuješ nebo přidělíš ticket, označíš článek jako přečtený nebo uložený
- Spuštění playbooku: založíš instanci uložené šablony plánu s jejími parametry. Jen navrhne plán; nic se nespustí a nic se neutratí, dokud ho operátor neschválí v Plan Studio na plném klientovi
- Přepnutí pracovního prostoru z vlastního výběru na telefonu
Víc toho skoro není. Telefon je principál s nižšími oprávněními než plný klient. Nesmí spouštět procesy, utrácet rozpočet LLM, poslat push na GitHub ani zakládat pracovní prostory. Jak se to vynucuje, a ne jen zamýšlí, popisuje model přístupu.
Jak spojení vzniká
Sekce “Jak spojení vzniká”Spojení jede po zprostředkovaném relé: server vstoupí do jedné místnosti
za pozvánkou na zprostředkovateli wss:// jako její vlastník a každý spárovaný
klient — desktop, web, telefon — vstoupí do stejné místnosti s časově omezeným
vstupním tokenem. Sejdou se tři díly:
| Díl | Úloha |
|---|---|
| Remote (telefonní aplikace) | Doprovodná webová aplikace, ve výchozím stavu hostovaná na remote.usectrl.dev, nebo u tebe. Načte se v prohlížeči a záznam párování drží v IndexedDB. |
| Zprostředkovatel relé | Bezstavové relé wss:// (cc_signaling_server), které hostuje místnosti pro N stran. Vozí jen neprůhledné rámce: každý payload je zapečetěný od konce ke konci mezi telefonem a serverem, takže zprostředkovatel nikdy neuvidí data aplikace ani tajemství párování a nikdy nevykládá, co přeposílá. |
cc_server |
Vlastník místnosti. Na volání telefonu odpovídá stejným dispečerem, kterého používá každý jiný klient. |
Nabídka párování nese deskriptor spojení, který vypisuje každou cestu
k serveru (LAN, tailnet, veřejné wss://, relé) a otisk identity. Resolver
telefonu vybere nejlepší dosažitelnou cestu a při prvním spojení připne otisk
(TOFU); relé zaručí spojení i tam, kde přímá cesta není, a provoz nikdy
nepřečte.
Co je párovací payload
Sekce “Co je párovací payload”Párování se vydává z aplikace a doručí se jako přímý odkaz; postup je na stránce Spárujte zařízení. Tady záleží na tom, z čeho se skládá.
https://<pwa-host>/#<payload>Payload jede ve fragmentu URL, v části za #, kterou prohlížeč nikdy
nepošle serveru, takže HTTPS hostitel PWA ho neuvidí. Veze všechno, co telefon
potřebuje, aby na server dosáhl a prokázal, kdo je: deskriptor spojení (každá
cesta plus otisk identity), čerstvě vydané id zařízení, 32bajtový předem
sdílený klíč a razítko platnosti. Telefon ho dekóduje, záznam párování uloží
místně a fragment odebere, takže tajemství z URL zmizí.
Jsou dva tvary payloadu a nejdou zaměnit. QR telefonu vydaný z panelu
párování v aplikaci je v2 PairingPayload výše a míří na hostitele PWA
Remote. cc_server pair --client-url vydá jiný, starší odkaz v1 ({s, i, k}
— URL serveru, id zařízení, klíč) jen pro webového klienta.
Liší se i životností, a to se snadno splete:
| Vydal | Platnost pověření |
|---|---|
Panel párování v aplikaci (pairing.mint) |
vždy 30 dní |
cc_server pair na příkazovém řádku |
Žádná — pověření nevyprší |
Model přístupu
Sekce “Model přístupu”Spárované zařízení je ověřené, ale nedůvěryhodné. Několik nezávislých bran brání tomu, aby se schválené (nebo uniklé) párování stalo plným ovládáním serveru.
1. Hranicí je členství, ne párování
Sekce “1. Hranicí je členství, ne párování”Platný párovací klíč dokazuje, které zařízení jsi. Co smíš číst nebo měnit, rozhoduje role v pracovním prostoru, znovu vyhodnocená při každém jednotlivém volání, a u všeho, co odhaluje obsah repozitáře, i oprávnění k tomu repozitáři. Zařízení s úplně platným klíčem, které patří uživateli, jenž není členem uvedeného pracovního prostoru, se odmítne textem “Not a member of this workspace”.
Minimální role se odvodí z druhu operace, pokud si operace nestanoví vlastní:
čtení potřebuje guest, změna member, destruktivní operace admin.
2. Telefon je nižší úroveň relace
Sekce “2. Telefon je nižší úroveň relace”Nad kontrolou role nese relace telefonu nižší schopnost než relace desktopu nebo webu. Operace deklarované jen pro plného klienta se telefonu odmítnou ještě předtím, než se spustí handler, ať je uživatel za ním jakkoli privilegovaný: vydávání, výpis, přejmenování a odvolání párování zařízení; čtení a nastavení konektivity tunelu; záloha serveru a export či import pracovního prostoru; detekce a ukončení procesů; sondy adaptérů; nastavení serveru; správa SSO; řízení flotily; převzetí běžícího agenta nebo vrácení řízení.
3. Seznam povolených nástrojů s výchozím zákazem
Sekce “3. Seznam povolených nástrojů s výchozím zákazem”Konkrétně pro plochu nástrojů MCP (tools/call) platí seznam povolených
s výchozím zákazem: určuje, které nástroje telefon smí zavolat. Co na seznamu
není, se odmítne ještě před během. Seznam je převážně čtení a pozorování plus
hrstka zápisů jen místních — zpráva, aktualizace ticketu, příznak článku —
které neutrácí rozpočet LLM, nespouští proces a nesahají na vnější systém.
Odmítne se třeba: zeptat se agenta, spustit AI kontrolu, ukončit agenta, publikovat revizi na GitHub, najmout nebo propustit agenty, založit pracovní prostor.
4. Rozsah pracovního prostoru u každého volání
Sekce “4. Rozsah pracovního prostoru u každého volání”Server nedrží žádný „aktuální pracovní prostor“. Je schválně bezstavový:
každé volání vázané na pracovní prostor musí ve svých argumentech uvést cílové
workspace_id a dispečer volání rovnou odmítne, když chybí nebo jmenuje
pracovní prostor, který server nemá zaregistrovaný — dřív, než cokoli otevře
databázi. Telefon proto nikdy nezdědí rozsah jiného klienta ani do něj
nesklouzne a pojmenovat cizí pracovní prostor taky nepomůže, protože kontrola
členství z brány 1 pořád platí. Je to stejný invariant
izolace pracovních prostorů,
který vynucuje zbytek produktu.
5. Rámce zapečetěné od konce ke konci předem sdíleným klíčem
Sekce “5. Rámce zapečetěné od konce ke konci předem sdíleným klíčem”Každý rámec mezi telefonem a serverem je zapečetěný párovacím klíčem; vstupní token klienta jen pustí do místnosti a nic neodšifruje. Zprostředkovatel přeposílá šifrový text a klíč nikdy neuvidí. Odvolané zařízení najde své pověření už pryč, takže se při opětovném připojení uzavře.
Pověření vydané aplikací je časově omezené na 30 dní; po nich ho brána připojení odmítne a telefon se musí spárovat znovu. Odvolání je živé: server sleduje tabulku zařízení a do několika sekund shodí otevřené relace odvolaného zařízení, místo aby čekal na další připojení.
6. Omezování četnosti podle principála
Sekce “6. Omezování četnosti podle principála”Omezovač s posuvným oknem stropuje vzdálený provoz nástrojů na 120 volání za minutu a na slovesa, která mění stav, má přísnější dílčí strop 30 za minutu. Rozpočet patří principálovi, ne relaci: tři tvá zařízení čerpají z jednoho přídělu, takže unesený klient nezíská víc prostoru tím, že otevře další relace, a jeden hlučný člen nemůže ostatním kapacitu sebrat.
7. Zprostředkovatel, který se nic nedozví
Sekce “7. Zprostředkovatel, který se nic nedozví”Zprostředkovatel relé je schválně hloupý: hostuje místnosti, přeposílá zapečetěné rámce a nedrží účty, data aplikace ani klíče. Místnosti jsou za pozvánkou a dočasné. Data aplikace, zvuk, přepis, zdrojový kód i přihlašovací údaje zůstávají na serveru.
Živé aktualizace
Sekce “Živé aktualizace”Po spárování dostává telefon živé aktualizace jako oznamovací rámce — nové zprávy agentů, tickety přidělené tobě, změny stavu — ve stejném duchu jako oznámení na desktopu. Server ty rámce rozešle každé připojené relaci a filtr pracovního prostoru se použije na klientovi, takže vidíš to, co patří k pracovnímu prostoru, na který se díváš.
Kde to najdeš
Sekce “Kde to najdeš”| Plocha | Co ukazuje |
|---|---|
Nastavení → Vy → Vaše zařízení (/workspaces/:workspaceId/settings/you/devices) |
Spárovaní klienti s živým stavem, plus Spárovat nového klienta (webový prohlížeč, desktopová aplikace nebo telefon) a odvolat |
Stejný panel vydává párování i pro druhý prohlížeč nebo desktopovou aplikaci, ne jen pro telefony — postup je stejný, liší se jen přímý odkaz.
Viz také
Sekce “Viz také”- Pracovní prostory a izolace: rozsah po voláních, o který se to opírá
- Multiplayer — identita, členství a přítomnost: role, členství a oprávnění k repozitářům
- Nasazení a klienti: kam vzdálené ovládání patří mezi úrovněmi klientů
- Architektura: kam vzdálené ovládání patří ve vrstvách
- Spárujte zařízení