nessie

Udaljeni executori

Dajte agentu pravi računar na kome će raditi — na Linuxu, macOS-u ili Windowsu.

Šta je udaljeni executor

Agent u Nessie-ju nema računar. Može da čita šta je u Nessie-ju, razgovara sa ljudima i poziva povezane alate preko mreže, ali ne može da otvori datoteku na laptopu, pokrene komandu ili pogleda stranicu koja postoji samo iza nečijeg korisničkog naloga. Udaljeni executor je način da mu date mašinu na kojoj će raditi.

Executor je mali daemon koji instalirate na računar kojim upravljate. Povezuje se ka vašoj Nessie instanci, dokazuje koja je to mašina ključem koji nikad ne napušta host, i zatim nudi fiksan, imenovan skup operacija — ništa više. Poslovi stižu kao pojedinačne potpisane komande, a rezultati se vraćaju kao ograničeni, strukturirani izveštaji. Mašina nikad ne prihvata dolaznu vezu od Nessie-ja.

Vredi biti precizan u tome šta executor nije, jer većina alata za udaljeni pristup spada u jednu od ovih kategorija, a executor je namerno nijedna od njih. Nema SSH-a, nema ambijentnog udaljenog shell-a, nema priključivanja na multiplekser terminala koji već imate otvoren, nema cloud standardnog ulaza i nema opšteg lokalnog mrežnog proksija. Nije MCP server, i nije kontejner ni cloud okruženje za izvršavanje — Nessie to već ima, i to je nešto drugo. Executor je krajnja tačka sa sposobnostima (capability-bearing) i zatvorenim spiskom operacija, a taj spisak je cela površina koju izlaže.

Kome executor pripada

Svaki executor se pravi sa tačno jednim obimom, a taj obim se kasnije ne može promeniti. On određuje ko sme da ga pokreće i ko sme da ga administrira.

ObimKo ga sme pokretatiKo upravlja pristupom
PrivatniOsoba koja traži i tačno pozvani agent moraju oba biti imenovani kao dodeljeni. Nijedno samo nije dovoljno.Dodeljeni ljudski administrator. Agenti mogu da koriste privatni executor, ali ga nikad ne mogu administrirati.
ProjektniOsoba sa pravom na taj tačno projekat, i to samo iz posla u tom projektu.Menadžer organizacije, ili vlasnik ili administrator projekta.
OrganizacijaOsoba sa pravom u organizaciji.Menadžer organizacije.

Privatni executor uvek mora imati bar jednog aktivnog ljudskog administratora. Uklanjanje poslednjeg direktno ne uspeva; ako bi transakcija pri odlasku iz tima (offboarding) ostavila nijednog, executor prestaje da prihvata nove poslove, završava ono što već ima i sam sebe opoziva. Vlasnik organizacije ima put hitnog opoziva (break-glass) samo za opoziv, kojim završava executor koji inače ne održava, bez prikazivanja njegovog privatnog spiska, sesija ili sadržaja. Privatni pristup se nikad tiho ne prenosi na nekog drugog.

Šta agent zapravo može da uradi sa njim

Vokabular operacija je fiksiran u kodu, a ne podešava se po instalaciji. Deli se na dva dela, i ta podela određuje šta treba instalirati: neke operacije daemon služi iz sopstvenog privremenog direktorijuma bez ikakve virtuelne mašine, a ostale traže gost VM po sesiji na hostu.

