Part 12
Recap
This page restates the core split between ax and kagent, lists the three differences that matter most, and gives you questions to check your understanding before you decide.
- Restate in one sentence what each project does.
- Name the three biggest differences: loop ownership, state location, and conversation lifecycle.
- Answer the self-check questions without looking back.
The split in one paragraph
ax schedules sandboxed agent workloads, while kagent defines, hosts, and talks to agents. ax runs one Task per unit of work and stops tracking it once it ends.3 kagent keeps each conversation alive as a Session, with history, endpoints, and checkpoints.9 Both projects run their workloads as Actors on Agent Substrate, so both inherit its install requirements.18
Three key differences
| Difference | ax | kagent | Read more |
|---|---|---|---|
| Who owns the agent loop | ax: You bring the agent binary. ax does not model the agent and only runs the container to completion.3 | kagent: The platform supplies the loop through a Harness runtime (Go ADK, Python ADK, Codex, Claude, or custom).8 | Agent loop |
| Where state lives | ax: High-churn Task state is kept in Redis rather than etcd.2 | kagent: Kubernetes holds desired configuration, and PostgreSQL holds runtime identity, Sessions, and history.9 | State |
| Conversation lifecycle | ax: A Task runs, can be suspended and resumed, and is deleted. Branching is a roadmap item.6 | kagent: A Session pauses on input, suspends when idle, supports checkpoint and fork, and expires after a 7-day idle TTL by default.10 | Lifecycle |
Both stacks also depend on PostgreSQL and object storage that Substrate installs, so "ax uses Redis" does not mean ax avoids a database.12
Self-check questions
Answer each question before you expand it.
1. A team has an existing coding agent CLI and wants one sandbox per pull request, thrown away afterwards. Which project fits, and why?
ax fits. It runs an arbitrary container per Task without asking you to adopt a runtime, and a Workspace can prepare the repository before the agent starts.3
2. Why does ax keep Task state in Redis instead of etcd?
ax is designed for very high Task counts and high-churn state, which is outside what etcd is built to handle. DESIGN.md states this directly.2
3. At kagent v1.0.0-alpha6, is a Session a Kubernetes resource?
No. A Session is PostgreSQL-backed control-plane state exposed through gRPC. It is created from an Agent, which is a Kubernetes resource.10
4. Which kagent object binds an AgentTemplate to a Harness at alpha6?
The Agent CRD, through its templateRef and harnessRef fields. There is no selector on the Harness at alpha6.9
5. What Kubernetes APIs must a cluster serve before either project can run, and why does that matter on EKS?
Substrate v0.3.0 needs certificates.k8s.io/v1beta1 PodCertificateRequests and ClusterTrustBundles.13 EKS does not enable beta APIs by default and offers no switch for them.15
6. On which port does the kagent controller serve A2A and MCP?
Port 8083, which also serves gRPC, gRPC-Web, and health checks.10