Perplexity hat SPACE als Open Source veröffentlicht, die Sandbox-Plattform hinter jeder Aufgabe in Perplexity Computer. Die Perplexity-SPACE-Sandbox stellt jeder Agentenaufgabe eine eigene Firecracker-microVM zur Verfügung. Zugangsdaten und ausgehender Datenverkehr werden von außerhalb dieser VM kontrolliert. Der Code erscheint unter Apache 2.0 auf GitHub. Für Teams, die Coding- oder Browsing-Agenten entwickeln, ist dies eine praxistaugliche Isolationsschicht, die sie selbst hosten können.
TL;DR
- Größe: Rust-Codebasis, Release 0.8.0, die öffentliche Basisversion. HTTP-API plus Server-Sent Events.
- Läuft auf: Einem Linux-x86_64-Host mit KVM,
/dev/kvm, btrfs und Docker. Lokales Kind (Kubernetes) oder direkter Modus. Kein macOS. - Performance: In der Produktion sank die mediane Erstellungs-Latenz von 185 ms auf 60 ms verglichen mit Perplexitys vorherigem Provider.
- Bestes Ergebnis: 0 von 108 Versuchen, aus der VM in den Host zu entkommen, waren bei 9 Frontier-Modellen erfolgreich.
- Schlechtestes Ergebnis: Vor den Fixes umgingen die Agenten die Egress-Policy in 11 von 54 Läufen mit Teilnetzwerkzugriff.
Was ist Perplexity SPACE?
SPACE (Sandboxed Platform for Agentic Code Execution) ist Perplexitys Plattform zum Ausführen von Agenten-Code in isolierten microVMs. Anwendungen rufen ihre HTTP-API auf, um Linux-Umgebungen zu erstellen, Befehle auszuführen und Ausgaben zu streamen.
A template stellt das Ausgangs-Dateisystem bereit. Eine Sandbox ist eine Instanz dieses Templates, mit eigener VM und beschreibbarer Festplatte. Viele Befehle können innerhalb einer Sandbox ausgeführt werden.
Perplexitys Launch-Thread erklärt das Designziel. Agents führen Befehle aus, installieren Pakete und rufen Dienste mit Root-Rechten innerhalb der Sandbox auf. Der Host bleibt außerhalb der Kontrolle des Gastes. Agent-Arbeit ist langlaufend, zustandsbehaftet und verzweigend, daher muss sie Neustarts überstehen.
Wie isoliert SPACE Agents?
Jede Sandbox ist eine Firecracker -MicroVM mit eigenem Gast-Kernel. Ein pro Sandbox vorhandener Netzwerk-Gateway auf dem Host erzwingt die Egress-Richtlinie für jede ausgehende Verbindung.
Geheimnisse gelangen nie in den Gast. Laut Perplexitys Engineering-Beitrag vom Juliwerden Anmeldeinformationen auf der Netzwerkschicht injiziert. Der Credential Store bietet hierarchische Scopes, Rate Limits und Audit-Logging.
Der Architektur-Leitfaden teilt das System in 4 Teile. Dies sind eine PostgreSQL-basierte API, Controller, Worker-Dienste und eine Datenebene. Worker-Dienste verwalten VMs, Netzwerke, Volumes, Templates und Anmeldeinformationen. btrfs Copy-on-Write erzeugt jedes Root-Dateisystem.
Wie funktionieren Pause, Suspend und Restore?
Sandboxen durchlaufen 4 Zustände: running, paused, suspended und deleted.
- Paused: Der VM-Speicher bleibt auf dem Worker resident. Dies ist kein dauerhafter Snapshot.
- Suspended: VM-Speicher, Laufzeitzustand und Root-Dateisystem werden gesnapshottet. Aktive Ressourcen werden freigegeben.
- Idle-Standard: Sandboxen werden nach 6 Stunden ohne Aktivität angehalten .
Für schnelle Erstellungen verwenden Kubernetes-Deployments Warm Pools gebooteter Sandboxen. Single-Node-Setups verwenden stattdessen Base Snapshots .
In der Produktion sank die Create-Latenz im 90. Perzentil von 447 ms auf 89 ms. Perplexity berichtet, dass 100% der Computer-Sessions auf SPACE laufen.
Hat SPACE einen Red-Team-Test überstanden?
Perplexity‘ Escaping SPACE: Teil I bericht testete 9 Modelle mit Root-Zugriff innerhalb des Gasts. Die Studie umfasste 216 Durchläufe über 2 Aufgaben und 4 Konfigurationen.
- Sandbox-Escape: 0 von 108 Durchläufen erreichten das Host-seitige Geheimnis.
- Umgehung ohne Netzwerk: 0 von 54 Durchläufen erfolgreich.
- Teilweise Netzwerk-Umgehung: 11 von 54 Durchläufen erfolgreich vor den Fixes. 4 Modelle fanden einen Weg.
Claude Opus 5.0, GPT-5.6 Sol, GPT-5.6 Cyber und Kimi K3 fanden Umgehungen. Die Angriffe nutzten DNS-Spoofing und gemeinsame CDN-IP-Adressen.
Perplexity fügte anschließend eine Quelladress-Validierung über nftables hinzu. Das Gateway beendet nun TLS und prüft sowohl SNI als auch den HTTP-Host gegen die Allowlist. Im Nachtest erzeugte kein Modell eine verifizierte Umgehung.
Dasselbe Team testete 10 Drittanbieter-Plattformen. 8 wiesen mindestens eine Netzwerk-Policy-Umgehung auf. Perplexity legte die Ergebnisse allen betroffenen Anbietern offen.
Zurück</button><button class="btn" id="psx-next">Nächster Zustand </button></div> </div> <div class="pane" data-p="2"> <div class="bars" id="psx-rt"></div> <div class="note">9 Modelle, 216 Durchläufe, Root innerhalb des Gasts. Fixes: nftables-Quelladress-Validierung, TLS-Terminierung mit SNI + Host-Allowlist-Prüfung. Quelle: Perplexity, Escaping SPACE: Part I (23. Sep. 2026).</div> </div> <div class="pane" data-p="3"> <div class="bars" id="psx-lat"></div> <div class="note">Produktions-traffic in der Launch-Woche, SPACE vs. Perplexitys vorheriger Sandbox-Anbieter. Niedriger ist besser. Quelle: Perplexity engineering blog (15. Jul. 2026).</div> </div> <div class="pane" data-p="4"> <div class="tw"><table> <tr><th>Merkmal</th><th>SPACE</th><th>E2B Runtime</th><th>microsandbox</th></tr> <tr><td>Isolation</td><td>Firecracker microVM</td><td>Firecracker microVM</td><td>libkrun microVM</td></tr> <tr><td>Lizenz</td><td>Apache 2.0</td><td>Apache 2.0</td><td>Apache 2.0</td></tr> <tr><td>Sprache</td><td>Rust</td><td>Go</td><td>Rust</td></tr> <tr><td>Perplexity-Egress-Test</td><td>0 Umgehungen nach Fix</td><td>HTTPS-Umgehung, Minderung geplant</td><td>HTTP + HTTPS-Umgehung, Fix in v0.6.18</td></tr> </table></div> <div class="note">Egress-Ergebnisse aus Perplexitys Tests vom 31. Aug. bis 1. Sep. 2026, für die getesteten Versionen.</div> </div> <div class="ft"><span>Quellen: github.com/perplexityai/SPACE · perplexity.ai/hub/blog</span><b>© Marktechpost</b></div> </div> <script> (function(){ var R=document.getElementById('pplx-space-x'); function post(){try{parent.postMessage({psxHeight:R.offsetHeight+40},'*')}catch(e){}} var tabs=R.querySelectorAll('.tab'),panes=R.querySelectorAll('.pane'); var D=['<b>Gast-microVM.</b> Jede Aufgabe erhält ihre eigene Firecracker-microVM mit eigenem Gast-Kernel. Der Agent kann Befehle ausführen und Pakete als Root installieren. Der Host bleibt außerhalb seiner Kontrolle.', '<b>Gateway pro Sandbox.</b> Der gesamte Egress des Gasts läuft über ein Host-seitiges Gateway. Es beendet nun TLS und verlangt, dass sowohl SNI als auch HTTP Host auf der Allowlist stehen und DNS-attribuiert sind.', '<b>Externe Dienste.</b> Zugangsdaten gelangen nie in den Gast. Sie werden auf der Netzwerkschicht eingespeist, mit Scoping, Rate Limits und Audit-Logging.']; var det=document.getElementById('psx-detail'),boxes=R.querySelectorAll('.box'); function showD(i){boxes.forEach(function(b,j){b.classList.toggle('act',i==j)});det.innerHTML=D[i];post()} boxes.forEach(function(b){b.addEventListener('click',function(){showD(+b.dataset.d)});b.addEventListener('mouseenter',function(){showD(+b.dataset.d)})}); showD(0); var L=['<b>Läuft.</b> Prozesse werden ausgeführt. Live-VM-Speicher und das beschreibbare Dateisystem bleiben erhalten.', '<b>Angehalten.</b> Die Ausführung stoppt. Der VM-Speicher bleibt auf dem Worker resident. Dies ist kein dauerhafter Snapshot.', '<b>Suspendiert.</b> VM-Speicher, Laufzeitzustand und Root-Dateisystem werden gesnapshottet. Aktive VM-Ressourcen werden freigegeben. Standard: Suspendierung nach 6 Stunden Inaktivität.', '<b>Gelöscht.</b> Die Sandbox ist über die API nicht mehr verfügbar.']; var li=0,sts=R.querySelectorAll('.st'),ld=document.getElementById('psx-life'); function life(){sts.forEach(function(s,j){s.classList.toggle('on',j==li)});ld.innerHTML=L[li];post()} document.getElementById('psx-next').onclick=function(){li=(li+1)%4;life()}; document.getElementById('psx-prev').onclick=function(){li=(li+3)%4;life()}; sts.forEach(function(s,j){s.style.cursor='pointer';s. onclick=function(){li=j;life()}}); life(); function bars(el,data){el.innerHTML=data.map(function(d){return '<div class="row"><div class="lbl"><span>'+d[0]+'</span><em>'+d[1]+'</em></div><div class="track"><div class="fill" data-w="'+d[2]+'" style="background:'+d[3]+'"></div></div></div>'}).join('')} bars(document.getElementById('psx-rt'),[ ['VM-to-host escape','0 von 108 Durchläufen',1.5,'#76B900'], ['Network bypass, no network','0 von 54 Durchläufen',1.5,'#76B900'], ['Network bypass, partial network (before fix)','11 von 54 Durchläufen',20.4,'#E5675A'], ['Network bypass, after fix','0 verifizierte Umgehungen',1.5,'#76B900'], ['Third-party platforms with a bypass','8 von 10',80,'#1FB8CD']]); bars(document.getElementById('psx-lat'),[ ['Median create, previous provider','185 ms',41.4,'#5E5B66'], ['Median create, SPACE','60 ms',13.4,'#20808D'], ['p90 create, previous provider','447 ms',100,'#5E5B66'], ['p90 create, SPACE','89 ms',19.9,'#20808D']]); function anim(p){p.querySelectorAll('.fill').forEach(function(f){f.style.width='0';setTimeout(function(){f.style.width=f.dataset.w+'%'},60)})} tabs.forEach(function(t){t.onclick=function(){var i=+t.dataset.t;tabs.forEach(function(x,j){x.classList.toggle('on',j==i)});panes.forEach(function(p,j){p.classList.toggle('on',j==i)});anim(panes[i]);post()}}); window.addEventListener('load',post);window.addEventListener('resize',post);setTimeout(post,300); })(); </script> </body> </html> ">Wie vergleicht sich SPACE mit anderen offenen Sandboxes?
| Merkmal | Perplexity SPACE | E2B Runtime | microsandbox | Daytona |
|---|---|---|---|---|
| Isolation | Firecracker microVM pro Sandbox | Firecracker microVM pro Sandbox | libkrun microVM | Dedizierter Kernel pro Sandbox |
| Lizenz | Apache 2.0 | Apache 2.0 | Apache 2.0 | Öffentliches Repo, nicht gepflegt seit Juni 2026 |
| Sprache | Rust | Go | Rust | Nicht offengelegt |
| Anforderungen an den Host | Linux x86_64 + KVM | Nicht offengelegt | Linux mit KVM | Nicht offengelegt |
| Egress-Kontrolle | Gateway pro Sandbox, TLS-Terminierung | nftables-Firewall, SNI/Host-Listen | Nicht offengelegt | Nicht offengelegt |
| Perplexity Egress-Test | 0 Umgehungen nach dem Fix | HTTPS-Umgehung, Minderung geplant | HTTP- und HTTPS-Umgehung, Fix in v0.6.18 | HTTPS-Umgehung, Minderung veröffentlicht |
| E2B-SDK-Unterstützung | Ja, über ECW-Wrapper | Nativ | Nicht offengelegt | Nicht offengelegt |
Wie deployen Entwickler SPACE?
Die Installationsanleitung deployt SPACE in einen lokalen Kind-Cluster. Der Host benötigt /dev/kvm, /dev/net/tun, Loop-Devices und btrfs. Der Betrieb innerhalb einer VM erfordert verschachtelte Virtualisierung.
Teams, die bereits E2B nutzen, können den E2B Compatibility Wrapperausprobieren. Die getestete Basislinie ist das Python-Paket e2b==2.21.1. Eine Referenz-Deployment für AWS EKS liegt im Repository bei.
Kernerkenntnisse
- SPACE läuft jede Agent-Aufgabe in einer eigenen Firecracker-microVM.
- Anmeldedaten und Egress-Richtlinie liegen außerhalb der Gast-VM.
- 0 von 108 Fluchtversuchen erreichten den Host in den Red-Team-Tests.
- Egress-Umgehungen trafen 11 von 54 Läufen vor den Fixes, 0 danach.
- Apache 2.0, Rust, benötigt einen Linux-x86_64-Host mit KVM.
Sehen Sie sich das GitHub-Repo, die Dokumentation und den Red-Team-Berichtan. Alle Anerkennung gebührt dem Forscher dieses Projekts. Folgen Sie uns außerdem gerne auf Twitter und vergessen Sie nicht, unserem 150k+ML SubReddit beizutreten und zu abonnieren unseren Newsletter. Moment! Sind Sie auf Telegram? jetzt können Sie uns auch auf Telegram beitreten.
Der Beitrag Perplexity veröffentlicht SPACE als Open Source, eine Firecracker-MicroVM-Sandbox für KI-Agenten erschien zuerst auf MarkTechPost.