OperacijaŠta radiGost VM
file.list, file.readIzlistava i čita datoteke unutar jednog korenskog direktorijuma radnog prostora izabranog pri uparivanju.Ne
file.writePiše u kopiju tog radnog prostora pri pisanju (copy-on-write). Nikad ne otvara pravi koren za pisanje.Ne
workspace.reviewPrijavljuje šta je nacrt promenio — do 100 relativnih putanja sa vrstom i brojem bajtova, plus sažetak manifesta. Ne sadrži sadržaj datoteka.Ne
sandbox.stopGasi sesiju koju posao poseduje.Ne
command.runPokreće jednu komandu kao vektor argumenata bez shell-a, u gostu bez izlaza na mrežu. Na ovom putu nigde nema shell stringa.Da
browser.open, browser.observe, browser.actUpravlja pregledačem unutar gosta, nad listom origin-a podešenom na mašini. Posmatranje vraća ograničeno stablo pristupačnosti i opcionalnu smanjenu sliku; radnje su navigacija, klik, unos teksta, pritisak tastera i pomeranje, i uvek se izvode nad čvorom koji je agent upravo posmatrao — nikad nad selektorom, koordinatama ili skriptom.Da
coding.launch, coding.observePokreće upravljanu Codex sesiju u gostu i čita tipizirano stanje životnog ciklusa. Nema priključivanja na terminal i nema kanala za upite: agent saznaje da li sesija radi, ali ne i šta je na njenom ekranu.Da
workspace.promotePrimenjuje pregledani nacrt na pravi radni prostor. Ovo je jedina operacija koja piše na host, i namerno se uopšte ne nudi modelima.Ne

Operacije koje ne traže gost čine paket radnog prostora. Host koji ne može da pokrene gost nije pokvaren executor: normalno se uparuje, prijavljuje svoj sandbox backend kao none i oglašava samo paket radnog prostora i ništa više. U tom stanju se nađe Windows izdanje bez Hyper-V-a ili Linux računar čiji korisnik ne može da koristi /dev/kvm, a interfejs to pokazuje umesto da pukne nejasno.

Rad sa pregledačem agent nikad ne pokreće sam od sebe. Obična ruta za vezivanje jedne operacije bez izuzetka odbija browser.open i browser.observe; posao sa pregledačem pokreće osoba iz kanala, kao jedan paket od četiri operacije u novom poslu, i posle toga se na njega ne može dodati nijedno vezivanje. Upravljane Codex sesije funkcionišu isto.

Postoje još dve grupe koje su u kodu, ali su namerno nedostupne. Operacije za upravljanje Chrome tabom u koji ste već prijavljeni imaju kompletnu lokalnu implementaciju i native-messaging ekstenziju, ali kontrolna ravan ih ne oglašava dok server ne može da dokaže da je konverzacija koja ih je pokrenula bila privatna i da zabeleži ko je šta otkrio — osnova je namerno neaktivna, a ekstenzija se ne isporučuje ni u jednom instalateru. Nekoliko operacija za Codex (attach, prompt, interrupt i close) pomenuto je u šemi, ali nema njihove implementacije, pa ne mogu biti dodeljene.

Kako radi

Veza je uvek odlazna

Daemon uspostavlja odlazne HTTPS i WSS veze samo ka vašem Nessie API-ju i ni ka čemu drugom. Nessie nikad ne poziva laptop, nikad ne čuva njegovu adresu i nikad ne tretira nijedan katalog krajnjih tačaka kao transport do mašine. Zato executor radi iz kućne mreže, iza NAT-a, na korporativnom VPN-u, bez prosleđivanja porta i bez ulaznog pravila u zaštitnom zidu — i zato je zaustavljanje daemona potpun i trenutan prekid veze.

API origin mora biti HTTPS. Jedini izuzetak je loopback adresa za ljude koji pokreću Nessie na sopstvenoj mašini, preko sopstvene promenljive okruženja; nijedna obična zastavica ne pretvara produkcijski origin u običan HTTP.

Uparivanje dokazuje mašinu, a osoba je potvrđuje

Uparivanje je dvostrani dokaz. Ovlašćena osoba pravi executor u Nessie-ju sa njegovim obimom, a Nessie izdaje upis (enrolment): 256-bitni slučajni izazov (challenge), čiji samo SHA-256 verifikator Nessie čuva, važi deset minuta i može se iskoristiti jednom.

