Skip to main content
AgentOS is a secure, scalable platform for running agents. The agentos-docker codebase runs AgentOS locally using Docker and deploys to production on self-hosted Docker. It comes with:
  • 2 platform agents that build and run the platform for you. Agent Builder creates agents, teams, and workflows. Platform Manager monitors and manages the platform.
  • 5 skills that let coding agents build, test, and improve the platform for you.
Because the trace data, agent code, evals, and system logs all live in one place, the platform can inspect and improve itself automatically. Production is the same Docker Compose you run locally plus one override file, on any host you control: a VPS, a home server, an office box, this laptop.

Get started

The fastest way to get started is using a coding agent. Copy the prompt below into Claude Code, Cursor or Codex and it’ll take you from zero to a running platform.
Prefer to drive yourself? Follow the manual steps below.

Manual setup

Prerequisites: Docker installed and running. An OpenAI API key.
1

Clone and configure

Edit .env and set OPENAI_API_KEY.
2

Start the platform

The first build takes a few minutes. Confirm the API is available at localhost:8000/docs.
3

Verify end to end

Prints MCP OK with the tool count and a real agent answer through the MCP endpoint.
4

Connect the AgentOS UI

  1. Open os.agno.com and sign in.
  2. Click Connect OS, enter http://localhost:8000, and name it Local AgentOS.
5

Build your first agent

  1. Chat with Agent Builder: “Build an agent that tracks AI news and writes a daily brief”. Go through the agent development process.
  2. Once created, click Refresh on the top right, pick the new agent from the Agents dropdown, and ask: “What’s new with Anthropic?”
  3. Ask Platform Manager: “How healthy is the platform?” It answers from eval history, deployment checks, schedules, and the agent you just built.
At this point, your AgentOS is running locally.

Connect your frontends

FrontendHow
MCP clients on your machineuvx agno connect auto-detects Claude Code, Claude Desktop, Codex, and Cursor and registers http://localhost:8000/mcp. Verify from the app: “can you access my agentos mcp?”
AgentOS UIos.agno.comConnect OShttp://localhost:8000.
claude.ai and ChatGPTHosted sessions can’t reach localhost. Run in production first, then add https://<your-public-url>/mcp as a custom connector and approve the consent page with the MCP_CONNECT_SECRET you set in .env.
SlackSet SLACK_BOT_TOKEN and SLACK_SIGNING_SECRET. See Slack setup.
Your productCall the AgentOS REST API with 80+ endpoints. Browse them at /docs.

Run in production

Prerequisites: a host with Docker Compose v2.24.4 or newer (the prod override uses the !reset and !override merge tags), and a way for the internet to reach port 8000 on it: a domain with a reverse proxy, or a tunnel.
1

Get a public URL

The platform needs a public HTTPS URL for two things: hosted chat apps reaching /mcp, and AGENTOS_URL, the address the platform advertises as its own. Any of these work:
For a first run, an ephemeral cloudflared or ngrok URL is fine. For a real deployment, use something stable: a named Cloudflare tunnel, a reserved ngrok domain, or your own domain in front of a reverse proxy (Caddy, nginx) that forwards to port 8000.
2

Set up your production env

Production values live in .env on the host, the same file Compose already reads:
AGENTOS_URL is the address the platform advertises as its own. Left unset, the daily deployment check flags the platform as misconfigured, and chat-app connectors have nothing to point at. MCP_CONNECT_SECRET turns /mcp into its own OAuth 2.1 authorization server so claude.ai and ChatGPT on the web can connect; connecting asks for this secret once, on a consent page. It needs AGENTOS_URL for a stable public origin, and because dev reads the same .env, it gates the local /mcp too. PAT and JWT bearers keep working alongside. DB_PASS replaces the dev default (ai).
On a host that already ran the dev Compose, changing DB_PASS in .env does not change the database password. See troubleshooting.
3

Mint your JWT key

Token-Based Authorization is on by default and without a verification key or a JWT_JWKS_FILE, the platform refuses to serve production traffic.
  1. Open os.agno.com, click Connect OSLive, enter your public URL, and name it Live AgentOS.
  2. Go to SettingsOS & Security and turn on Token-Based Authorization (JWT).
  3. Copy the public key and paste the full PEM into .env with quotes, so Docker Compose reads the multi-line value as one variable:
Live AgentOS connections are a paid feature. Use code PLATFORM30 for one month off.
4

Start in production mode

The override switches RUNTIME_ENV to prd (JWT auth on), drops the dev bind mount and hot reload so the container runs the code baked into the image, passes your AGENTOS_URL (and MCP_CONNECT_SECRET, if set) through, and rebinds Postgres to loopback so only this host can reach it. Both services carry restart: unless-stopped, so the platform survives reboots as long as Docker starts on boot.
5

Connect your MCP clients

Re-run uvx agno connect, this time pointed at your public URL:
For claude.ai and ChatGPT on the web: add https://<your-public-url>/mcp as a custom connector in the chat app’s connector settings. Leave the form’s optional OAuth fields (client ID / client secret) empty. Click Connect and, on the consent page, enter the MCP_CONNECT_SECRET you set in .env.
6

Confirm it's live

Logs, when something looks off:
Your AgentOS is live on self-hosted Docker.

Redeploy after code changes

Apply env changes

Env changes are the same command without --build. Compose recreates the container with the new .env values.

Tear down

Removes the containers and deletes the pgdata volume with all platform data: sessions, memory, knowledge, and eval history. Run docker compose down without -v to stop the platform and keep the data.

Next steps

Build with coding agents

Skills to create → improve → evaluate your platform using coding agents.

Docker reference

Commands, environment variables, troubleshooting.