- 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.
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.Manual setup
Prerequisites: Docker installed and running. An OpenAI API key.Start the platform
Verify end to end
MCP OK with the tool count and a real agent answer through the MCP endpoint.Connect the AgentOS UI
- Open os.agno.com and sign in.
- Click Connect OS, enter
http://localhost:8000, and name it Local AgentOS.
Build your first agent
- Chat with Agent Builder: “Build an agent that tracks AI news and writes a daily brief”. Go through the agent development process.
- Once created, click Refresh on the top right, pick the new agent from the Agents dropdown, and ask: “What’s new with Anthropic?”
- 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
| Frontend | How |
|---|---|
| MCP clients on your machine | uvx 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 UI | os.agno.com → Connect OS → http://localhost:8000. |
| claude.ai and ChatGPT | Hosted 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. |
| Slack | Set SLACK_BOT_TOKEN and SLACK_SIGNING_SECRET. See Slack setup. |
| Your product | Call 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.
Get a public URL
The platform needs a public HTTPS URL for two things: hosted chat apps reaching 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.
/mcp, and AGENTOS_URL, the address the platform advertises as its own. Any of these work: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.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.- Open os.agno.com, click Connect OS → Live, enter your public URL, and name it Live AgentOS.
- Go to Settings → OS & Security and turn on Token-Based Authorization (JWT).
- Copy the public key and paste the full PEM into
.envwith 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.Start in production mode
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.Connect your MCP clients
Re-run For claude.ai and ChatGPT on the web: add
uvx agno connect, this time pointed at your public URL: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.Your AgentOS is live on self-hosted Docker.
Redeploy after code changes
Apply env changes
--build. Compose recreates the container with the new .env values.
Tear down
Next steps
Build with coding agents
Skills to create → improve → evaluate your platform using coding agents.
Docker reference
Commands, environment variables, troubleshooting.