nessie

Udaljeni executori

Dajte agentu stvarno računalo za rad, na Linuxu, macOS-u ili Windowsu.

Što je udaljeni executor

Agent u Nessieju nema računalo. Može čitati ono što je u Nessieju, razgovarati s ljudima i pozivati povezane alate preko mreže, ali ne može otvoriti datoteku na prijenosnom računalu, pokrenuti naredbu ni pogledati stranicu koja postoji samo iza nečijeg prijavljivanja. Udaljeni executor je način da agentu dodijelite računalo na kojem će raditi.

Executor je mali daemon koji instalirate na računalo kojim upravljate. Prema van se povezuje s vašom instancom Nessieja, dokazuje koji je to stroj ključem koji nikad ne napušta računalo i zatim nudi fiksni, imenovani skup operacija, ništa više. Poslovi dolaze kao pojedinačne potpisane naredbe, a rezultati se vraćaju kao ograničene, strukturirane potvrde. Stroj nikad ne prihvaća dolazne veze od Nessieja.

Vrijedi biti precizan u tome što executor nije, jer većina alata za daljinski pristup pripada jednoj od tih kategorija, a executor namjerno nije nijedna od njih. Nema SSH-a, nema udaljene ljuske (shell), nema priključivanja na terminalni multiplekser koji ste već pokrenuli, nema standardnog ulaza na strani oblaka i nema općeg mrežnog proxyja lokalne mreže. Nije ni MCP poslužitelj, ni spremnik, ni izvođenje u oblaku. Nessie to već ima i to je nešto drugo. Executor je krajnja točka sa sposobnostima i zatvorenim popisom operacija, a taj popis je cijela površina.

Kome pripada executor

Svaki executor stvara se s točno jednim opsegom, a opseg se kasnije ne može promijeniti. On određuje tko ga smije pokrenuti i tko njime upravlja.

OpsegTko ga smije pokrenutiTko upravlja pristupom
PrivatniOsoba koja zahtijeva i točno pozvani agent moraju oboje biti imenovani dodijeljenici. Sam jedan od njih nije dovoljan.Dodijeljeni ljudski administrator. Agenti mogu koristiti privatni executor, ali nikad ne mogu njime administrirati.
ProjektniOsoba koja ima pravo na upravo taj projekt, i to samo iz izvođenja u tom projektu.Upravitelj organizacije, ili vlasnik ili administrator projekta.
OrganizacijskiOsoba s ovlaštenjem u organizaciji.Upravitelj organizacije.

Privatni executor uvijek mora imati barem jednog aktivnog ljudskog administratora. Izravno uklanjanje posljednjeg administratora ne uspijeva. Ako bi transakcija pri odjavi osobe ostavila executor bez ijednog administratora, executor prestaje primati novi rad, dovršava ono što već ima i sam sebe opozove. Vlasnik organizacije ima hitni put koji služi samo za opoziv executora kojim inače ne upravlja, bez uvida u njegov privatni popis članova, sesije ili sadržaj. Privatni pristup nikad se tiho ne prenosi nekome drugome.

Što agent zaista može s njim učiniti

Vokabular operacija zapisan je fiksno u kodu, a ne konfiguriran za svaku instalaciju. Dijeli se na dva dijela, i ta podjela određuje što trebate instalirati. Neke operacije daemon poslužuje iz vlastitog privremenog direktorija bez ikakvog virtualnog stroja, a ostale trebaju gostujući virtualni stroj (VM) po sesiji na hostu.

