De omgeving waarin een agent draait
Uiteindelijk is dit gunstig voor de klant, omdat de bedrijven achter deze agents nu VM's (Virtual Machines) leveren waarin de agents kunnen draaien. Hieronder volgen enkele aantekeningen over hoe de grote platforms werken, gebaseerd op onderzoek via ws-term.
Claude Code op je telefoon
De omgeving van Claude Code is een eigen Firecracker microVM; een KVM-guest met een eigen kernel die direct opstart in een in Rust geschreven init:
$ cat /proc/cmdline
... rdinit=/process_api ... --listen-vsock-port 2024
$ uname -r
6.18.5-fc-v20 # -fc- staat voor Firecracker; een custom-built guest kernel
$ ps -o comm -p 1
process_api # PID 1 is geen systemd, maar een Rust/Tokio binary
processapi is PID 1 en fungeert als de control agent van de host binnen de VM: het mount de schijven en luistert vervolgens op vsock-poort 2024, zodat de host de sessie van buitenaf kan aansturen. Dit is het kenmerkende eigenschap van het platform: de operator bevindt zich in de tenant-ruimte van de gebruiker. Er is veel engineering gedaan om dit af te schermen (PID 1 is non-dumpable, /proc/1/mem wordt geweigerd, zelfs met CAPSYSPTRACE, en de shell mist CAPSYS_RESOURCE).
De schijven zijn strikt gescheiden in gebruikersschijven (beschrijfbaar, persistent) en platformschijven (alleen-lezen, gedeeld):
$ lsblk -o NAME,SIZE,RO,MOUNTPOINT
vda 256G 0 / # van de gebruiker: beschrijfbaar, blijft behouden na reclaim
vdc 341M 1 /opt/claude-code # van het platform: de 324 MB `claude` harness (Bun)
vdd 45.6M 1 /opt/env-runner # van het platform: de task launcher
vde/vdf ... 1 /mnt/skills/... # van het platform: skills
De harness is het onderdeel dat de tool-aanroepen uitvoert; dit is een gecompileerd Bun-binair bestand van 324 MB op een schijf die alleen gelezen kan worden. Het model zelf draait elders. De inferentie verloopt via Server-Sent Events (SSE) over HTTPS/2 (geen WebSocket) naar /v1/messages, via een egress gateway die alleen poort 443 toestaat en gebruikmaakt van MITM (CN = Egress Gateway ... (production)), waarbij api.anthropic.com is vastgelegd in /etc/hosts. Er is geen inkomend verkeer mogelijk (gebruikmakend van 192.0.2.2, een RFC-5737 testadres). Authenticatie gebeurt via een door de host gegenereerd OAuth-token, dat root-only op de schijf is gecached en bij elke boot wordt geroteerd.
De levenscyclus wordt door de host aangestuurd en is van binnenuit meetbaar: circa 430 ms voor de init en 6,4 s voor het harness-proces. De spin-up wordt getriggerd door een inkomend bericht (de host wekt de VM via vsock en voert --session-mode resume uit); de spin-down is een idle reclaim die door de host wordt beslist. Wanneer de VM wordt teruggevorderd, sterven de processen, maar vda blijft intact en wordt bij de volgende koude start opnieuw gekoppeld. Hierdoor voelt het gesprek continu aan, ook al is de compute-omgeving vernietigd.
Instinct
Instinct is een onlangs gelanceerde startup die interessante oplossingen biedt voor het geheugenbeheer, waardoor het aanvoelt als een echte assistent in plaats van een chatbot.
$ hostname
e2b.local
$ cat /.e2b
n038afjvewg7jnc9pwdz
e2b.local geeft aan dat Instinct geen eigen VM-vloot beheert, maar E2B-sandboxes huurt ("sandbox-as-a-service"). Dit is een tijdelijke Ubuntu-box die aan een agent wordt toegewezen:
- Specificaties: Ubuntu 22.04.5, 2 vCPU, 1,9 GB RAM, 29 GB schijfruimte, uptime ~30 min, gebruiker
sandbox(uid 1001).
Kijken we onder de motorkap:
$ systemd-detect-virt → kvm
$ cat /proc/cmdline
pci=off virtio_mmio.device=4K@... i8042.noaux i8042.nokbd reboot=k panic=1
clocksource=kvm-clock root=/dev/vda ip=169.254.0.21::...:eth0:off:tap0
$ cat /sys/class/dmi/id/product_name → (empty) # geen SMBIOS aanwezig
$ ps -o comm -p 1 → systemd # init=/sbin/init, geen custom PID 1
Ook hier wordt Firecracker gebruikt. De combinatie van pci=off, virtio-over-MMIO, een lege DMI en tap0-netwerking is het kenmerk van Firecracker: geen PCI-bus, geen SMBIOS en minimale apparaten. Beide applicaties draaien dus op dezelfde microVM; het verschil zit in wie de vloot beheert en wat erin opstart. Waar Claude Code een gestripte custom init opstart (process_api als PID 1), start E2B een volledige Ubuntu met systemd en een XFCE-desktop:
$ systemd-analyze
Startup finished in 265ms (kernel) + 992ms (userspace) = 1.258s
graphical.target reached after 977ms
Het duurt ongeveer 1,26 s om volledig koud te starten tot aan een grafische desktop. Ook hier is er een operator in de guest, maar dit is simpelweg E2B's envd die draait als een gewone systemd-service, en niet als een afgeschermde PID 1. E2B-sandboxes zijn configureerbaar (vCPU, RAM, schijfruimte, idle-timeout en de optie om te pauzeren en te hervatten vanuit een memory snapshot in plaats van een koude start). Instinct gebruikt een bescheiden template van 2 vCPU / 1,9 GB desktop.
Het geheugenmodel van Instinct
Als de box wegwerpbaar is, waar leeft het geheugen van de agent dan? In een directory genaamd /memory. Dit is het kernidee van het platform:
$ cat /memory/README.md
Persistent memory for [[rohan-adwankar]]
$ ls /memory
entities/ comms/ timeline/ workstreams/ knowledge/
$ git -C /memory log --format='%an <%ae>' -1
Instinct Agent <agent@instinct.com>
Het geheugen van de agent is een git-repository van Markdown-bestanden met [[wiki-links]], die doorzocht worden met grep. De timeline/ wordt na verloop van tijd grover (ruw → per uur → per dag → per week, vergelijkbaar met het menselijk geheugen). De agent is letterlijk de git-auteur: hij roept geen memory-API aan, maar schrijft Markdown en commit dit onder eigen naam.
De duurzame laag is deze repository, die naar S3 wordt gepusht, gekoppeld aan een per-gebruiker ID. Deze wordt niet als losse bestanden opgeslagen, maar als één enkel git-bundle:
$ git -C /memory remote -v
origin s3://instinct-prod-agent-memory/filesystem-memory/user-01M1VW7...
$ aws s3 ls s3://.../user-01M1VW7.../ --recursive
HEAD
refs/heads/main/<sha>.bundle # De gehele vault, gepakt
Authenticatie gebeurt via kortstondige STS-credentials in plaats van permanente keys, waardoor een gelekte sandbox zichzelf "herstelt" zodra het token verloopt:
$ cat /etc/instinct-aws-creds
export AWS_ACCESS_KEY_ID='ASIA…' # ASIA prefix + session token = tijdelijke STS
De structuur van de vault ziet er als volgt uit:
comms/: chat, e-mail, meetings (één bestand per thread).entities/: mensen, projecten (de 'zelfstandige naamwoorden' van de wereld van de gebruiker).knowledge/: feiten, procedures, voorkeuren, beslissingen.timeline/: chronologisch verslag (ruw → uur → dag → week → maand).workstreams/: actieve, voltooide en toekomstige taken.
Uitvoering en Tools
Terwijl de harness van Claude Code in de VM open source is, werkt Instinct anders. Er zijn geen inferentie-aanroepen op de box zelf:
$ ps -eo args | grep -E 'agent-exec|tools'
agent-exec-server --port 8080 # Go, voert de bash/code uit die het ontvangt
tools __internal_daemon --socket /tmp/.tools/bridge.sock \
--base-url https://api.instinct.com/-/api/graphql/tool-execute # Rust
Er zijn geen modellen vermeld in de binary's. Claude Code sluit de operator op in de guest; Instinct plaatst het "brein" helemaal niet in de guest. De sandbox is een puur uitvoeringsvlak: agent-exec-server voert de bash uit die de backend aanlevert, en elke tool-aanroep (Gmail, cloudbrowser, betaling) vertrekt als een GraphQL-verzoek naar api.instinct.com en wordt server-side uitgevoerd.
Voor de tool-interface gebruikt Instinct een CLI in plaats van MCP's. De tools --help output onthult dat dit geen coding sandbox is, maar een tool-interface met circa 50 namespaces (Gmail, Notion, Slack, Stripe, etc.).
Het meest onthullende onderdeel is de cloud_browser:
$ tools --help | grep -iE 'cloud_browser|vault'
cloud_browser (27) Drive a cloud-hosted Chrome lease with the user's saved logins.
cloud_browser_scheduler (4) acquire, list, release, extend leases
vault (7) Manage, fill, and import the user's stored credentials
Wanneer Instinct voedsel bestelt of een vlucht boekt, opent hij geen browser in de sandbox. Hij huurt een browser uit een aparte pool van cloudbrowsers, elk met het opgeslagen profiel van de gebruiker (cookies en logins), en bestuurt deze via de api.instinct.com bridge.
De browser-identiteit is hiermee het derde duurzame onderdeel (naast de S3-vault en de observatie-index). Dit stelt de wegwerpbare box in staat om een browser te lenen voor één taak en deze daarna terug te geven. Twee details zorgen ervoor dat er nooit geheimen op de box terechtkomen:
- Scouting:
tools browser_guidance searchgeeft gecureerde per-site notities en eerdere resultaten per profiel terug. - The Vault: Geheimen gaan via de Vault, nooit via de chat.
tools vault filltypt een opgeslagen inloggegeven direct in de pagina.
Samenvatting
| Kenmerk | Claude Code | Instinct |
|---|---|---|
| Isolatie-primitief | Firecracker microVM (KVM) | Firecracker microVM (KVM) |
| Beheer vloot | Anthropic (eigen) | E2B (gehuurd, derde partij) |
| Guest in VM | Gestripte custom init (process_api) | Volledige Ubuntu + systemd + XFCE desktop |
| Koude start | ~430 ms init, ~6,4 s naar harness | ~1,26 s naar grafische desktop |
| Wat is duurzaam | De machine (vda block volume) | Een git-repo in S3 |
| Geheugenmodel | Conversatie-status op schijf | Markdown vault, git-versioned, agent-authored |
| Credentials | Host-minted OAuth, op schijf, geroteerd | Kortstondige STS, role-scoped |
| Backing store | Local virtio-block | S3, gekoppeld aan per-gebruiker id |
| Locatie harness | Op de box (324 MB Bun binary) | Buiten de box; box bevat twee execution shims |
| Toegang model | SSE naar /v1/messages via egress gateway | Nooit vanaf de box; GraphQL naar api.instinct.com (server-side) |
Groetjes,