- Agent Builder, which creates agents, teams, and workflows.
- Platform Manager, which inspects and explains the platform, eval history, deployment checks, and schedules.
- Eight skills for setting up, building, testing, reviewing, and deploying the project with a coding agent.
charts/agentos deploys to any Kubernetes cluster, cloud-managed (EKS, GKE, AKS) or your own.
Get started
Copy the prompt below into Claude Code, Cursor, or Codex to configure and run the template with a coding agent.Manual setup
Prerequisites: Docker installed and running. An OpenAI API key.1
Clone and configure
.env and set OPENAI_API_KEY.2
Start the platform
3
Verify end to end
MCP OK with the tool count and a real agent answer through the MCP endpoint.4
Connect the AgentOS UI
- Open os.agno.com and sign in.
- Click Connect OS, enter
http://localhost:8000, and name it Local AgentOS.
5
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
Deploy to production
Prerequisites: kubectl pointed at your cluster, Helm 3+, a container registry the cluster can pull from, and OpenSSL.1
Create a production env
.env.production with production values: a different OpenAI key, production-only credentials, a different Slack workspace.2
Pick your image
The chart defaults to the official Testing on a local kind cluster instead? Run
agnohq/agentos image, the reference platform exactly as in this repo (latest, plus agno-<pin> tags for exact runtimes). The moment you customize anything (a new agent, edited instructions), build and push your own:docker build -t agentos:kind . && kind load docker-image agentos:kind, then deploy with IMAGE_REPOSITORY=agentos IMAGE_TAG=kind IMAGE_PULL_POLICY=Never ./scripts/k8s/up.sh. The README’s “Local dry run on kind” section has the full flow.3
Deploy
agentos namespace of your current kubectl context (the script shows the context and asks first): the API deployment at one replica by design, since the in-process scheduler must not run twice, plus in-cluster Postgres with pgvector and its volume. The script also generates a DB_PASS and saves it to your env file. Keep it; the Postgres volume reads the password only on first initialization.To publish behind your ingress controller, add INGRESS_HOST=os.example.com (and optionally INGRESS_CLASS=nginx). AGENTOS_URL then points at that host; otherwise the scheduler uses the in-cluster service DNS, which works out of the box. When the deploy has a public URL (INGRESS_HOST or an explicit AGENTOS_URL), the script also generates MCP_CONNECT_SECRET, the OAuth consent secret for connecting chat apps, and saves it to your env file.Bringing your own Postgres instead? It must have the pgvector extension available. Install with postgres.enabled=false and the externalDatabase.* values in charts/agentos/values.yaml.4
Mint your JWT key
The script pauses for a
JWT_VERIFICATION_KEY. Token-Based Authorization is on by default. Production startup requires that verification key or a readable JWKS file at the pod path in JWT_JWKS_FILE; otherwise the process exits.- Open os.agno.com, click Connect OS → Live, and enter your AgentOS URL (your ingress host, or a tunnel while testing).
- Name it Live AgentOS, turn on Token-Based Authorization (JWT) on the connection panel, and connect. The UI generates the public key. If the OS is already connected, enable the setting under Settings → OS & Security.
- Copy the public key and paste the full PEM into the
up.shprompt. The script saves it to your env file and deploys.
JWT_VERIFICATION_KEY to .env.production later and run ./scripts/k8s/env-sync.sh. For JWKS, provide the file through a custom image or chart volume, set JWT_JWKS_FILE to its pod path, then deploy. The current chart only forwards the path.Live AgentOS connections are a paid feature. Use code
PLATFORM30 for one month off.5
Connect your MCP clients
Re-run For claude.ai and ChatGPT on the web: add
uvx agno connect, this time pointed at your deployed domain:https://<your-agentos-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; deployed without INGRESS_HOST? set MCP_CONNECT_SECRET and a public AGENTOS_URL in .env.production and run ./scripts/k8s/env-sync.sh).6
Confirm it's live
https://<your-agentos-domain>/docs to confirm the API is serving. No ingress yet? Port-forward and open localhost:8000/docs:Your AgentOS is live on Kubernetes.
Redeploy after code changes
Build and push a new tag, then roll the release to it:helm rollback away. Running ./scripts/k8s/redeploy.sh without IMAGE_TAG restarts the pods in place; that only picks up a re-pushed tag if the new image actually reached the cluster.
Sync environment variables
env-sync.sh updates RUNTIME_ENV, AGENTOS_URL, OPENAI_API_KEY, JWT_VERIFICATION_KEY, MCP_CONNECT_SECRET, AGENTOS_MCP_SIGNING_KEY, PARALLEL_API_KEY, SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET, and DB_PASS. It updates the JWT_JWKS_FILE path only. The current chart does not upload or mount the referenced file. Use JWT_VERIFICATION_KEY, a custom image containing the file, or a chart extension with a Secret volume. Set ENABLE_DEPLOY_CHECK and EVALS_* via extraEnv and helm upgrade. Enable the registered run-evals schedule from the AgentOS UI.
Tear down
Next steps
Build with coding agents
Skills to create → improve → evaluate your platform using coding agents.
Kubernetes reference
Commands, environment variables, troubleshooting.