ACME example
The fastest way to understand a real Centaur deployment is to start from the ACME example repos:
paradigmxyz/centaur-acmeis a small organization overlay. Fork it when you want to add your own tools, workflows, skills, personas, or sandbox prompt guidance.paradigmxyz/centaur-acme-infrais a GitOps deployment template. Fork it when you want an Argo CD-managed cluster layout that installs Centaur and syncs the ACME overlay through repo-cache.
Together they show the recommended split: keep reusable Centaur in this repo, keep organization-specific agent behavior in an overlay repo, and keep cluster configuration in an infra repo.
Repository roles
| Repository | Purpose | Contains |
|---|---|---|
centaur | Base platform | Helm chart, API, sandbox image, Slackbot, SDK, built-in tools and workflows. |
centaur-acme | Example organization overlay | tools/acme_crm, workflows/daily_acme_brief.py, .agents/skills/acme-support, and services/sandbox/SYSTEM_PROMPT.md. |
centaur-acme-infra | Example deployment repo | Argo CD bootstrap app, Centaur Helm values, and optional raw manifests managed with the app. |
Use centaur-acme to learn how to package what your agents know and can call.
Use centaur-acme-infra to learn how that package is mounted into a running
Centaur deployment.
1. Fork the example repos
Create your own overlay and infra repos:
gh repo fork paradigmxyz/centaur-acme --clone
gh repo fork paradigmxyz/centaur-acme-infra --cloneReplace the ACME names after forking. Most teams keep the same split:
your-org/
├── centaur-overlay # forked from centaur-acme
└── centaur-infra # forked from centaur-acme-infra2. Customize the overlay
In the overlay repo, keep only the extension points you need:
centaur-acme/
├── tools/
│ └── acme_crm/
├── workflows/
│ └── daily_acme_brief.py
├── .agents/
│ └── skills/
│ └── acme-support/
└── services/
└── sandbox/
└── SYSTEM_PROMPT.mdThe included tools/acme_crm tool is intentionally toy-sized and credential
free. Use it as a shape reference for a real internal tool: a client.py, a
pyproject.toml, and optionally a thin cli.py for local testing.
The included workflow demonstrates how an overlay can add durable workflows without changing the base Centaur API. The included skill and sandbox prompt show how to package organization-specific agent guidance.
3. Pin the overlay repo revision
Commit your overlay changes and record the revision you want Centaur to run:
git -C centaur-acme rev-parse --short HEADThe Centaur chart's repo-cache DaemonSet checks out the overlay repo on each node, so changing tools, workflows, or skills is a Git push plus a Helm values update — no API or sandbox image rebuild is required for overlay-only changes.
Configure the ordered overlay sources in Helm values:
overlays:
sources:
- repo: paradigmxyz/centaur
ref: <centaur-commit-sha>
- repo: your-org/centaur-acme
ref: <overlay-commit-sha>Each source defaults to the conventional tools/, workflows/, and
.agents/skills/ subdirectories; directories a repo does not contain are
skipped, and a subdir set to "" disables that surface. Private overlay repos
should use repoCache.githubToken so repo-cache can clone them.
4. Point the infra repo at your revisions and images
In the infra repo, update
clusters/acme-centaur/argocd/bootstrap/centaur.yaml.
Set the ordered overlay source list:
overlays:
sources:
- repo: paradigmxyz/centaur
ref: <centaur-commit-sha>
- repo: your-org/centaur-acme
ref: <overlay-commit-sha>The template also pins the base Centaur service images:
- name: api.image.tag
value: sha-0000000
- name: slackbot.image.tag
value: sha-0000000
- name: sandbox.image.tag
value: sha-0000000
- name: ironProxy.image.tag
value: sha-0000000Replace those tags with images you built from centaur, or wire them to your
image automation. Overlay-only changes are rolled out by updating the overlay
repo ref in values.
For production, pin the Centaur chart source to a commit SHA instead of tracking
main:
sources:
- repoURL: https://github.com/paradigmxyz/centaur.git
targetRevision: <commit-sha>
path: contrib/chart5. Configure Helm values and secrets
The example values live at
clusters/acme-centaur/argocd/values/centaur.yaml.
Before applying the app, create the Centaur infra Secret in the target namespace. The local quickstart documents the same keys, and production deployments usually provide them through your secret manager or GitOps secret workflow:
kubectl create namespace centaur-system
kubectl create secret generic centaur-infra-env \
--namespace centaur-system \
--from-literal=OP_SERVICE_ACCOUNT_TOKEN=... \
--from-literal=OP_VAULT=... \
--from-literal=SLACK_BOT_TOKEN=... \
--from-literal=SLACK_SIGNING_SECRET=... \
--from-literal=SLACKBOT_API_KEY=...Model and tool credentials such as OPENAI_API_KEY, ANTHROPIC_API_KEY,
AMP_API_KEY, and GITHUB_TOKEN should be configured through Centaur's
credential source. Sandboxes should receive placeholders; iron-proxy injects the
real values only for approved outbound requests.
6. Bootstrap Argo CD
After Argo CD is installed in the cluster, apply the bootstrap manifests from the infra repo:
kubectl apply -f clusters/acme-centaur/argocd/bootstrap/00-namespaces.yaml
kubectl apply -f clusters/acme-centaur/argocd/bootstrap/centaur.yamlArgo CD installs the Centaur Helm chart, applies the values from the infra repo, and repo-cache syncs the configured overlay repos on every node.
7. Verify the running overlay
From the API pod, verify API-side discovery:
kubectl exec -n centaur deploy/centaur-centaur-api-rs -- \
sh -lc 'echo "$TOOL_DIRS"; echo "$WORKFLOW_DIRS"'Expected paths include:
/var/lib/centaur/repos/your-org/centaur-acme/tools
/var/lib/centaur/repos/your-org/centaur-acme/workflowsFrom a sandbox, verify sandbox-side guidance:
echo "$CENTAUR_SKILL_DIRS"
find /workspace/.agents/skills -maxdepth 2 -type f -name SKILL.md | sortExpected paths include:
/home/agent/github/your-org/centaur-acme/.agents/skillsYou can also inspect the runtime payload for a thread:
curl -s "$CENTAUR_API_URL/agent/runtime?key=$THREAD_KEY" \
-H "X-Api-Key: $CENTAUR_API_KEY" | jq '.overlay'What to change first
Start small:
- Rename
tools/acme_crmto one internal tool your agents should be able to call. - Replace
.agents/skills/acme-support/SKILL.mdwith one real playbook your team already follows. - Add your organization's sandbox prompt guidance to
services/sandbox/SYSTEM_PROMPT.md. - Push the overlay repo and update the infra repo's
overlays.sources[].ref. - Verify discovery from the API pod and from a sandbox before adding more tools or workflows.
Once that path works, extend the overlay incrementally. The goal is to keep the
base centaur repo boring and reusable while making your overlay the home for
everything specific to your organization.