OperacijaŠto radiGostujući VM
file.list, file.readPopisuje i čita datoteke unutar jednog korijenskog direktorija radnog prostora koji se odabere pri uparivanju.Ne
file.writePiše u copy-on-write nacrt tog radnog prostora. Nikad ne otvara stvarni korijen za pisanje.Ne
workspace.reviewPrijavljuje što je nacrt promijenio: do 100 relativnih putanja s vrstom i veličinom u bajtovima te digest manifesta. Ne sadrži sadržaj datoteka.Ne
sandbox.stopZaustavlja sesiju koju izvođenje posjeduje.Ne
command.runPokreće jednu naredbu kao vektor argumenata bez ljuske, u gostu bez izlaznog prometa. Na ovom putu nigdje nema niza naredbe za ljusku.Da
browser.open, browser.observe, browser.actUpravlja preglednikom unutar gosta prema popisu izvora (origin) koji je konfiguriran na računalu. Promatranje vraća ograničeno stablo pristupačnosti i opcionalnu smanjenu sliku. Radnje su navigacija, klik, unos, pritisak tipke i pomicanje, a uvijek se odnose na čvor koji je agent upravo promatrao, nikad na selektor, koordinatu ili skriptu.Da
coding.launch, coding.observePokreće upravljanu Codex sesiju u gostu i čita natrag tipizirano stanje životnog ciklusa. Nema priključivanja na terminal ni kanala za slanje upita: agent saznaje je li sesija pokrenuta, ali ne i što je na njezinu zaslonu.Da
workspace.promotePrimjenjuje pregledani nacrt na stvarni radni prostor. Ovo je jedina operacija koja piše na host, i namjerno se uopće ne nudi modelima.Ne

Operacije koje ne trebaju gost čine paket radnog prostora. Host koji ne može pokrenuti gost nije neispravan executor: normalno se upari, prijavljuje svoj sandbox backend kao none i oglašava samo paket radnog prostora, ništa više. U to stanje upadaju Windows izdanje bez Hyper-V-a ili Linux računalo čiji korisnik ne može koristiti /dev/kvm. Sučelje to jasno kaže umjesto da padne nejasno.

Agent nikad sam od sebe ne pokreće rad s preglednikom. Obični put za vezanje jedne operacije izričito odbija browser.open i browser.observe. Izvođenje preglednika pokreće osoba iz kanala, kao jedan paket od četiri operacije na novom izvođenju, i poslije mu se ne može dodati nijedno vezanje. Upravljane sesije programiranja funkcioniraju na isti način.

U kodu postoje još dvije skupine koje su namjerno nedostupne. Operacije za upravljanje Chrome karticom u koju ste već prijavljeni imaju potpunu lokalnu implementaciju i proširenje s nativnom razmjenom poruka (native messaging), ali upravljačka ravnina ih ne oglašava dok poslužitelj ne može dokazati da je izvorni razgovor bio privatan i zabilježiti tko je što otkrio. Temelj je namjerno neaktivan, a proširenje se ne isporučuje ni u jednom instalacijskom paketu. Nekoliko operacija programiranja (priključivanje, upit, prekid i zatvaranje) navedeno je u shemi, ali nema njihove implementacije, pa se ne mogu odobriti.

Kako funkcionira

Veza je uvijek odlazna

Daemon uspostavlja odlazne HTTPS i WSS veze prema vašem API-ju Nessieja i ni prema čemu drugom. Nessie nikad ne uspostavlja vezu s prijenosnim računalom, nikad ne čuva njegovu adresu i nikad neki katalog krajnjih točaka ne tretira kao prijenos do stroja. Zato executor radi iz kućne mreže, iza NAT-a, na korporativnom VPN-u, bez preusmjeravanja porta i bez pravila za dolazni vatrozid. Zaustavljanje daemona znači potpuno i trenutačno odspajanje.

Adresa API-ja Nessieja mora biti HTTPS. Jedina iznimka je loopback adresa za ljude koji Nessie pokreću na vlastitom računalu, a ona se postavlja vlastitom varijablom okruženja. Nijedna uobičajena zastavica ne pretvara produkcijsku adresu u obični HTTP.

Uparivanje dokazuje stroj, a osoba ga potvrđuje

Uparivanje je dvostrani dokaz. Ovlaštena osoba stvara executor u Nessieju s njegovim opsegom, a Nessie izdaje upis: slučajni izazov od 256 bitova, od kojeg pohranjuje samo SHA-256 provjeru. Izazov vrijedi deset minuta i može se iskoristiti samo jednom.

