The open-source multi-agent management platform for your machine.
English Β· δΈζ
You've got OpenClaw running your chatbots. Claude Code writing your code. DeerFlow doing deep research. Hermes thinking for you. Each one needs its own port, its own API key, its own runtime, its own process.
Right now? They're all loose cannons. Scattered terminals. Forgotten processes. API keys in plaintext files. Port collisions at 2 AM. One agent crashes and you don't notice for hours.
Your Mac is a Wild West saloon. Every agent is a gunslinger. Nobody's in charge.
Stable (马ε©) is the stable for your AI agents. One dashboard. One command center. Every agent accounted for.
Think of it as:
- Docker Compose β but for AI agents, not containers
- pm2 β but with GUI, API key management, and per-agent isolation
- A mission control center β for the AI startup team living inside your Mac
No Docker. No Kubernetes. No cloud dependency.
Just your Mac, your agents, and a beautiful dashboard.
| Feature | Description |
|---|---|
| π― One-Click Spawn | Create agent instances from built-in recipes. OpenClaw, Hermes, Claude Code, DeerFlow β ready in seconds. |
| π Port Management | Auto-allocate ports. No more EADDRINUSE at 2 AM. |
| π API Key Vault | Centralized key management with feed bindings. One key, many agents β safely. |
| π‘οΈ Process Isolation | Each agent lives in its own Paddock β separate env, separate runtime, separate workspace. |
| π Real-time Dashboard | See every agent's status, resource usage, and logs. Beautiful dark-themed UI. |
| π₯οΈ CLI + GUI | Full-featured CLI for scripts, gorgeous dashboard for humans. Use both. |
| π Crash Recovery | Auto-restart on failure (up to 3 attempts). Your agents don't stay down. |
| π Native Security | No Docker overhead. Native processes with filesystem scope isolation. |
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Stable Dashboard β
β (Next.js + React + shadcn/ui) β
ββββββββββββββ¬βββββββββββββ¬ββββββββββββββββββββββββ€
β Recipes β Instances β Feed Bin β
β (Blueprint)β (Running) β (API Key Pool) β
ββββββββββββββ΄βββββββββββββ΄ββββββββββββββββββββββββ€
β Core Engine (TypeScript) β
β Process Manager Β· Port Allocator Β· Config Mgr β
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Paddock Isolation Layer β
β .mise.toml Β· .env Β· workspace/ Β· logs/ β
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β SQLite (WAL) β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
| Pillar | Name | Purpose |
|---|---|---|
| π Paddock | Isolation | Each instance gets its own directory with runtime config, env vars, and workspace |
| πͺ Reins | Permissions | Filesystem scope control β paddock-only, workspace, or home access |
| πΎ FeedBin | Token Management | Bind API keys to instances with exclusive/shared/unlimited sharing modes |
# Clone
git clone https://github.com/cloudyview/stable.git
cd stable
# Install
npm install
# Initialize
npm run stable -- init
# Start the dashboard
npm run dev
# β Open http://localhost:3000That's it. You're running Stable.
# See what's available
npm run stable -- recipes
# Spawn an agent
npm run stable -- create openclaw my-claw-1
npm run stable -- create deerflow deep-research
# Life cycle
npm run stable -- start my-claw-1
npm run stable -- stop my-claw-1
npm run stable -- restart my-claw-1
# Observe
npm run stable -- list
npm run stable -- status my-claw-1
npm run stable -- logs my-claw-1
npm run stable -- system
# API keys
npm run stable -- keys add anthropic sk-ant-xxx "My Key"
npm run stable -- keys
npm run stable -- keys rm <key-id>
# Cleanup
npm run stable -- delete my-claw-1| Agent | Category | Mode | Description |
|---|---|---|---|
| π¦ OpenClaw | Messaging | Daemon | Personal AI assistant gateway β 20+ messaging platforms |
| π§ Hermes Agent | General | Daemon | Self-evolving AI agent with persistent memory + skill system |
| π€ Claude Code | Coding | Task | Anthropic's CLI coding agent |
| π¦ DeerFlow | Research | Daemon | ByteDance's Super Agent framework β deep research & coding |
More recipes coming. Or write your own β it's just a TypeScript object.
Every CLI operation has a REST equivalent. Build your own tools on top.
GET /api/instances # List all instances
POST /api/instances # Create instance
GET /api/instances/:id # Get instance details
DELETE /api/instances/:id # Delete instance
POST /api/instances/:id/start # Start instance
POST /api/instances/:id/stop # Stop instance
POST /api/instances/:id/restart # Restart instance
GET /api/instances/:id/logs # Get logs (supports SSE)
GET /api/recipes # List all recipes
GET /api/system # System resource info
GET /api/keys # List API keys
POST /api/keys # Add API key
DELETE /api/keys?id=<key-id> # Delete API key| Layer | Tech |
|---|---|
| Frontend | Next.js 16, React 19, Tailwind CSS 4, shadcn/ui |
| Backend | Next.js API Routes (Server Actions) |
| Database | SQLite (better-sqlite3, WAL mode) |
| Process | Node.js child_process + mise for runtime isolation |
| Language | TypeScript 5 (strict mode, zero any) |
Zero Docker. Zero containers. Zero cloud. Native processes on your Mac.
- Dashboard with real-time agent status
- CLI tool (14 commands)
- REST API (10 endpoints)
- Recipe β Instance system
- API Key management (FeedBin)
- Process lifecycle (start/stop/restart/crash recovery)
- 4 built-in recipes
- Agent installation automation (git clone + build + verify)
- Agent health monitoring (HTTP health checks)
- Token usage tracking & budget alerts
- Agent-to-agent communication bus
- Real-time log streaming in dashboard
- ToolShed β centralized MCP Server management
- Agent marketplace β community recipes
- Multi-machine support (SSH remote agents)
- Permission sandboxing (macOS sandbox-exec)
- Plugin system
We welcome contributions! Especially:
- New Recipes β Got an agent you love? Write a recipe for it.
- UI Improvements β The dashboard can always be prettier.
- Bug Fixes β Found something broken? Fix it.
- Documentation β Help others understand how to use Stable.
MIT License. Use it, fork it, build on it. Just give credit where it's due.
Every AI agent deserves a stable home.
β Star this repo Β· π Report Bug Β· π‘ Request Feature