Stvaranje SPACE-a: Sigurna i učinkovita okruženja za izvršavanje dugotrajnih agenata
SPACE je Perplexityjeva sigurna, učinkovita sandbox platforma koja pokreće dugotrajne tijekove rada s agentima i brzo, izolirano izvršavanje koda.
Kako tijekovi rada s agentima postaju dulji i autonomniji, okruženja u kojima AI agenti rade postaju jednako važna kao i modeli koji ih pokreću. Agentima je potrebno obavljati stvaran posao, poput izvođenja koda, uređivanja datotečnog sustava i izvršavanja zadataka u više koraka koji traju satima ili danima. Korisnici žele da agenti imaju pristup alatima i datotekama potrebnima za izvršavanje tih zadataka, ali također moraju biti sigurni da će njihovi sustavi ostati sigurni čak i ako agenti budu kompromitirani. Sandbox je ono što sve to čini mogućim: izolirano okruženje u kojem agent može slobodno raditi dok domaćin, drugi korisnici i osjetljivi vjerodajnice ostaju zaštićeni.
Tradicionalni pristupi sandboxu temeljeni na kontejnerima nisu dizajnirani za ove zadatke. Obično pretpostavljaju kratkotrajne poslove bez stanja (stateless) i imaju jezgro kao jedinstvenu točku kvara. Suprotno tome, sesije agenata dugotrajne su i imaju stanje (stateful): agent nakuplja sate konteksta, radni datotečni sustav i procese u izvođenju koji se ne mogu jednostavno odbaciti i rekonstruirati iz temelja. Štoviše, radno opterećenje unutar njih prema zadanim postavkama treba biti nepovjerljivo, što nalaže strože sigurnosne mjere. Dugotrajne sesije agenata trebaju podlogu koja može izolirati neprijateljskog gosta, sačuvati njegovo stanje i pritom funkcionirati u velikom mjerilu.
Glavni izazov uinženjeringu sandboxa proizlazi iz napetosti koja se često javlja između sigurnosti, funkcionalnosti i učinkovitosti. Na primjer:
Omogućavanje šireg pristupa omogućuje agentu da postigne više, ali izlaže veći dio sustava radnom opterećenju kojem ne vjerujete.
Dijeljenje veće količine sadržaja između sandboxova ubrzava stvaranje, ali proširuje površinu napada.
Češće snimanje stanja (snapshotting) poboljšava oporavak i omogućuje značajke poput vraćanja na prethodno stanje (rollback), ali zahtijeva vrijeme i prostor za pohranu.
Sandboxovi za agente, poput onih potrebnih za izvršavanje koda, korištenje vještina agenta ili izvođenje Pretraživanja kao koda u računalnim upitima, trebaju sve troje. Proteklih smo nekoliko mjeseci naporno radili na inženjeringu sljedeće generacije infrastrukture za agente koja pokreće naše proizvode. Danas predstavljamo SPACE (Sandboxed Platform for Agentic Code Execution): platformu sandboxa izgrađenu za tijekove rada s agentima koja je sigurna, pouzdana i učinkovita u velikom mjerilu. Prošlog smo mjeseca započeli s uvođenjem SPACE-a kao sloja sandboxa koji pokreće Perplexity Computer. Tijekom prošlog tjedna sigurno je podržao milijune stvaranja sandboxova i desetke milijuna ponovnih povezivanja, s vremenima pokretanja koja su 3 do 5 puta brža od našeg prethodnog rješenja.
Ovaj članak predstavlja arhitektonske odluke i odluke o dizajnu iza sustava SPACE. Od danas 100% sesija na računalu (Computer) radi na sustavu SPACE. Uzbuđeni smo što ćemo primijeniti ovu platformu na još više površina kako bismo našim korisnicima i programerima pružili najbolje okruženje za izvođenje agenata.
Arhitektura
Na visokoj razini, sustav je organiziran u tri sloja.
Upravljačka ravnina (control plane) mozak je sustava koji odlučuje što treba postojati i gdje. Sastoji se od API pristupnika i modula za upravljanje stanjem na razini klastera.
Usluge lokalne na čvoru lokalni su mehanizmi potrebni za izvršavanje plana upravljačke ravnine. One upravljaju životnim ciklusom sandboxa, pohranom, umrežavanjem i privilegiranim operacijama koje stoje iza njih.
Sandbox je samo izolirano okruženje za izvršavanje. Implementiran je kao virtualni stroj uparen s uslugom space-daemon: pozadinskim procesom unutar gosta koji posreduje pristup datotečnom sustavu, procesima i mreži za radno opterećenje.