Na računalu daemon generira par ključeva Ed25519 i pohranjuje ga u pohranu koju štiti operacijski sustav i kojoj pristup ima samo vlasnik. Zatim zapisuje točno potpisani zahtjev na disk prije bilo kakvog mrežnog poziva, tako da se izgubljeni odgovor može ponoviti s istim pripremljenim ključem, a ne tiho upariti dvaput. Potom šalje id upisa, izazov, svoj javni ključ i potpis dokaza. Nessie pohranjuje javni ključ i njegov otisak. Privatni ključ nikad ne pohranjuje.

Nessie zatim taj otisak prikazuje osobi, koja ga potvrđuje. Dok se to ne potvrdi i dok se ne dokaže posjedovanje ključa, executor ostaje van mreže. Uparivanje se nikad ne može dovršiti iz teksta u chatu ili iz zapisa terminala: potreban je namjerni ljudski postupak u web ili desktop sučelju.

Stroj koji izgubi ključ ne može vratiti svoj zapis executora. Taj se executor opozove i upari ponovno kao novi. Zamjena ključa je, nasuprot tome, jedna transakcija potpisana i starim i novim ključem.

Deskriptor je potpisana tvrdnja stroja o sebi

Upareni daemon objavljuje deskriptor: potpisanu izjavu s revizijom koja uvijek raste, a koja sadrži samo strukturalne činjenice. To su sheme operacija koje podržava, njegovi resursni i mrežni limiti, platforma i digest njegovih lokalnih pravila. Deskriptor ne sadrži staze na hostu i ne stvara nikakvu ovlast u oblaku.

Nova revizija se nikad ne aktivira čim stigne. Sprema se kao čekajuća, a ovlaštena osoba je mora vidjeti i potvrditi prije nego što utječe na to što je dostupno. Upravo to sprječava da osvježavanje mogućnosti tiho dodijeli novu moć: novooglašena operacija počinje odbijena.

Važno je znati što potpis dokazuje. Deskriptor potpisan ključem uparenog executora dokazuje samo da je taj ključ dao tvrdnju. Ne dokazuje da je host neokrnjen, a sučelje to mora reći.

Slanje: kandidat, vezanje, naredba, potvrda

Agent nikad ne imenuje executor. Prije nego što izvođenje može koristiti executor, Nessie logičku operaciju pretvara u neprozirnog, kratkotrajnog kandidata za dostupnost. Odgovor ne sadrži id executora. Baza uz digest ručke pohranjuje samo tko je i za što je kandidat razriješen. Modeli i klijenti dobivaju ručku, a ne stroj koji bi mogli birati.

Dostupnost je jedan razrješivač koji API, worker, sučelje i asistent koriste jednako:

available(operation, human, agent, immutableRunContext) =
  human may discover executor
  ∩ exact executor-agent-operation grant allows operation
  ∩ stable logical tool grant allows operation
  ∩ scope matches immutable run context
  ∩ executor is online and descriptor is approved
  ∩ local policy permits operation

Potrošnja kandidata stvara vezanje pod zaključavanjem u bazi. Ono ponovno provjerava sve te uvjete i pomiče monotoni brojač (fence). Slanje ih provjerava još jednom. Posljedica je da se povučeno odobrenje, sužena pravila ili opozvani executor između dva koraka zaustavljaju rad, umjesto da se primijete tek poslije. Ponovni pokušaj nikad ne može završiti na drugom stroju od onoga na koji je izvođenje bilo vezano.

Sama naredba putuje redovitim redom zadataka Nessieja i životnim ciklusom poziva alata, a ne posebnim vlastitim. Daemon traži posao preko svog autentificiranog kontrolnog kanala. Nikad mu se ništa ne gura. Naredba prolazi kroz četiri potvrde i nijednu drugu:

leased → accepted → started → result-acknowledged

Svaki okvir veže id naredbe, podrijetlo izvođenja, fence vezanja, reviziju mogućnosti, istek, ključ idempotentnosti te digeste argumenata i sadržaja. Daemon odbija neslaganje, zastarjelo pravilo, ponovnu reprodukciju (replay) ili drugi rezultat za naredbu koju je već dovršio. Argumenti i završni rezultati šifrirani su AES-256-GCM u mirovanju. Baza čuva ograničeni šifrirani tekst i kanonske digeste, a ne sadržaj.

