Architecture
VulpineOS is a vertically integrated stack: a hardened Firefox engine at the bottom, a Go orchestration layer in the middle, and a Bubbletea TUI at the top. Everything communicates over the Juggler wire protocol.
System Overview
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Go Binary β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β TUI (Bubbletea) β β
β β 3-column workbench: agents, chat, detail β β
β ββββββββββββββββ¬βββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββΌβββββββββββββββββββββββββββββββ β
β β Orchestrator β β
β β ββββββββββββ¬βββββββββββ¬ββββββββββββββββββ β β
β β β Pool β Vault β OpenClaw Mgr β β β
β β β (contexts)β (SQLite) β (agent procs) β β β
β β ββββββββββββ΄βββββββββββ΄ββββββββββββββββββ β β
β ββββββββββββββββ¬βββββββββββββββββββββββββββββββ β
β β Juggler (FD 3/4 pipe) β
βββββββββββββββββββΌβββββββββββββββββββββββββββββββββ€
β ββββββββββββββββΌβββββββββββββββββββββββββββββββ β
β β Camoufox (Firefox 146.0.1) β β
β β β β
β β ββββββββββββββββββββββββββββββββββββ β β
β β β Juggler (automation layer) β β β
β β β Protocol.js Β· PageHandler.js β β β
β β β PageAgent.js Β· TargetRegistry β β β
β β ββββββββββββββββββββββββββββββββββββ€ β β
β β β VulpineOS Services β β β
β β β TelemetryService.js β β β
β β β TrustWarmService.js β β β
β β ββββββββββββββββββββββββββββββββββββ€ β β
β β β C++ Core Patches β β β
β β β action-lock.patch (nsDocShell) β β β
β β ββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββJuggler Protocol
Juggler is VulpineOSβs wire protocol β a JSON-RPC layer originally from Playwrightβs Firefox support, extended with VulpineOS-specific methods. It runs over a pipe (FD 3 for reading, FD 4 for writing) using null-byte delimited JSON frames.
Key domains:
- Browser β context management, telemetry, trust warming, cookie operations
- Page β navigation, snapshots, action lock, accessibility tree, optimized DOM
Context Pool
A single Firefox process hosts multiple browser contexts (isolated cookie/storage environments). The pool pre-warms 10 contexts on startup, supports up to 20 concurrent active contexts, and recycles each after 50 uses to prevent memory leaks. Each context costs roughly 10-15 MB.
Identity Vault
SQLite database at ~/.vulpineos/vault.db storing:
- Citizens β persistent identities with cookies, localStorage, fingerprint seeds
- Templates β reusable SOPs (Standard Operating Procedures) for agents
- Nomad Sessions β ephemeral throwaway identities
OpenClaw Integration
OpenClaw agents connect to the browser through VulpineOSβs MCP (Model Context Protocol) server. The MCP server translates tool calls like vulpine_snapshot and vulpine_click into Juggler protocol messages. This replaces Chrome entirely β agents use Camoufox without knowing it.
Remote Architecture
VulpineOS supports three modes:
- Local β TUI + kernel on the same machine (default)
- Server β kernel exposes a WebSocket endpoint (
--serve) - Client β TUI connects to a remote kernel (
--remote wss://...)
The remote relay multiplexes Juggler messages, control commands, and TUI state updates over a single authenticated WebSocket connection.