A self-hosted platform that runs multiple coding agents in parallel across your own cloud infrastructure, with a serverless control plane on Cloudflare and support for Claude, Gemini, Mistral, and other LLM-powered agents. Teams can manage agents via chat-first interface, linking GitHub repos and persisting conversation history at the project level.
Run multiple coding agents in parallel on your own cloud VMs.
README
What You Get
Agents in parallel, each in a real environment. Every agent runs in its own isolated Docker container on a VM you own — full Linux, Docker, and git, reachable from any browser. Run a handful or hundreds at once, each in a clean workspace.
Bring your own cloud. VMs are provisioned in your own Hetzner, Scaleway, or GCP account and billed directly to you. SAM never stores your cloud provider credentials as platform env vars — they're encrypted per-user. Your agents, your infra, your data.
Bring your own agent. Six harnesses work today: Claude Code, Codex, Gemini, Mistral, OpenCode, and Amp. Use your own API key, your OAuth/subscription token, or the platform proxy.
Chat-first, and it outlives workspaces. Link a GitHub repo, describe a task in natural language, and watch every tool call stream back. Conversations persist at the project level — stop a workspace, spin up a new one weeks later, and your full history is still there.
Serverless control plane. Self-hosted on Cloudflare ($5/mo Workers Paid plan) — the control plane provisions, schedules, and tears down workspaces with nothing to babysit. A workspace costs ~$0.007–0.03/hr compared to $0.18–0.36/hr on GitHub Codespaces.
How It Works
You: "Add rate limiting to the /api/upload endpoint"
|
Project Chat (app.{domain})
|
Cloudflare Worker API
|
TaskRunner -- alarm-driven orchestrator that:
1. Claims a warm node or provisions a new VM in your cloud
2. Creates a Docker workspace with your repo
3. Starts your chosen agent with the task description
4. Streams agent output back to project chat
|
Agent streams results back as it works
Architecture
| Layer | What | How |
|---|---|---|
| Control plane | API, auth, orchestration | Cloudflare Workers + D1 + KV + R2 |
| Real-time data | Chat messages, activity, sessions | Durable Objects with embedded SQLite (per project) |
| Compute | Workspaces running coding agents | VMs in your own cloud (Hetzner, Scaleway, or GCP) with a Go agent managing Docker containers, WebSocket terminal, and auth |
| Warm pool | Fast workspace starts | Completed VMs stay warm for 30 min for instant reuse |
The control plane is serverless — no servers to manage, no databases to back up. Compute scales to zero when you're not using it.
Repository Structure
apps/
api/ Cloudflare Worker API (Hono)
web/ Control plane UI (React + Vite)
www/ Marketing site, blog & docs (Astro + Starlight)
packages/
shared/ Shared types and utilities
providers/ Cloud provider abstraction (Hetzner, Scaleway, GCP)
cloud-init/ Cloud-init template generator
vm-agent/ Go VM agent (PTY, WebSocket, MCP tool endpoints)
ui/ Design system tokens and shared UI components
terminal/ Shared terminal component
For the full architecture with diagrams, see the Architecture Overview.
Quick Deploy
SAM deploys through the Deploy Production GitHub Actions workflow in your fork. Fork, configure the production environment, then run the workflow manually. For the complete setup guide with detailed steps and troubleshooting, see the Self-Hosting Guide.
Prerequisites
- A Cloudflare account (Workers Paid plan, $5/mo) with a token that includes Containers permission
- A domain with nameservers pointing to Cloudflare
- A GitHub App for OAuth + repo access
Steps
- Fork this repository
- Create a GitHub Environment named
productionin your fork's Settings > Environments - Add the required secrets (Cloudflare API token with
Containers: Edit, GitHub App credentials, etc. — see the Self-Hosting Guide for the full list) - Run Actions → Deploy Production → Run workflow on
main— GitHub Actions provisions all infrastructure, deploys the API + UI, runs migrations, and verifies health
To update an existing self-hosted instance, sync upstream changes into your fork's main branch, then manually run Deploy Production again.
Your instance is live at app.{your-domain}. Users sign in with GitHub and provide their own cloud provider API token (Hetzner, Scaleway, or GCP) to create workspaces.
Development
pnpm install # Install dependencies
pnpm build # Build all packages
pnpm test # Run tests
pnpm typecheck # Type check
pnpm lint # Lint
pnpm format # Format
Build packages in dependency order: shared > providers > cloud-init > api / web.
For local development details, see the Local Development Guide.
Documentation
Full documentation is available at simple-agent-manager.org/docs:
- Self-Hosting Guide — deploy your own instance
- Architecture Overview — how the system works
- Security Model — BYOC, encryption, credentials
- Local Development — contributing and development setup
License
Comments (0)
Sign in to join the discussion.
No comments yet
Be the first to share your take.