Ako se izgubi potvrda primitka, Nessie ne pretpostavlja uspjeh. Naredba se bilježi kao neizvjestan ishod, a izvođenje slijedi uobičajeni put oporavka. Daemon, koji lokalno bilježi svaku isporučenu naredbu prije nego što počne raditi, neće ponoviti nuspojavu. Kasna potvrda i dalje može pošteno razriješiti nejasnoću.

Granica povjerenja

SudionikSmijeNe smije
OsobaUpariti executor, njime upravljati kad ima ovlaštenje te potvrđivati pristup i promjene pravila.Proširiti pravilo koje sam stroj odbija ili djelovati bez trenutačnog ovlaštenja.
Agent, uključujući osobnog asistentaPozvati operaciju koja mu je već dostupna. Pripremiti predloženu promjenu pristupa za osobu koja je pitala.Upravljati pristupom, odobriti sam sebi, odabrati stroj, mijenjati lokalna pravila ili primijeniti promjenu koju je sam pripremio.
Upravljačka ravnina NessiejaRazrješavati dostupnost, vezati izvođenje, dodjeljivati naredbe executoru (lease) i čuvati pročišćenu reviziju.Spajati se na stroj, proširivati lokalna pravila, dohvaćati vjerodajnice hosta ili tretirati tekst terminala kao ovlaštenje ili ishod.
Daemon executoraProvoditi lokalna pravila, uparivati se prema van, pokretati gost i gateway te potvrđivati naredbe.Proširiti vlastiti opseg, prihvatiti zastarjeli ili ponovljeni rad, izložiti radni prostor ili vjerodajnice hosta izravno ili poslati sirove lokalne podatke u trag revizije.
Gostujući VM i alati u njemuRaditi u copy-on-write sandboxu, a mrežu dosezati samo kroz gateway.Dosezati datoteke hosta, vjerodajnice hosta, izravnu mrežu ni DNS ni primijeniti promjenu na hostu.

Instaliranje i uparivanje executora

Instalirajte Mac CLI putem Homebrewa, Mac aplikacije putem Homebrew casks, Linux CLI putem APT-a ili DNF-a, a Windows executor putem WinGeta. Svaki upareni tim ima zasebna dopuštenja pohranjena na računalu. Nessie kontrolira pristup unutar tima, ali ne može mijenjati lokalne resurse.

Vodič za instalaciju i uparivanje sadrži točne naredbe, dvostrani postupak s osmeroznamenkastim kodom, lokalne postavke, pokretanje, ažuriranja i uklanjanje.

Koliko je svaka platforma zaista provjerena

Stanje triju gostujućih sandboxova razlikuje se, i ta razlika je bitna. macOS je backend s radnim, provjerenim putem gosta. Firecracker backend na Linuxu i Hyper-V backend na Windowsu implementirani su i pokriveni testovima na strani hosta: slijed pokretanja, diskovne slike, kontrolni i izlazni transportni kanali te protokol nacrta. Nijedan gost još nije pokrenut na pravom hardveru u kontinuiranoj integraciji (CI) ovog projekta, jer to zahtijeva stroj s KVM-om ili Hyper-V-om, a poslovi koji bi to dokazali nikad ga nisu imali. Paket radnog prostora, kojem gost nije potreban, u potpunosti je ispitan na Windowsu sa stvarnom kontrolnom petljom. Operacije s gostom na Linuxu i Windowsu smatrajte nedokazanima dok ih sami ne dokažete na vlastitom hardveru. Zaslon uparivanja u Nessieju kaže isto vlastitim riječima.

Sigurnost i zadržavanje

Jedan korijenski direktorij radnog prostora, a njegova putanja ostaje na stroju

Uparivanje odabire točno jedan kanonski korijen radnog prostora: jedan direktorij, ne skup mapa i nikad njihov najbliži zajednički nadređeni direktorij. Nessie dobiva samo osnovni naziv korijena, pa osoba u sučelju može prepoznati granicu. Puna putanja ostaje u stanju na stroju koje može čitati samo vlasnik i nikad se ne šalje. Korijen se može promijeniti, ali tek nakon što se uklone svi lokalni nacrti i sandboxovi. Promjena stvara novu reviziju deskriptora koja prolazi isti ljudski pregled kao i svaka druga promjena pravila. Nikad se tiho ne može proširiti na nadređeni direktorij.