Na mašini daemon generiše Ed25519 par ključeva, čuva ga u privatnom skladištu zaštićenom operativnim sistemom i zapisuje tačno potpisani zahtev na disk pre bilo kakvog mrežnog poziva — da bi se izgubljen odgovor mogao ponoviti sa istim pripremljenim ključem, a ne da bi se tiho uparilo dva puta. Zatim šalje ID upisa, izazov, svoj javni ključ i dokaz potpisa. Nessie čuva javni ključ i njegov otisak. Privatni ključ nikad ne čuva.

Nessie zatim prikazuje taj otisak osobi, koja ga potvrđuje. Dok se to ne potvrdi i ne dokaže posedovanje ključa, executor ostaje van mreže. Uparivanje se nikad ne može završiti iz teksta u četu ili iz transkripta terminala: traži namernu ljudsku radnju u veb ili desktop interfejsu.

Mašina koja izgubi ključ ne može da povrati svoj executor. On se opoziva i upisuje ponovo kao novi executor. Rotacija ključa je, nasuprot tome, jedna transakcija potpisana i starim i novim ključem.

Deskriptor je potpisana tvrdnja mašine o sebi

Upareni daemon objavljuje deskriptor: potpisanu, monotono revidiranu izjavu samo o strukturnim činjenicama — koje šeme operacija podržava, koja su mu ograničenja resursa i mreže, platforma i sažetak lokalne politike. Ne sadrži putanje sa hosta i ne stvara nikakvo ovlašćenje u cloudu.

Nova revizija se nikad ne aktivira čim stigne. Čuva se kao na čekanju, a ovlašćena osoba je mora videti i potvrditi pre nego što može da utiče na to šta je dostupno. Upravo to sprečava da osveženje mogućnosti tiho dodeli novu moć: novooglašena operacija počinje odbijena.

Budite jasni u tome šta potpis dokazuje. Deskriptor potpisan ključem uparenog executora dokazuje da je taj ključ napravio tvrdnju. Ne dokazuje da je host neokrnjen, a interfejs je dužan to da kaže.

Raspodela: kandidat, vezivanje, komanda, izveštaj

Agent nikad ne imenuje executor. Pre nego što posao može da ga koristi, Nessie logičku operaciju pretvara u neprozirnog, kratkotrajnog kandidata za dostupnost. Odgovor ne sadrži ID executora; baza čuva samo sažetak ručke, uz to ko je i za šta je kandidat razrešen. Modeli i klijenti dobijaju ručku, a ne mašinu koju mogu da biraju.

Dostupnost je jedan razrešivač, koji isto koriste API, worker, interfejs i asistent:

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 pravi vezivanje pod zaključavanjem u bazi, koje ponovo proverava svaku od tih kapija i uvećava monotoni brojač (fence). Raspodela ih proverava još jednom. Posledica je da povučen grant, sužena politika ili opozvani executor između dva koraka zaustavljaju posao, umesto da se to primeti kasnije — a ponovni pokušaj nikad ne može da sleti na drugu mašinu od one za koju je posao vezan.

Sama komanda ide preko Nessie-jevog uobičajenog reda poslova i životnog ciklusa tool poziva, a ne preko sopstvenog drugog. Daemon sam proverava da li ima posla preko svog autentifikovanog kontrolnog kanala; ka njemu se nikad ne gura. Komanda prolazi kroz četiri vrste izveštaja i nijednu drugu:

leased → accepted → started → result-acknowledged

Svaki okvir vezuje ID komande, poreklo posla, fence vezivanja, reviziju mogućnosti, rok isteka, ključ idempotentnosti i sažetke argumenata i sadržaja (payload). Daemon odbija neslaganje, zastarelu politiku, ponovljenu poruku ili drugi rezultat za komandu koju je već završio. Argumenti i konačni rezultati se šifruju AES-256-GCM tokom čuvanja; baza čuva ograničen šifrovani tekst i kanonske sažetke, a ne sadržaj.

