Open Managed Agents (OMA) is an open-source, self-hosted configurable harness platform for autonomous AI agents, inspired by Claude Managed Agents. It lets you create and run agents through a web UI or CLI with sandboxed Kubernetes environments, MCP tool servers, and agent skills, using your own hardware and your own LLM.
- Ubuntu 22.04+ (native or Windows WSL2)
- macOS: planned — contributions welcome
- opencode SDK — the default and currently only harness driver for the agent loop
Inspired by Claude's managed agent architecture, OMA separates concerns into three decoupled runtime components:
- Sandbox — an isolated K8s pod providing the execution environment (filesystem, shell, network). Sandboxes are created lazily on demand when a session starts.
- Harness Worker — a separate K8s pod running the agent loop (LLM calls, tool routing, turn management). Workers are kept in a warm pool so the first response has minimal cold-start latency.
- Session — binds an agent definition, a harness worker, and a sandbox together. The control plane manages the full lifecycle: creation, turn dispatch, and teardown.
On a fresh Ubuntu machine (or WSL2):
git clone <repo-url> open-managed-agents
cd open-managed-agents
bash scripts/install-dependencies.shcp .env.example .envEdit .env — fill in your LLM base URL and the models it supports:
OMA_LLM_PROVIDER=openai-compatible
OMA_LLM_BASE_URL= # e.g. http://localhost:1234
SUPPORTED_LLM_MODELS= # e.g. qwen2.5-7b-instruct,llama-3-8bpnpm install
npm run setupAfter setup completes, open http://localhost:3000/client.
- Go to the Client UI (
http://localhost:3000/client) - Create an Environment (defines the K8s pod runtime image)
- Create an Agent (set name, select model, write system prompt, pick skills & MCP servers)
- Create a Session (bind an agent to an environment)
- Click the session to open the chat interface
- Go to the Cluster Dashboard UI (
http://localhost:3000/dashboard) to view the real-time status of harnesses, sandboxes, and sessions in the cluster
pnpm --filter @oma/cli exec oma env create -f environment.json
pnpm --filter @oma/cli exec oma agent create -f agent.json
pnpm --filter @oma/cli exec oma session create --agent <agent_id> --env <environment_id>
pnpm --filter @oma/cli exec oma session chat <session_id>The CLI defaults to http://localhost:3000. Override with export OMA_API_URL=http://<host>:<port>.

