mrkeyoor.com_
Wed 12 Aug 14:35 UTC
Self-Hostedevaluationupdated 12 Aug 2026

centaur

Centaur is a self-hosted platform that lets a team talk to coding agents in Slack or through an API, with each conversation running in its own Kubernetes sandbox. It centralizes agent harnesses such as Codex and Claude Code, shared tools, credentials, durable workflows, transcripts, and result delivery so teams do not maintain separate local agent setups.

Verdict

Centaur is one of the more convincing blueprints for turning personal coding agents into a governed team service. Its sandbox isolation, durable state, tool boundary, and credential proxy address real problems that a thin Slack wrapper ignores. Adopt it only if shared agents are important enough to justify a Kubernetes service and a dedicated security owner; everyone else should start with a narrower agent platform.

Setup2/5Good automation around a demanding Kubernetes and secrets stack
Docs5/5Detailed quickstart, production, architecture, and threat model
Community4/5Intense current development, though the public project is very young
Maturity2/5Fast-moving 0.1 series with important operating edges still open

Who it’s for

Platform teams ready to operate Kubernetes and Postgres for shared AI agents.
Engineering groups that want Codex, Claude Code, Amp, or another CLI harness available from Slack.
Organizations that need per-conversation sandboxes, durable execution records, controlled tool credentials, and auditable outbound calls.
Teams building long-running agent workflows that sleep, resume, react to events, or start child agents.

Who it’s NOT for

Small teams wanting a bot they can start with Docker Compose: even the local quickstart requires Kubernetes, kubectl, Helm, Docker, several secrets, 1Password integration, and a Slack app.
Organizations that will not harden defaults before inviting users: the security guide says outbound egress is open by default and agents have broad shell and filesystem permissions inside their sandbox.
Threat models that include a compromised host or Kubernetes control plane: Centaur explicitly says it does not defend against a fully privileged attacker at those layers.
Supply-chain policies requiring every image to be digest-pinned: issue #1356 reports that the bundled agent-sandbox Helm chart cannot currently accept an image tag containing a SHA-256 digest.
Operators who need instant manual cleanup from the web interface: issue #1357 says sandboxes cannot be force-reclaimed there and must wait for the configured maximum lifetime.

Setup reality

Centaur's just up command hides a large stack rather than making it small. Before it works, you need Docker, a Kubernetes cluster, kubectl, Helm, just, jq, a Slack app, a Postgres path, 1Password credentials for iron-proxy, service tokens, and at least one model credential in the secret source. Production adds public HTTPS ingress, generated signing and encryption keys, Console administration, role design, image selection, network policy, backups, upgrades, and sandbox capacity planning. The documentation is unusually candid and detailed, but this is platform engineering work, not an afternoon bot install.

A shared agent service, not another chat integration

Centaur turns command-line coding agents into infrastructure a team can use from Slack or an API. Mention the bot in a thread, and the platform assigns a Kubernetes sandbox containing a shell, workspace, Git, Python, Node.js, Bun, and development tools. Codex, Claude Code, Amp, or another supported harness runs inside it. Progress and the final response return to the thread, while messages, executions, events, and delivery state persist in Postgres.

The important part is everything around the model. Each conversation gets an isolated execution environment. Shared Python tools can call internal services. Durable workflows can wait, resume after restarts, run on schedules, or start child agents. Organization overlays add prompts, personas, skills, and tools without changing the base repository. That is a credible answer to the problem of every developer configuring a powerful local agent differently.

Centaur fits tasks such as investigating a failed build, querying an internal system, producing a recurring digest, or letting an agent inspect a real repository and run tests. It is less compelling when the job is merely answering questions in Slack. The operational bill only makes sense when shell execution, shared permissions, and recoverable workflows are essential.

The security design addresses the right danger

Agents execute model-generated commands and consume untrusted content, so prompt injection is an infrastructure concern, not just a model-quality problem. Centaur gives every thread a short-lived, restricted pod with privilege escalation disabled and Linux capabilities dropped. A default-deny Kubernetes NetworkPolicy allows the sandbox to reach only the Centaur API and its dedicated iron-proxy pod. Sandboxes are separated at the filesystem, process, and network layers.

