Skip to main content
AgentOS is a secure, scalable platform for running agents. The agentos-azure codebase runs AgentOS locally using Docker and deploys to production on Azure Container Apps. 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. Everything runs in your own Azure subscription, and one script provisions the network, database, registry, and app into a single resource group.

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.
Help me set up AgentOS on this machine. Work step by step. When a step needs me (an API key, a Docker install, a sign-in), stop, tell me exactly what to do, and wait for my input. Never read or print secrets.

1. Clone https://github.com/agno-agi/agentos-azure.git into a folder called agent-platform and cd in. Then read AGENTS.md end to end — it is the source of truth for how this platform works and answers most questions you'll hit along the way.
2. Run `cp example.env .env`, open .env in my favorite editor, and ask me to set the OPENAI_API_KEY.
3. Confirm docker is installed, running and `docker info` succeeds. If Docker is missing, ask me to install Docker Desktop and wait until it's running.
4. Start the platform with `docker compose up -d --build`, then poll http://localhost:8000/docs until it returns 200 (first build takes a few minutes). If it never comes up, read `docker compose logs agentos-api` and fix what you find.
5. Prove it end to end with ./scripts/mcp_check.sh — it should print "MCP OK" and a real agent answer. Show me that answer: it's my platform talking.
6. Ask me which frontends I want connected, then set up the ones I pick:
   - Coding agents (including you): run `uvx agno connect` — it registers http://localhost:8000/mcp in Claude Code, Claude Desktop, Codex, and Cursor, and verifies with a real handshake.
   - The AgentOS web UI: walk me through os.agno.com → Connect OS → http://localhost:8000, named "Local AgentOS".
   - Claude and ChatGPT apps (web or desktop): their sessions run in the cloud and can't reach localhost, so work with me on deploying to production first using ./scripts/azure/up.sh (needs the Azure CLI, logged in, and Docker; the script pauses while I mint a JWT key at os.agno.com, and saves the MCP_CONNECT_SECRET — the OAuth consent secret — in .env.production). Then I add https://<container-app-domain>/mcp as a custom connector in the chat app's connector settings and approve the consent page with that secret.
7. Finish with a short summary of what's running and where, plus a few first prompts to try — start with asking Agent Builder to "Build an agent that tracks AI news and writes a daily brief".
Prefer to drive yourself? Follow the manual steps below.

Manual setup

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

Clone and configure

git clone https://github.com/agno-agi/agentos-azure.git agentos
cd agentos

cp example.env .env
Edit .env and set OPENAI_API_KEY.
2

Start the platform

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

Verify end to end

./scripts/mcp_check.sh
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. Deploy to production first, then add https://<container-app-domain>/mcp as a custom connector and approve the consent page with the MCP_CONNECT_SECRET that up.sh generates.
SlackSet SLACK_BOT_TOKEN and SLACK_SIGNING_SECRET. See Slack setup.
Your productCall the AgentOS REST API with 80+ endpoints. Browse them at /docs.

Deploy to production

Prerequisites: Azure CLI installed and az login completed. Docker running; the image is built locally.
1

Create a production env

cp .env .env.production
Edit .env.production with production values: a different OpenAI key, production-only credentials, a different Slack workspace.
2

Deploy

./scripts/azure/up.sh
The first run takes 15-20 minutes (Postgres Flexible Server is the long pole) and creates everything inside one dedicated resource group, agentos by default: a VNet with private DNS, a container registry with the locally built image, PostgreSQL 17 Flexible Server with private access and pgvector allowlisted, the Container Apps environment, and the agent-os app pinned to exactly one replica so the in-process scheduler never runs twice. The app URL is only known after create. Once the app is up, the script writes AGENTOS_URL back to your env file so scheduled jobs reach the platform. It also generates MCP_CONNECT_SECRET, the OAuth consent secret for connecting chat apps, into the same file.
3

Mint your JWT key

The script pauses for a JWT_VERIFICATION_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 Container Apps 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 the up.sh prompt. The script saves it to your env file, stores it as a Container Apps secret, and applies it together with AGENTOS_URL in a single second revision.
If your env file already sets JWT_JWKS_FILE, the script skips the pause and applies it in the same revision. If you skip the prompt, add JWT_VERIFICATION_KEY or JWT_JWKS_FILE to .env.production later and run ./scripts/azure/env-sync.sh.
Live AgentOS connections are a paid feature. Use code PLATFORM30 for one month off.
4

Connect your MCP clients

Re-run uvx agno connect, this time pointed at your deployed domain:
uvx agno connect --url https://<container-app-domain>
For claude.ai and ChatGPT on the web: add https://<container-app-domain>/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 that up.sh generated during deploy (saved in .env.production).
5

Confirm it's live

az containerapp logs show -g agentos -n agent-os --follow
The script prints your app URL. Give the revision a couple of minutes to converge, then open https://<container-app-domain>/docs to confirm the API is serving.
Your AgentOS is live on Azure Container Apps.

Redeploy after code changes

./scripts/azure/redeploy.sh

Sync environment variables

./scripts/azure/env-sync.sh

Tear down

./scripts/azure/down.sh
Deletes the entire resource group, agentos by default: the agent-os app, the Container Apps environment, the Postgres server and all its data, the container registry, the VNet, and the private DNS zone. The script lists the group’s resources and asks you to type the group name before deleting. It also comments out the stale AGENTOS_URL in your env files so a future up.sh derives a fresh domain; custom domains are left alone.

Next steps

Build with coding agents

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

Azure Container Apps reference

Commands, environment variables, troubleshooting.