Upravljačka ravnina
API pristupnik je ulazna točka. Dolazni zahtjevi se autentificiraju i autoriziraju, a zatim prevode u zapise željenog stanja.
Upravljačka ravnina je po dizajnu bez stanja, pri čemu su sve trajne informacije premještene u dijeljenu bazu podataka. Ona prati informacije na razini klastera o sandboxovima, kao što je čvor kojem su dodijeljeni, gdje se izvode i jesu li sigurnosno kopirani na trajnu pohranu. Ona neprekidno uspoređuje željeno stanje s opaženim stanjem i usmjerava ih prema konvergenciji. Operacije su idempotentne, tako da se upravljačka ravnina može automatski oporaviti nakon bilo kakvog pada, ponovnog pokretanja ili djelomičnog kvara.
Usluge lokalne na čvoru
Usluge lokalne na čvoru obavljaju stvarni posao pripreme predložaka, pokretanja sandboxova, umrežavanja i pokretanja runtime usluga na strani domaćina. Svaki čvor pokreće mali skup daemona koji upravljaju svakim sandboxom smještenim na njemu, a čvor je izvor istine za stvarna stanja tih sandboxova.
Upravitelj sandboxa zna koji sandboxovi rade, pauzirani su, suspendirani ili zaustavljeni, zajedno s njihovim stvarnim resursima. Radi bez privilegija i delegira sav privilegirani rad upravitelju čvora, jedinstvenom korijenskom procesu koji posreduje temeljne primitive. Pohranom se upravlja lokalno i trajno: snimke trenutnih stanja sandboxa spremaju se na čvor, a upravitelj volumena premješta snimke i predloške u i iz objektne pohrane prema potrebi kako bi se omogućile operacije između čvorova. Sigurnosni prolazi štite ono čemu sandbox može pristupiti: upravitelj vjerodajnica upravlja ubacivanjem vjerodajnica pod autorizacijom po usluzi, a mrežni pristupnik provodi policu izlaza svakog sandboxa.
Sandbox
Sam sandbox je virtualni stroj (VM) s vlastitom jezgrom gosta, koji pokreće radno opterećenje korisnika iza granice hardverske izolacije. Budući da svaki sandbox ima vlastitu jezgru, kompromitirano radno opterećenje ne može se osloniti na dijeljenu jezgru domaćina kao jedinstvenu točku kvara; čak i ako uspješno iskoristi svoju jezgru gosta, ta je kompromitacija ograničena na granicu VM-a sandboxa umjesto da se širi na druga radna opterećenja.
U svakom virtualnom stroju radi space daemon, služeći kao lagani agent koji regulira svaku radnju ili izmjenu koju platforma izvodi unutar gosta. Upravlja pristupom datotečnom sustavu i upravljanjem procesima. Također izvještava o spremnosti gosta i prati aktivnost, tako da platforma zna kada je sandbox postao neaktivan i može se pauzirati ili ponovno preuzeti. Ono što je ključno, space daemon ne razgovara izravno s klijentima, već komunicira s domaćinom preko privatnog kanala unutar VM-a. To drži svu interakciju s gostom na kontroliranoj putanji i čuva vlastitu mrežu sandboxa isključivo za odlazni promet radnog opterećenja.
Tri stupa: sigurnost, funkcionalnost i učinkovitost
Zatim uranjamo u ključna svojstva koja SPACE mora isporučiti kroz tri stupa: sigurnost, funkcionalnost i učinkovitost. Kao što je ranije spomenuto, ova tri se međusobno povlače. Ipak, ne možemo raditi kompromise ni oko jednog od njih ako želimo podržati moćne agente koji odgovaraju današnjim mogućnostima modela. Sigurnost sprječava da nepovjerljivo, potencijalno neprijateljski nastrojeno radno opterećenje našteti domaćinu, drugim korisnicima ili korisničkim tajnama. Funkcionalnost daje agentima bogat životni ciklus koji im je potreban. Učinkovitost čini sve ovo pristupačnim unutar konačne memorije, diska i računalne snage.
Sigurnost: Zaštita podataka i sustava
Platformama sandboxa potrebna je jaka sigurnost kako bi se osiguralo da pogrešan ili čak zlonamjeran kod pokrenut unutar sandboxa ne može uzrokovati štetne posljedice negdje drugdje. Bez provedbe stroge kontrole izlaza i čuvanja tajni izvan sandboxa, jedan pogrešan korak agenta mogao bi otkriti korisničke ključeve ili iznijeti radne podatke.