Ako se potvrda prijema izgubi, Nessie ne pretpostavlja uspeh. Komanda se beleži kao neizvestan ishod, a posao ide normalnim putem oporavka; daemon, koji svaku isporučenu komandu lokalno beleži u dnevnik pre nego što krene da radi, neće ponoviti nuspojavu. Kasni izveštaj i dalje može iskreno razrešiti nejasnoću.

Granica poverenja

UčesnikMožeNe može
OsobaUpariti executor, upravljati njim kad ima pravo, potvrđivati pristup i promene politike.Proširiti politiku koju sama mašina odbija, niti delovati bez važećeg ovlašćenja.
Agent, uključujući ličnog asistentaPozvati operaciju koja mu je već dostupna; pripremiti predloženu promenu pristupa za osobu koja ju je tražila.Administrirati pristup, odobriti sebi, birati mašinu, menjati lokalnu politiku ili primeniti promenu koju je sam pripremio.
Nessie kontrolna ravan (control plane)Razrešiti dostupnost, vezati posao, dodeljivati komande i čuvati redigovane revizione zapise.Pozivati mašinu, proširiti lokalnu politiku, dosezati akreditive hosta ili tretirati tekst iz terminala kao ovlašćenje ili ishod.
Daemon executoraSprovoditi lokalnu politiku, uparivati se ka spolja, pokretati gost i gateway, potvrđivati komande.Širiti sopstveni obim, prihvatiti zastarel ili ponovljen posao, direktno izložiti radni prostor ili akreditive hosta ili slati sirove lokalne podatke u revizioni trag.
Gost VM i alati u njemuRaditi u copy-on-write sandboxu, dosezati mrežu samo preko gatewaya.Dosezati datoteke hosta, akreditive hosta, direktnu mrežu ili DNS, niti primeniti promenu na hostu.

Instaliranje i uparivanje executora

Instalirajte Mac CLI preko Homebrew-a, Mac aplikacije preko Homebrew casks-a, Linux CLI preko APT-a ili DNF-a, a Windows executor preko WinGet-a. Svaki upareni tim ima odvojene dozvole koje se čuvaju na računaru. Nessie kontroliše pristup unutar tima; ne može da menja lokalne resurse.

Vodič za instalaciju i uparivanje sadrži tačne komande, dvostrani tok sa osmocifrenim kodom, lokalna podešavanja, pokretanje, ažuriranja i uklanjanje.

Koliko je svaka platforma zaista potvrđena

Stanje tri gost sandboxa se razlikuje, i razlika je bitna. macOS je backend sa radnom, proverenom gost putanjom. Firecracker backend na Linuxu i Hyper-V backend na Windowsu su implementirani i pokriveni testovima na strani hosta — tok pokretanja, diskovi, transporti za kontrolu i izlaz, protokol nacrta — ali nijedan gost još nije podignut na pravom hardveru u kontinuiranoj integraciji ovog projekta, jer su za to potrebne mašine sa KVM-om ili Hyper-V-om, a poslovi koji bi to dokazali nikad ih nisu imali. Paket radnog prostora, kojem gost nije potreban, testiran je od kraja do kraja na Windowsu nad pravom kontrolnom petljom. Operacije sa gostom na Linuxu i Windowsu smatrajte nepotvrđenim dok ih ne potvrdite na sopstvenom hardveru. Ekran za uparivanje u Nessie-ju kaže isto svojim rečima.

Bezbednost i zadržavanje

Jedan korenski direktorijum radnog prostora, a njegova putanja ostaje na mašini

