Întrebări frecvente
Întrebări comune despre aplicațiile desktop, web și Android — siguranță, costuri, lease-uri și insigne REMOTE, permisiuni, mod offline, actualizări.
Siguranță și control
Nu rulează niciodată o comandă în tăcere. Prima dată într-o sesiune când codai vrea să ruleze o comandă shell, să scrie un fișier sau să facă ceva în browser, apare un card de aprobare și nu se întâmplă nimic până nu răspunzi — Allow once, Always allow (this session) sau Deny. Orice nu este un „da” clar este un refuz. Output-ul este limitat la 64 KB per stream și fiecare comandă are un timeout (30 s implicit, cel mult 10 minute), așa că o comandă scăpată de sub control este omorâtă împreună cu procesele pe care le-a pornit.
Dacă apeși Allow, comanda rulează cu adevărat cu permisiunile utilizatorului tău — citește cardul așa cum ai citi un script înainte să îl lipești într-un terminal.
Doar folderele aprobate din Settings → Executor (implicit: folderul tău home). Căile sunt canonicalizate, așa că trucurile cu .. și symlink-urile care ies în afară sunt respinse. Citirile sunt limitate la 512 KB, scrierile la 2 MB, listările la 500 de intrări.
Desktop (controlul computerului): Strict întreabă înainte de fiecare acțiune în aplicații sensibile și înainte de orice combinație de taste care poate închide sau distruge lucru; Assisted (recomandat) acționează liber în aplicații obișnuite, întreabă în cele sensibile și nu tastează niciodată secrete; Autopilot păstrează doar filtrul de credențiale — folosește-l cât privești.
Android: strict întreabă înainte de fiecare acțiune; assisted (implicit) înainte de orice trimite sau plătește și în interiorul aplicațiilor sensibile; autopilot doar înainte de trimitere sau plată. Aplicațiile de mesagerie au suplimentar ask / block / allow.
Desktop: Esc sau Stop anulează tura și eliberează lease-ul; închiderea ferestrei îl eliberează și ea. În timpul controlului computerului, Ctrl+Alt+Space (sau Esc de două ori) este butonul de oprire, iar propriile tale mișcări de mouse sau taste pun agentul pe pauză. Android: Stop în chat sau pe bulă; fiecare tură are și un buget de timp (4 minute implicit). De pe alt dispozitiv, un editor sau owner poate trimite cancel.
Cât rulează o sarcină poate vedea ce este pe ecran, inclusiv text tastat într-un câmp vizibil. Android maschează câmpurile de parolă față de serviciile de accesibilitate, dar alt text sensibil — un sold bancar, un cod 2FA — este vizibil. De aceea aplicațiile de banking, portofel, plăți, autentificator, manager de parole și Setările de sistem sunt sensibile: în modul assisted fiecare acțiune în ele cere aprobarea ta. Nu îi cere lui codai să facă lucruri în aplicații pe care nu le-ai da pe mâna unui prieten.
Cel mai probabil o sarcină a fost trimisă (dispatch) către acest desktop de pe telefon sau din hub — aplicația verifică la fiecare 30 de secunde și le rulează; fiecare pas este în transcriptul sesiunii. Dezactivezi cu Settings → Executor → Run tasks dispatched to this device. Dacă nu recunoști sesiunea deloc, revoci dispozitivele necunoscute din hub → Security → Devices și rotești cheia.
Sesiuni pe mai multe dispozitive
O sesiune poate fi văzută de mai multe dispozitive simultan, dar doar unul ar trebui să facă treaba. Acel dispozitiv deține lease-ul (30 de secunde, reînnoit la fiecare 10). Run here pe desktop îl revendică; aplicația îl dă înapoi la Stop sau la închidere. Dacă alt dispozitiv îl deține, vezi care și poți face Take over.
Pentru că dispozitivul care o execută nu este acesta — treaba se face pe telefonul tău, pe alt computer sau pe un host către care s-a făcut dispatch, și tu privești o oglindă live. Trece pe LOCAL când revendici lease-ul cu Run here.
Owner — tot, inclusiv Run here, redenumire, partajare, ștergere. Editor — privește, trimite, răspunde, anulează. Viewer — doar privește; controalele apar dezactivate, cu motivul. Rolurile se atribuie când o sesiune este partajată din hub (către un utilizator, o organizație sau un link cu expirare).
Ambele. Dispatch țintește unul dintre dispozitivele tale și îl trezește (push pe Android, poll la 30 de secunde pe desktop). De pe desktop, Continue on phone trimite conversația pe telefon; de pe telefon sau din hub, trimiți o sarcină către un desktop anume. Selectorul Run on al aplicației web este aceeași idee pentru unelte: browserul conversează, un desktop execută.
Da, pentru chat. Uneltele de fișiere și shell au nevoie de un host — un desktop autentificat cu același cont, cu Serve as a remote host activ. Până când unul este online vezi Chat only in the browser.
Costuri și date
Aplicațiile sunt gratuite și open source (Apache-2.0). Rularea modelului costă cât facturează planul tău codai — fiecare sesiune afișează un card de cost (desktop) sau foaia Cost · Receipt (Android), defalcat pe model. Bugetele din Settings limitează o sarcină blocată. Cu propria cheie de furnizor, furnizorul te facturează direct; pașii on-device de pe telefon nu costă nimic.
Mesajele tale, istoricul conversației de care are nevoie modelul, rezultatele uneltelor (output-ul comenzii sau conținutul fișierului cerut de codai) și o copie a fiecărui pas, ca celelalte dispozitive să afișeze același transcript. Cheia ta API merge doar la URL-ul de gateway configurat, ca header Authorization. Nu există niciun SDK de analytics sau telemetrie în vreo aplicație. Trace-urile, memoria și checkpoint-urile de fișiere rămân pe dispozitiv.
Desktop: secrets.json în folderul de date al aplicației (%APPDATA%\ro.codai.desktop pe Windows), citit doar de aplicație. Web: localStorage-ul acestui browser pentru app.codai.ro. Android: preferințe partajate criptate. Sign out o elimină și revocă dispozitivul pe server; poți revoca și orice dispozitiv din hub → Security → Devices.
Doar dacă optezi. Consimțământul pentru antrenare este dezactivat implicit; îl comuți în aplicație (Settings → About pe Android, ecranul legal pe desktop) sau cu PATCH /v1/account.
Platforme și offline
Desktop: Windows x64 azi (installer, MSI, zip portabil, actualizări automate semnate). .AppImage / .deb / .rpm Linux sunt construite din aceeași sursă când se produce un build Linux pentru o versiune; controlul computerului și scurtăturile globale sunt doar pe Windows. macOS este configurat, dar nepublicat. Web: orice browser modern. Android: 11 sau mai nou; modelul on-device vrea un flagship recent. Nu există versiune de iPhone — iOS nu permite aplicațiilor terțe să conducă alte aplicații.
Aplicațiile desktop și web au nevoie de gateway (sau de un model local prin Ollama / LM Studio pe desktop). Pe Android, cu modelul on-device descărcat și modul local-first, sarcinile simple — deschizi o aplicație, apeși prin câteva ecrane, setezi o alarmă — rulează fără internet; pașii mai grei așteaptă o conexiune.
Cât rulează o sarcină, da — citirea ecranului și mai ales rularea modelului on-device pe GPU consumă energie ca un joc. În repaus, codai nu face nimic în fundal decât dacă ai activat rezumatul zilnic sau sincronizarea sesiunilor. Baterie: Nerestricționată doar împiedică Android să omoare o sarcină la mijloc; nu îl face pe codai să ruleze mai mult.
Desktopul preia https://codai.ro/api/desktop/latest.json, descarcă un installer mai nou și îi verifică semnătura minisign față de cheia publică compilată în aplicație; un fișier care nu se verifică este refuzat. Aplicația web este mereu curentă. Actualizările Android vin de unde ai instalat-o (Play sau un APK nou semnat cu aceeași cheie). Detalii și verificări manuale: Verifică descărcările.
Da. Desktop și Android: setezi Gateway URL la prima rulare sau în Settings. Build-ul desktop permite https://*.codai.ro plus http://localhost / 127.0.0.1; alt domeniu are nevoie de lărgirea scope-ului http:default în src-tauri/capabilities/default.json și de propriul build. Aplicația web are nevoie ca gateway-ul tău să permită originea app.codai.ro.
Verifică descărcările
Ce este semnat și ce are checksum pe fiecare platformă — semnături minisign pe installerul Windows și AppImage-ul Linux, SHA256SUMS pe fiecare versiune — și ce nu este (Authenticode, notarizare, Android).
Resolve
Remedieri de bug-uri verificate prin execuție: îndrepți Resolve către un repo public GitHub și un issue, primești un patch dovedit prin teste și o atestare publică. Fără fix, fără plată.