Skip to main content
The agentos-helm template is for teams that develop locally with Docker and deploy to production on Kubernetes with Helm. It includes:
  • 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.
Coding agents can use these skills with the AgentOS API, evals, traces, and container logs to inspect and improve the platform. The Helm chart in 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.
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

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

Edit .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 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:
Testing on a local kind cluster instead? Run 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

Helm-installs the chart into the 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.
  1. Open os.agno.com, click Connect OSLive, and enter your AgentOS URL (your ingress host, or a tunnel while testing).
  2. 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 SettingsOS & Security.
  3. Copy the public key and paste the full PEM into the up.sh prompt. The script saves it to your env file and deploys.
If you skip the prompt, add 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 uvx agno connect, this time pointed at your deployed domain:
For claude.ai and ChatGPT on the web: add 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

With an ingress, open 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:
Immutable tags keep rollbacks one 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

Changed supported values roll the pod automatically. 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

Uninstalls the release and deletes the Postgres volume, including all data. The namespace stays in place since it may be shared; the script prints the command to delete it too.

Next steps

Build with coding agents

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

Kubernetes reference

Commands, environment variables, troubleshooting.