Uparivanje bira tačno jedan kanonski korenski direktorijum radnog prostora: jedan direktorijum, a ne skup fascikli, i nikad njihov najbliži zajednički roditelj. Nessie dobija samo osnovno ime korena, pa osoba može da prepozna granicu u interfejsu; puna putanja ostaje u stanju mašine dostupnom samo vlasniku i nikad se ne otprema. Koren je moguće promeniti, ali tek kad su uklonjeni svi lokalni nacrti i sandboxi, a promena proizvodi novu reviziju deskriptora koja prolazi isti ljudski pregled kao i svaka druga promena politike. Nikad se tiho ne može proširiti na roditeljski direktorijum.

Operacije sa datotekama prihvataju samo relativne putanje. Odbijaju prelazak kroz direktorijume (traversal) i svaku komponentu koja je simbolička veza, ponovo proveravaju da je konfigurisani koren i dalje običan direktorijum i vraćaju ograničene strukturirane rezultate bez putanje sa hosta.

Pisanje ide u kopiju, a samo osoba primenjuje

Agent nikad ne piše u vaše datoteke. file.write pravi ograničeno copy-on-write stablo pod sopstvenim direktorijumom stanja daemona, vezano za posao, a kasnija čitanja i listanja za taj posao vide nacrt. Rad u gostu, uključujući Codex sesije, koristi isti copy-on-write privremeni prostor.

Primena nacrta na pravi radni prostor je jedna operacija — workspace.promote — i to je jedini upis na hostu u celom sistemu. Nema nikakvu šemu okrenutu modelu: nijedan agent, asistent ni putanja koju zadaje pozivalac ne mogu nacrt pretvoriti u upis na hostu. Umesto toga osoba otvara Vaši pregledani nacrti, pritiska Pregledaj primenu i potvrđuje svojom trenutnom lozinkom. Server zatim ponovo proverava potvrđeni sažetak pregleda, sažetak manifesta, posao, korisnika i agenta koji su ga pokrenuli, reviziju ovlašćenja, grant za operaciju i aktivnu lokalnu politiku, pre nego što napravi komandu. Na mašini daemon sam ponovo gradi manifest i odbija sažetak koji se promenio — tako izmena načinjena posle pregleda ne može da se provuče uz odobrenje pregleda.

Sama primena zasniva se na deskriptorima i beleži se u dnevnik. Nativni pomoćni program dobija koren radnog prostora i nacrt kao već otvorene deskriptore direktorijuma, nikad kao putanje; proverava svaku komponentu operacijama bez praćenja simboličkih veza, odbija simboličke i tvrde veze, posebne datoteke i prelazak preko tačaka montiranja, i vodi dnevnik koji ili u potpunosti dovršava proveren manifest ili u potpunosti vraća original pre bilo čega drugog.

Gost nema mrežu, a izlaz je prinudno usmeren

Kad operacija zaista treba gost, to je mikro-VM za Linux po sesiji, bez domaćeg početnog direktorijuma hosta, bez Docker socketa, bez SSH agenta, bez nasleđenog okruženja i bez montiranja hosta osim deljenja radnog prostora. Izvršni runtime montira se samo za čitanje; zapisivi montaž radnog prostora zabranjuje izvršavanje, pa sve što se pokreće dolazi iz proverenog runtime paketa, a ne iz nečega što je agent napisao. Gost prelazi na neprivilegovan identitet pre nego što otvori bilo kakav soket, a deljenje u vlasništvu root-a obara pokretanje umesto da ostavi privilegovani posao da radi.

Najvažnije je da gost nema mrežni interfejs. Na Linuxu tok pokretanja namerno nikad ne podešava mrežu i ne pravi TAP uređaj; na Windowsu se virtuelni mrežni adapter koji Hyper-V podrazumevano dodaje uklanja tokom podešavanja. Jedina ruta gosta van mašine je loopback proksi unutar njega, tuneliran preko virtuelnog soketa do mosta na hostu, koji bajtove predaje gatewayu daemona — lokalnom osluškivaču soketa dostupnom samo vlasniku, bez TCP osluškivača i bez opšteg režima prosleđivanja. Upravo tamo se sprovodi politika za HTTP, CONNECT, WebSocket, preusmeravanje, origin, preuzimanje i otpremanje, koristeći Nessie-jev postojeći fiksirani fetch (pinned-fetch), a ne drugu implementaciju istih pravila. Nema NAT mosta i nema direktnog DNS razrešivača: alternativni DNS, sirovi TCP, QUIC i zaobilaženje proksija su svi zabranjeni.