Credential injection is particularly well considered. Tool definitions name a placeholder, allowed hosts, and the header, query field, or path where the secret may appear. The sandbox sees the placeholder rather than the real key. Iron-proxy substitutes the credential only on a matching outbound request. OAuth, Google service accounts, and Postgres connections receive related typed handling. Structured proxy logs and durable execution records provide evidence of what an agent attempted.

These controls limit exposure, but they do not make an agent trustworthy. The security guide says egress is permissive by default until an operator replaces the wildcard with explicit domains. Agents retain broad filesystem and shell power inside their pods and can call every tool permitted by their token. A model can still misuse a legitimate capability after prompt injection. Centaur also does not protect against an attacker who already controls the host or Kubernetes control plane.

Permission configuration deserves the same attention as cluster setup. Credentials can share a backing Kubernetes Secret or 1Password vault, while the Console scopes access by principal, role, and request rules. New principals receive the infra role by default so they can run a harness. Operators must decide default roles, repository-cache access, sandbox capabilities, and direct tool grants before broad rollout.

The quickstart is an infrastructure project

A local evaluation does not require a production Kubernetes installation, but it does require a cluster. The guide supports k3s, kind, minikube, or Docker Desktop Kubernetes. You also install just, kubectl, Helm, jq, and Docker. Before just up, the default chart expects a Slack bot token, Slack signing secret, service API key, 1Password service account token, and vault identifier. Codex is the default harness, so a working model credential must exist in the configured secret source.

Then Slack needs a public HTTPS webhook, event subscriptions, bot scopes, interactivity configuration, and an app reinstall. A smoke command tests the durable API without Slack, which is a good diagnostic boundary. The docs provide health checks, logs, pod queries, and a complete API example rather than pretending a successful Helm install proves the agent works.

Production adds an external Postgres decision, multiple high-entropy signing and encryption keys, Console bootstrap credentials, ingress, backups, image management, a dedicated runtime class or node pool, secret rotation, and capacity limits. Issue #1357 points to one practical gap: an administrator cannot force-reclaim a sandbox from the web interface and may hit the running limit while waiting for maximum lifetime cleanup. Issue #1356 reports that the bundled sandbox chart cannot pin an image using a SHA-256 digest, a meaningful problem for strict supply-chain policy.

Excellent documentation around a young system

The project was created in May 2026, so maturity claims should be conservative. Release centaur-0.1.115 arrived on August 8 and packages the trusted control-plane Helm chart. The repository was pushed on August 12, with identity, Slack, sandbox, usage, and permission changes landing or under review that day. GitHub showed 90 open issues and pull requests combined, but only 16 open issues in an issue-only search. The difference reflects an unusually busy pull-request queue rather than 90 confirmed defects.

Documentation is a standout. The quickstart names every prerequisite, the production guide inventories secrets and operating decisions, the architecture explains service boundaries, and the security page states both mitigations and exclusions. The code is offered under the reader's choice of Apache 2.0 or MIT.

Centaur is a strong choice for a team that has outgrown personal agent installations and already accepts Kubernetes as an operating boundary. Start with one low-risk workflow, close the egress allowlist, grant tools narrowly, and appoint an owner for incidents and upgrades. If those steps sound excessive, the platform is excessive for your current need. If they sound overdue, Centaur deserves a serious pilot.

Alternatives

ProjectWhat it isPick it when
OpenHandsA software-development agent platform with local and cloud execution options and a user-facing web experience.pick this instead when individual coding tasks and an established agent interface matter more than Slack-native shared operations.
Open SWEAn open-source asynchronous coding agent designed to work through team-oriented request channels.pick this instead when you want a more focused asynchronous coding-agent workflow without Centaur's general tool and workflow platform.
DifyA collaborative platform for building and operating agent workflows, RAG applications, and model-backed tools.pick this instead when visual application building and RAG pipelines matter more than full shell access in per-thread coding sandboxes.

What people are saying

  1. [github-trending] paradigmxyz/centaur

Sources

  1. Centaur README
  2. Centaur security model
  3. Centaur quickstart
  4. Centaur production deployment guide
  5. Centaur 0.1.115 release
  6. Issue 1356: Helm images cannot be digest-pinned
  7. Issue 1357: force-reclaiming sandboxes