Operacije s datotekama prihvaćaju samo relativne putanje. Odbijaju prolaz kroz direktorije (traversal) i svaku komponentu koja je simbolička veza. Ponovno provjeravaju da je konfigurirani korijen i dalje običan direktorij te vraćaju ograničene strukturirane rezultate bez putanje hosta.

Pisanje ide na kopiju, a samo osoba je primjenjuje

Agent nikad ne piše u vaše datoteke. file.write stvara ograničeno copy-on-write stablo pod vlastitim direktorijem stanja daemona, vezano uz izvođenje. Kasnija čitanja i popisi za to izvođenje vide nacrt. Rad u gostu, uključujući sesije programiranja, koristi isti copy-on-write privremeni prostor.

Primjena nacrta na stvarni radni prostor jedna je operacija, workspace.promote, i jedini je upis na hostu u sustavu. Za modele uopće nema sheme: nijedan agent, nijedan asistent i nijedna putanja koju pošalje pozivatelj ne mogu nacrt pretvoriti u upis na hostu. Umjesto toga, osoba otvara Vaši pregledani nacrti, pritisne Pregledaj primjenu i potvrdi trenutačnom lozinkom. Poslužitelj zatim ponovno provjerava potvrđeni digest pregleda, digest manifesta, izvođenje, korisnika i agenta, reviziju ovlaštenja, odobrenje operacije i aktivna lokalna pravila, a tek onda stvara naredbu. Na stroju daemon sam ponovno gradi manifest i odbija digest koji se promijenio. Uređivanje nakon pregleda zato ne može proći na temelju odobrenja tog pregleda.

Sama primjena temelji se na deskriptorima i zapisuje se u dnevnik. Izvorni pomoćni alat (native helper) dobiva korijen radnog prostora i nacrt kao već otvorene deskriptore direktorija, nikad kao putanje. Svaku komponentu provjerava operacijama bez praćenja simboličkih veza, odbija simboličke i tvrde veze, posebne datoteke i prelaske granice montiranog sustava datoteka, te vodi dnevnik tipa „sve ili oporavak”. Tako se pri rušenju ili dovrši provjereni manifest ili vrati izvorno stanje prije bilo čega drugog.

Gost nema mrežu, a izlazni promet je prisilno usmjeren

Kad operaciji zatreba gost, to je mikro-VM za Linux po sesiji, bez korisničkog direktorija hosta, bez Docker socketa, bez SSH agenta, bez naslijeđenog okruženja i bez montiranja hosta osim dijeljenja radnog prostora. Izvršni runtime montiran je samo za čitanje, a montiranje radnog prostora za pisanje zabranjuje izvršavanje. Sve što se pokreće dolazi tako iz provjerenog runtime paketa, a ne iz nečega što je agent napisao. Gost se prije otvaranja ijednog socketa spušta na neprivilegirani identitet, a dijeljenje u vlasništvu roota ruši pokretanje umjesto da ostavi pokrenut posao s povlasticama.

Najvažnije je da gost nema mrežno sučelje. Na Linuxu slijed pokretanja namjerno nikad ne konfigurira mrežu i ne stvara se TAP uređaj. Na Windowsu se virtualni mrežni adapter koji Hyper-V inače dodaje uklanja pri postavljanju. Jedini izlaz gosta s računala je loopback proxy unutar njega, tuneliran preko virtualnog socketa do mosta na hostu, koji bajtove predaje daemonovu vlastitom gatewayu. Taj gateway je lokalni socket slušatelj u vlasništvu vlasnika, bez TCP slušatelja i bez općeg načina prosljeđivanja. Upravo se tu provode pravila za HTTP, CONNECT, WebSocket, preusmjeravanje, izvore (origin), preuzimanja i slanja. Koristi se postojeći mehanizam pinned-fetch iz Nessieja, a ne druga implementacija istih pravila. Nema NAT mosta ni izravnog DNS razrješivača: alternativni DNS, sirovi TCP, QUIC i zaobilaženje proxyja su sve zabranjeni.

