Capsule
One TypeScript interface to run agent code across Docker, Cloud Run, Vercel, and Neon, where every adapter declares exactly what it supports.
What it is
Capsule is a control plane for running agent code across cloud providers: sandboxes, jobs, services, edge functions, and database branches, behind one interface. It does not pretend every provider is the same; it makes their differences explicit.
The problem it solves
An agent platform, CI system, or preview controller that needs to run code across providers ends up writing custom glue for each one, and failing in confusing ways when a provider does not support an operation. Generic “universal cloud” abstractions hide those gaps until they break in production.
How it works
Capsule defines small contracts per runtime domain. Each adapter declares its support level for every capability (native, emulated, experimental, or unsupported), and an unsupported call throws a clear error instead of failing silently. Policy (env, secrets, timeouts, filesystem and network limits) is evaluated before execution, and each run emits a receipt: provider, adapter, support level, SHA-256 output hashes, timing, and resource IDs, written as JSONL or to SQLite.
Where it fits
Capsule is the execution substrate an agent platform calls to actually run something, and the receipt it gets back is the evidence other trust layers (OAPS, FIDES, Sardis) can reference. It complements provider SDKs rather than replacing them: use the SDK directly for one provider, use Capsule when you operate across several and need to prove what ran.
Status
Core types, contracts, policy, receipts, and the CLI are working. Docker and Neon adapters are complete with live tests; Vercel and Cloudflare edge adapters are implemented; Cloud Run, Kubernetes, Lambda, ECS, Azure, and Fly cover jobs and services. Cross provider preview composition is specified but not yet run end to end.