Listu origin-a koju taj gateway primenjuje podešava na mašini njen vlasnik, i ona se namerno nikad ne otprema. Interfejs to odsustvo navodi umesto da se pravi da je Nessie uređivač politike origin-a: ako želite da znate šta pregledački executor sme da dosegne, pitajte osobu koja poseduje mašinu.

Akreditivi

Nijedno skladište akreditiva hosta se nikad ne montira u gost. Ni privezak ključeva (keychain), ni ~/.codex ni ~/.claude, ni globalni CLI token, ni promenljiva okruženja sa API ključem. Jedina podržana prijava za upravljanu Codex sesiju je datoteka za autentifikaciju privatna za vlasnika, čiji sadržaj čita isključivo alat za izradu initrd-a pod kontrolom vlasnika — nikad Nessie, nikad deskriptor, nikad log ili argument komande — i jednom se premešta u privatni početni direktorijum unutar gosta, koji se uništava zajedno sa VM-om. Taj gost može da dostigne tačno jedan origin.

Pregledački executor je još stroži: svaka sesija dobija novi privatni profil pregledača i odbija onaj koji je pripremio radni prostor, pa počinje bez kolačića, bez proširenja i bez ikakvog ambijentalnog stanja prijave.

Sirovi lokalni podaci mogu stići do provajdera modela samo unutar eksplicitnog, ograničenog posla. Nessie trajno čuva redigovane manifeste, sažetke argumenata i politika, sažetke rezultata i strukturiran status. Sadržaj datoteka, izlaz terminala, DOM pregledača, akreditivi i faktori autentifikacije zabranjeni su u zapisima baze, revizionim unosima, logovima, događajima u realnom vremenu i izveštajima o greškama.

Šta operator dodeljuje i kako to oduzima

Dozvola za korišćenje executora nije jedan prekidač. Agent može da pozove operaciju samo ako ima grant za tačan executor i tačnu operaciju, i obična logička politika alata to dozvoljava, i obim posla se poklapa, i lokalna politika mašine je dozvoljava. Dodeljivanje jednog executora jedne operacije zato ne ovlašćuje ništa na drugom, a osveženje mogućnosti ne može ništa da proširi, jer nove operacije stižu odbijene.

Pristup agenata i deljenje oba stupaju na snagu odmah, na samoj stranici, bez nastavka odobrenja, zahteva za lozinku ili novog koraka autentifikacije. Na kartici Agenti executora menadžer direktno uključuje ili isključuje pristup mašini za agenta; na kartici Deljenje dodeljuje osobi pravo Može da koristi ili Administrator, ili proširuje korišćenje na projekat ili na sve iz tekućeg tima, na isti način. U vašem sopstvenom razgovoru sa asistentom — samo tamo, nikad u deljenom kanalu, zakazanom poslu ili tuđem radu drugog agenta — asistent umesto toga može da pripremi promenu pristupa agenta ili dodele, što objavljuje kartica za potvrdu u tom razgovoru; ništa se ne menja dok ne pritisnete Dozvoli pristup na njoj, a tekst u četu se nikad ne računa kao potvrda.

Tri promene i dalje zahtevaju da u trenutku potvrde ponovo unesete trenutnu lozinku: aktiviranje revizije deskriptora; asistentom pripremljena dodela koja mašinu daje osobi, a ne agentu; i stalna politika koja kolegama dozvoljava da na njoj pokreću komande kao njen vlasnik, odnosno politika rada na zadacima bez nadzora. Isključivanje ili brisanje mašine namerno ne traži ni jedno ni drugo, jer prekidač za hitno zaustavljanje (kill switch) nikad ne sme biti teži za dostizanje od onoga što zaustavlja. Primena potvrđenog nacrta uvek traži lozinku. Revizioni zapis beleži zasebno osobu koja je delovala i učešće asistenta.