Popis izvora (origin) koje gateway provodi konfigurira vlasnik računala na samom računalu i namjerno se nikad ne šalje. Sučelje tu odsutnost jasno navodi umjesto da se pretvara kako je Nessie uređivač pravila za izvore. Ako želite znati što executor za preglednik smije dosegnuti, pitajte osobu kojoj računalo pripada.

Vjerodajnice

Nijedna vjerodajnica hosta nikad se ne montira u gost. Ni Keychain, ni ~/.codex ni ~/.claude, ni globalni CLI token, ni varijabla okruženja s API ključem. Jedina podržana prijava za upravljanu sesiju programiranja je datoteka za autentifikaciju u vlasništvu vlasnika. Njezin sadržaj čita isključivo graditelj initrd-a pod kontrolom vlasnika, nikad Nessie, nikad deskriptor, nikad dnevnik ni argument naredbe. Jednom se premješta u privatni početni direktorij unutar gosta, koji se uništava zajedno s VM-om. Taj gost može doseći točno jedan izvor.

Executor preglednika je još strožiji. Svaka sesija dobiva novi privatni profil preglednika i odbija profil koji je pripremio radni prostor, pa počinje bez kolačića, bez proširenja i bez ikakvog zatečenog prijavljenog stanja.

Sirovi lokalni podaci mogu doći do pružatelja modela samo unutar eksplicitnog, ograničenog izvođenja. Nessie trajno sprema samo pročišćene manifeste, digeste argumenata i pravila, digeste rezultata i strukturirani status. Sadržaj datoteka, izlaz terminala, DOM preglednika, vjerodajnice i čimbenici provjere identiteta zabranjeni su u zapisima baze, reviziji, dnevnicima, događajima u stvarnom vremenu i prijavama grešaka.

Što operator odobrava i kako to povlači

Dopuštenje za korištenje executora nije jedan prekidač. Agent može pozvati operaciju samo ako ima odobrenje za taj točno executor i tu točno operaciju, i ako to dopušta uobičajeno logičko pravilo alata, i ako se opseg izvođenja podudara, i ako lokalna pravila stroja to dopuštaju. Odobravanje jedne operacije jednom executoru zato ništa ne dopušta na drugom, a osvježavanje mogućnosti ne može ništa proširiti jer nove operacije stižu odbijene.

Pristup agenata i dijeljenje odmah stupaju na snagu na samoj stranici, bez nastavka odobrenja, traženja lozinke ili novog postupka potvrde identiteta. Na kartici executora Agenti upravitelj izravno uključuje ili isključuje pristup stroju za pojedinog agenta. Na kartici Dijeljenje daje osobi pravo „Može koristiti” ili „Administrator”, ili proširuje korištenje na projekt ili na sve u trenutnom timu, na isti način. U vlastitom razgovoru s asistentom, samo tamo, nikad u dijeljenom kanalu, zakazanom poslu ili tuđem izvođenju, asistent umjesto toga može pripremiti promjenu pristupa agenta ili dodjele. Tada u tom razgovoru objavljuje karticu za potvrdu. Ništa se ne mijenja dok ne pritisnete „Dopusti pristup” na njoj, a tekst u chatu nikad nije potvrda.

Tri promjene i dalje traže da trenutačnu lozinku ponovno unesete u trenutku potvrde: aktiviranje revizije deskriptora; asistentom pripremljena dodjela koja stroj daje osobi, a ne agentu; i trajno pravilo koje kolegama dopušta pokretanje naredbi na računalu u ime vlasnika, odnosno pravilo za rad na zadacima bez nadzora. Isključivanje ili brisanje stroja namjerno ne traži ni jedno ni drugo, jer prekidač za hitno zaustavljanje (kill switch) nikad ne smije biti teži za pristup od onoga što zaustavlja. Primjena pregledanog nacrta uvijek traži lozinku. Revizijski zapis bilježi osobu koja je djelovala i sudjelovanje asistenta zasebno.