SPACE ima višeslojni pristup osiguravanju sigurnosti za sandboxove. Izolacija sandboxa ima dvije komponente, izolaciju VM-a i izolaciju procesa OS-a domaćina. Obje moraju biti probijene za pristup između sandboxova. Komunikacija sa sandboxom je strogo kontrolirana; procesi mogu komunicirati samo kroz namjenske kanale. Mrežni pristupnik prisiljava sav izlaz kroz sebe. Space daemon je jedini odobreni kanal između (nepovjerljivog) sandboxa i (povjerljive) platforme.
Vjerodajnice nikada ne borave tamo gdje ih agent može ukrasti. Spremnik vjerodajnica nalazi se izvan granice sandboxa i odgovoran je za životni ciklus vjerodajnica. Pohranjuje i dohvaća tajne putem priključive pozadine trezora (vault backend), razrješava vjerodajnice pomoću hijerarhijskog obuhvata, upravlja metapodacima poput metode ubacivanja i isteka te provodi ograničenja brzine i evidentiranje revizije (audit logging) na svim pristupima. Kada je potrebno, vjerodajnice se ubacuju na mrežnom sloju ili ih automatski popunjava agent preglednika, umjesto da izravno ulaze u sandbox.
Podaci su zaštićeni u mirovanju. SPACE podržava BYOK (Bring Your Own Key) za zaštitu vanjski pohranjenih podataka. Ključevi za enkripciju dolaze iz usluge upravljanja ključevima korisnika i nikada ne ulaze u sandbox. Ako poduzeće opozove ključ, njihovi podaci postaju nečitki.
Funkcionalnost: Pokretanje tijekova rada s agentima
Za podršku tijekovima rada s agentima, sandboxovima je potrebna bogata podrška za životni ciklus. Moraju se stvarati brzo i u velikom mjerilu, budući da agent može pokrenuti mnoge odjednom i ne bi trebao čekati da se bilo koji od njih pokrene. Moraju postojati na neodređeno vrijeme, budući da sesija može trajati nekoliko minuta ili raditi mjesecima. Moraju se čistom pauzom zaustaviti, ponekad na dugo vrijeme, kao na primjer kada je zadatak blokiran ljudskim unosom. I moraju podržavati račvanje (forking), vraćanje na prethodno stanje i oporavak od pada, tako da se sesija može granati, poništiti loš korak ili nastaviti nakon pogreške umjesto da kreće iznova.
SPACE podržava sve navedeno. On modelira cijeli životni ciklus sandboxa kao eksplicitni strojni aparat stanja, što je ono što operacije poput stvaranja, pauziranja, nastavka, suspenzije i vraćanja čini mogućima.