Executor prolazi kroz mali, eksplicitan skup stanja:

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

Meni Računar u zaglavlju je mesto gde menadžer priprema svaku promenu životnog ciklusa: pauzira ga, nastavlja ga kad je pauziran, prekida mu vezu ili ga briše. Pauziranje ostavlja executor na mreži, ali ga zaustavlja da prima komande. Prekidanje veze poništava njegove klijentske sertifikate i svaku otvorenu kandidat-ručku i ne može se poništiti — prekinut executor se ponovo uparuje kao novi. Brisanje radi isto i uklanja executor sa spiska; za razliku od prekida veze, nudi se bez obzira na stanje executora, uključujući i čekanje uparivanja i već prekinute, jer je to jedini način da neko napusti spisak. Pražnjenje — završavanje posla koji već ima pre nego što prestane da prihvata nove — je pravo treće stanje u protokolu, a interfejs može da prikaže računar u tom stanju, ali ga ovde ništa ne pokreće: to radi samo direktan poziv API-ju. Svaka potvrđena promena pristupa, pregled deskriptora i prelaz životnog ciklusa, uključujući pražnjenje, takođe pomera epohu veze daemona, pa njegovo sledeće kontrolno proveravanje — najkasnije za sekundu — neuspešno se zatvara (fail closed) i zaustavlja svaki aktivni gost pre nego što se ponovo poveže. Opoziv je zahtev koji mašina ne sme da ignoriše.

Rad sa executorom

Provera da li je ispravan

Nessie-jev sopstveni odgovor je provera aktivnosti (liveness). Daemon potpisuje heartbeat, a executor čija je poslednja autentifikovana aktivnost starija od šezdeset sekundi trajno se označava kao van mreže pre nego što može biti izlistan, izabran ili mu se šalje posao. Executor koji se prikazuje kao na mreži dokazao je da je aktivan u poslednjih minut.

Na mašini ne postoji krajnja tačka za proveru zdravlja — daemon ne sluša nijedan port namenjen operateru, po dizajnu. Na macOS-u i Linuxu pitajte CLI direktno:

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 agent svakog tima. Komanda systemctl je samo za Linux. Na Windowsu je ikonica u području obaveštenja odgovor na prvi pogled, njen meni navodi razlog, a log servisa nosi detalje. Na obe platforme kartica Pregled executora u Nessie-ju prikazuje njegove odobrene profile, granicu podataka, kad je poslednji put viđen i svaki lokalni predlog politike koji čeka pregled.

Logovi

PlatformaGde se nalazi
Linuxjournalctl --user -u nessie-executor@<executorId>; daemon ne vodi sopstvenu log datoteku
Windows%ProgramData%\Nessie Executor\logs\service.log, koju otvara stavka Otvori fasciklu logova u meniju ikonice

Svako odbijanje na koje osoba može da reaguje završava tamo: nepotpisan ili izmenjen runtime, direktorijum stanja koji se ne može zaštititi, executor koji se nije pokrenuo pri podizanju sistema. Tamo nikad ne završava izazov za uparivanje, ključ niti izlaz procesa deteta. Ne postoji podešavanje nivoa logovanja koje bi trebalo podići, jer nema ničega opširnijeg da se uključi.

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

Ažuriranje

Ažurirajte CLI preko Homebrew-a, APT-a ili DNF-a, zatim ponovo pokrenite servis svakog tima komandama disable pa enable. WinGet ažurira Windows executor. Direktni instalateri Nessie Desktop-a nude potpisana ažuriranja unutar aplikacije; MSI i Debian instalacije koriste svoj menadžer paketa. Uparivanja i lokalne dozvole ostaju posle ažuriranja.