Executor prolazi kroz malen, izričit skup stanja:

pending_pairing → online ↔ offline
        │             ↓
        └──────────→ draining → revoked
                         ↓
                       error

Izbornik Računalo u zaglavlju mjesto je na kojem upravitelj priprema svaku promjenu životnog ciklusa: pauziranje, nastavak nakon pauze, odspajanje ili brisanje. Pauziranje ostavlja executor na mreži, ali ga zaustavlja da prima naredbe. Odspajanje poništava njegove klijentske certifikate i sve otvorene ručke kandidata te se ne može poništiti: odspojeni executor ponovno se upari kao novi. Brisanje čini isto i uz to uklanja executor s popisa. Za razliku od odspajanja, nudi se bez obzira na stanje executora, uključujući čekanje uparivanja i već odspojene, jer je to jedini način da netko napusti popis. Pražnjenje, odnosno dovršavanje rada koji već ima prije nego što prestane primati novi, pravo je treće stanje u protokolu. Sučelje ga može prikazati, ali ga ovdje ništa ne pokreće osim izravnog poziva API-ju. Svaka potvrđena promjena pristupa, pregled deskriptora i promjena životnog ciklusa, uključujući pražnjenje, također povećava epohu veze daemona. Njegov sljedeći kontrolni upit, najkasnije nakon jedne sekunde, ne uspijeva i zaustavlja svaki aktivni gost prije nego što se može ponovno povezati. Opoziv je zahtjev koji stroj ne smije ignorirati.

Rad s executorom

Provjera je li ispravan

Nessie sam provjerava živost (liveness). Daemon potpisuje heartbeat, a executor čija je posljednja autentificirana aktivnost starija od šezdeset sekundi trajno se označava offline prije nego što se može prikazati, odabrati ili mu se poslati rad. Executor koji se prikazuje kao na mreži dokazao je sebe u posljednjoj minuti.

Na računalu ne postoji krajnja točka za provjeru zdravlja. Daemon namjerno ne sluša ni na jednom portu namijenjenom operatoru. Na macOS-u i Linuxu CLI pitajte izravno:

nessie-executor status                # every paired executor, plus linger state
nessie-executor status <executorId>
systemctl --user status nessie-executor@<executorId>

Na macOS-u status prikazuje launchd agenta svakog tima. Naredba systemctl je samo za Linux. Na Windowsu je ikona u traci odgovor na prvi pogled, njezin izbornik navodi razlog, a dnevnik servisa sadrži pojedinosti. Na obje platforme kartica Pregled u Nessieju prikazuje odobrene profile executora, njegovu granicu podataka, kada je posljednji put viđen i svaki čekajući prijedlog lokalnih pravila koji čeka pregled.

Dnevnici

PlatformaGdje
Linuxjournalctl --user -u nessie-executor@<executorId>. Daemon sam nema vlastitu datoteku dnevnika.
Windows%ProgramData%\Nessie Executor\logs\service.log, koju otvara stavka Otvori mapu dnevnika u izborniku ikone u traci.

Tamo se bilježi svako odbijanje na koje osoba može reagirati: nepotpisan ili izmijenjen runtime, stanje direktorija koje se ne može zaštititi, executor koji se nije pokrenuo pri pokretanju sustava. Tamo se nikad ne bilježi izazov uparivanja, ključ ni izlaz podprocesa. Ne postoji postavka razine dnevnika koju bi se moglo podići, jer nema ničega opširnijeg za uključiti.

Mac CLI zapisuje dnevnik servisa svakog tima u ~/Library/Logs/NessieExecutor/<executorId>.log.

Nadogradnja

Nadogradite CLI putem Homebrewa, APT-a ili DNF-a, a zatim ponovno pokrenite servis svakog tima naredbom disable, pa enable. WinGet nadograđuje Windows executor. Izravni instalacijski paketi za Nessie Desktop nude potpisana ažuriranja unutar aplikacije, a MSI i Debian instalacije koriste svoj upravitelj paketa. Uparivanja i lokalna dopuštenja ostaju nakon nadogradnje.