Snimke stanja (snapshots) mehanizam su koji stoji iza većine ovih mogućnosti. Raspoređivač (scheduler) radi u redovitim intervalima i snima dvije vrste snimaka: snimke diska (kopije datotečnog sustava u određenoj točki u vremenu) i pune snimke (kontrolne točke cijelog pauziranog VM-a). Snimke diska snimaju se često, dok su pune kontrolne točke rjeđe. Sve ostaje na čvoru, a zadržavanje opada po slojevima. Te se snimke mogu koristiti za oporavak unutar sesije; na primjer, snimke diska mogu se koristiti za vraćanje datotečnog sustava kako bi se poništila destruktivna naredba, a pune kontrolne točke omogućuju srušenom sandboxu da se nastavi izvoditi na nedavnoj točki izvođenja umjesto na hladnom disku.
Kada je sandbox suspendiran, VM se pauzira, uzima se puna snimka, a artefakti iz pune snimke prenose se u objektnu pohranu. Redak u bazi podataka prati snimku i postaje upotrebljiv za vraćanje tek nakon što je svaki artefakt prenesen, tako da se djelomično prenesena snimka nikada ne može vratiti u korumpirano stanje. Vraćanje je obrnuto od suspenzije. Budući da snimka živi u objektnoj pohrani, a ne na izvornom čvoru, bilo koji čvor može vratiti sandbox. Raspoređivač odabire čvor, taj čvor preuzima artefakte, ponovno primjenjuje delta datotečnog sustava povrh predloška i nastavlja VM iz njegovog snimljenog stanja.
Učinkovitost: Optimizacija vremena i prostora
Nije dovoljno implementirati gore navedene značajke u vakuumu; one također moraju biti izvedive pod strogim ograničenjima resursa. Memorija i disk na čvoru su konačni, a korisnici žele da agenti rade što je brže moguće, stoga operacije životnog ciklusa moraju biti povoljne i u vremenu i u prostoru. Ne možemo si priuštiti kopiranje slike cijelog stroja svaki put kada se sandbox stvara, pauzira ili grana.
Ključan dizajnerski odabir čini ovo mogućim: datotečni sustav. SPACE koristi btrfs kao datotečni sustav na čvoru za pohranu sandboxa. Btrfs (B-tree filesystem) kombinuje datotečni sustav s kopiranjem pri pisanju (copy-on-write) s integriranim upravljanjem logičkim volumenom. To donosi nekoliko prednosti:
Kopije referentnih poveznica (Reflink) brze su jer dijelite temeljne ekstente, tako da je potrebno kopirati samo metapodatke.
Snimke su atomske i brze jer jednostavno stvarate novi korijen.
Potrebno je minimalno prostora jer pohranjujete samo ono što se promijenilo.
Kao rezultat toga, sandboxovi se mogu brzo stvarati i vraćati. Umjesto stvaranja sandboxa od nule svaki put, održavamo topli bazen podova koji već imaju uobičajene predloške materijalizirane na disku, i udovoljavamo zahtjevu povezivanjem s podom čiji predložak već odgovara. Davanje vlastitog korijenskog datotečnog sustava s mogućnošću pisanja tom sandboxu tada je klon kopiranja pri pisanju umjesto potpune kopije. Kada nijedan topli pod ne odgovara, materijaliziramo predložak na zahtjev; spajamo istovremene zahtjeve za istu sliku u jedno preuzimanje, tako da nalet identičnih zahtjeva ne prelazi u nalet identičnog rada.
Rezultat je okruženje za izvršavanje sandboxa koje je u isto vrijeme moćno, lagano i nevjerojatno brzo. Kada smo uveli SPACE, pokrenuli smo ga uz našeg prethodnog pružatelja usluga sandboxa na istom produkcijskom prometu. Tijekom tjedna lansiranja, SPACE je stvarao sandboxove tri do pet puta brže kroz cijelu distribuciju. Konkretno, medijan latencije stvaranja pao je s 185 milisekundi na 60 milisekundi (poboljšanje 3,1x), a latencija u 90. percentile pala je s 447 milisekundi na 89 milisekundi (poboljšanje 5,0x). Primijetili smo slična poboljšanja reda veličine u drugim pokazateljima performansi i korištenja resursa.

Također olakšava izradu tekućih snimaka diska, budući da su brze, učinkovite s prostorom i ne zahtijevaju pauziranje sandboxa. Uz to, učinkovita delta pohrana smanjuje prostor potreban za pohranu ovih snimaka.
Zaključak
Pri dizajniranju složenih sustava, primamljivo je odabrati jedan cilj koji će se optimizirati izolirano. No, programeri naprednih agenata zahtijevaju sigurnost, funkcionalnost i učinkovitost u jednakoj mjeri. Sa sustavom SPACE, krenuli smo postići Pareto poboljšanje kroz sva tri stupa.
Svaki pojedinačni dizajnerski odabir može služiti višestrukim ciljevima istovremeno, čineći ovu delikatnu ravnotežu mogućom. VM-ovi po sandboxu daju svakom radnom opterećenju vlastitu jezgru, jačajući sigurnost kroz snažnu izolaciju, istovremeno pružajući čistu granicu kontrolne točke na koju se snimke oslanjaju. Btrfs omogućuje učinkovitu implementaciju snimanja, račvanja i drugih operacija bitnih za runtime okruženja agenata. Space daemon drži svu interakciju s gostom na kontroliranoj putanji na strani domaćina, zatvarajući granicu između gosta i domaćina uz očuvanje slobode kretanja agenata. Središnji mrežni pristupnik posreduje izlaz i ubacivanje vjerodajnica bez ikakvog izlaganja tajni gostu.
Rezultat ovih i drugih dizajnerskih odluka je platforma koja omogućuje orkestraciju agenata u stvarnom svijetu u velikom mjerilu. SPACE pruža podlogu na kojoj dugotrajni agenti sa stanjem mogu sigurno rješavati posao proizvoljne složitosti ili trajanja, bez žrtvovanja performansi ili sigurnosti.
Danas SPACE već pokreće milijune sesija Perplexity Computer. Namjeravamo da SPACE služi kao jedinstveni sloj za dodjeljivanje i kontrolu sandboxova u bilo kojem okruženju: od Linux microVM-ova do Windows gostiju ili vlastitog lokalnog stroja korisnika. Naporno radimo na uvođenju sustava SPACE u ova nova okruženja, kako bi programeri mogli isporučiti AI proizvode koji rade svgdje gdje rade korisnici.
Ako jedva čekate oblikovati računalni sloj koji pokreće današnje napredne agente, pozivamo vas da nam se pridružite.