Zaustavljanje i uklanjanje

Zaustavljanje je uredna putanja koju daemon sam vodi, a ne prisilno gašenje. Daemon prima signal za završetak, zaustavlja svaku sesiju gosta, oslobađa svoju rezervaciju i izlazi. Na Linuxu jedinica (unit) čeka petnaest sekundi za budžet gašenja od deset sekundi i namerno nikad ne prelazi na neuhvatljivo prisilno gašenje (kill), jer daemon ubijen usred gašenja ostavlja mikro-VM i radni overlay bez procesa koji bi ih očistio. Zaustavljanje koje visi zato je vidljivo u systemctl --user status umesto da je tiho, a eskalacija je isključivo ljudska odluka.

Da biste uklonili Linux paket:

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 za pokretanje ikonice. Na obe platforme upareno stanje namerno ostaje — ~/.local/state/nessie-executor/ na Linuxu i %ProgramData%\Nessie Executor na Windowsu. Uparivanje je ključ mašine i potpisana revizija politike, a deinstaliranje programa nije zahtev da se ona uništi; ponovna instalacija ih nađe tamo gde su bili. Da biste zaboravili uparivanje, obrišite direktorijum ručno, a da ga prekinete i sa druge strane, opozovite executor u Nessie-ju.

Windows tray ikonica i desktop pomoćnik nude Zaboravi uparivanje na ovom računaru kao osnovnu radnju: ona zaustavlja lokalni daemon, uklanja ključ mašine i izbor fascikle, i trajno briše lokalne kopije nacrta nakon jedne native potvrde — ali ostavlja executor na serveru i njegovu istoriju revizije da ih vlasnik zadrži ili opozove.

Česte greške

SimptomŠta znači
Executor se upari, ali nudi samo operacije sa datotekamaHost nije prijavio nijedan upotrebljiv sandbox backend. Na Linuxu proverite da li možete da čitate i pišete /dev/kvm i da li ste u grupi kvm — odjavite se i ponovo prijavite nakon što se dodate. Na Windowsu izdanje nema Hyper-V; to je izdanje, a ne podešavanje.
Kontrole executora uopšte nedostajuBuild nije proverljivo od očekivanog izdavača. Na Linuxu runtime mora biti u vlasništvu root-a bez upisnog bita za grupu ili za sve; na Windowsu i macOS-u potpis mora odgovarati izdavaču ili timu pinovanom u build. Svaki od ovih slučajeva odbija uz objašnjenje i navodi rešenje umesto da sakrije kontrole.
Servis radi, ali ne pokreće daemon i odbija svaku komanduNešto je u instalaciji zamenjeno posle pakovanja. Ovo je namerno ponašanje: izmenjena instalacija odgovara razlogom umesto da nestane, jer bi zaustavljen servis naterao ikonicu da navede pogrešno rešenje.
Posao se završava sa neizvesnim ishodomPotvrda završnog prijema se izgubila. Nessie ne prijavljuje rezultat koji nije primio: komanda se obeležava kao neizvesna, posao ide putem oporavka, a nuspojava se ne ponavlja. Kasni izveštaj od daemona i dalje može to razrešiti.
Operacija koja je juče radila danas je odbijenaKapija se promenila između vezivanja i raspodele, a provere se ponavljaju na svakom koraku: povučen grant, revizija deskriptora koja čeka pregled, sužena lokalna politika, obim koji se više ne poklapa sa poslom ili opoziv. Odbijanje kaže koji.
Agent traži pregledač i kaže mu se da ne možeRad sa pregledačem i Codex rad pokreće osoba iz kanala kao jedan paket na novom poslu. Obična ruta vezivanja ih namerno odbija, a nijedna operacija pregledača ne može se dodati poslu koji već nešto radi.