Zaustavljanje i uklanjanje

Zaustavljanje je uredan put koji daemon sam provodi, a ne prisilno gašenje. Daemon prima signal za prekid, zaustavlja svaku sesiju gosta, otpušta svoj lease i izlazi. Na Linuxu jedinica čeka petnaest sekundi, a čišćenje ima budžet od deset sekundi. Namjerno nikad ne eskalira na neuhvatljivo prisilno ubijanje, jer daemon ubijen usred čišćenja ostavlja mikro-VM i radni overlay bez procesa koji bi ih očistio. Zaustavljanje koje visi zato je vidljivo u systemctl --user status, a ne tiho, a eskalacija je namjerna ljudska odluka.

Za uklanjanje Linux paketa:

nessie-executor disable <executorId>   # stops and disables the service
sudo apt remove nessie-executor
loginctl disable-linger                # only if your user manager should stop running at boot too

Na Windowsu msiexec /x zaustavlja i uklanja servis, njegove unose u registru i stavku pokretanja ikone u traci. Na obje platforme upareno stanje namjerno ostaje: ~/.local/state/nessie-executor/ na Linuxu i %ProgramData%\Nessie Executor na Windowsu. Uparivanje je ključ stroja i potpisana revizija pravila, a deinstaliranje programa nije zahtjev da se ono uništi. Ponovna instalacija ga pronalazi tamo gdje je bilo. Da biste zaboravili uparivanje, ručno obrišite direktorij. Da biste ga okončali i s druge strane, opozovite executor u Nessieju.

Ikona u traci na Windowsu i desktop pratitelj nude Zaboravi uparivanje na ovom računalu kao ravnopravnu radnju. Ona zaustavlja lokalni daemon, uklanja ključ stroja i odabir mape te trajno briše lokalne kopije nacrta nakon jedne potvrde operacijskog sustava. Poslužiteljski executor i njegova revizijska povijest ostaju vlasniku na izbor da ih zadrži ili opozove.

Česti kvarovi

SimptomŠto znači
Executor se upari, ali nudi samo operacije s datotekamaHost nije prijavio nijedan upotrebljiv sandbox backend. Na Linuxu provjerite možete li čitati i pisati u /dev/kvm i jeste li u grupi kvm. Nakon dodavanja u grupu odjavite se i ponovno prijavite. Na Windowsu izdanje nema Hyper-V; to je izdanje, a ne postavka.
Kontrole executora potpuno nedostajuBuild nije provjerljivo od očekivanog izdavatelja. Na Linuxu runtime mora biti u vlasništvu roota i bez bita pisanja za grupu ili sve. Na Windowsu i macOS-u potpis se mora podudarati s izdavateljem ili timom zapisanim u buildu. Svako od toga odbija uz objašnjenje i navodi lijek, umjesto da skriva kontrole.
Servis radi, ali ne pokreće daemon i odbija svaku naredbuNešto je u instalaciji zamijenjeno nakon pakiranja. To je namjerno ponašanje: izmijenjena instalacija odgovara razlogom umjesto da nestane, jer bi zaustavljen servis natjerao ikonu u traci da navede krivi lijek.
Izvođenje završi s nepoznatim ishodomIzgubljena je završna potvrda. Nessie neće prijaviti rezultat koji nije primio: naredba se označava kao nepoznata, izvođenje ide putem oporavka, a nuspojava se ne ponavlja. Kasna potvrda daemona i dalje može to razriješiti.
Operacija koja je jučer radila danas je odbijenaUvjet se promijenio između vezanja i slanja, a provjere se ponavljaju u svakom koraku: povučeno odobrenje, revizija deskriptora koja čeka pregled, sužena lokalna pravila, opseg koji se više ne podudara s izvođenjem ili opoziv. Odbijanje navodi koje.
Agent traži preglednik i kaže mu se da ne možeRad s preglednikom i programiranjem pokreće osoba iz kanala kao cijeli paket na novom izvođenju. Obični put vezanja ih odbija namjerno, a nijednu operaciju preglednika ne može se dodati izvođenju koje već nešto radi.