kagent v1.0 Can Run Claude Code as a Managed Kubernetes Agent Kagent released v1.0.0-alpha1, replacing its Deployment-backed agent model with AgentInstance, an imperative gRPC lifecycle object with a fixed state machine, PostgreSQL persistence, and synchronous suspend/resume. The release adds an authenticated A2A gRPC gateway and a chat UI checkpoint/fork feature that applies a git-like model to agent conversation state. The project notes that durable public task persistence, ID mapping, ordering, and idempotency remain follow-up work. Originally published at webofmike.com https://webofmike.com/kagent-v1-agentinstance-claude-code-harness/?utm source=devto&utm medium=syndication&utm campaign=kagent-v1-agentinstance-claude-code-harness on 2026-09-18. The demo repo and every command in it were run before publishing. kagent shipped v1.0.0-alpha1 https://github.com/kagent-dev/kagent/releases/tag/v1.0.0-alpha1 this morning, its first 1.0 line after nine months on 0.x. The tag says alpha; GitHub's own release flag says otherwise; it's marked prerelease: false , listed as Latest . Release notes lie about formatting more than they should, and this is a version-number one: don't assume the tag string tells you how GitHub, or a Helm repo index, actually classifies the artifact. Check both, every time. The changelog runs to roughly 130 pull requests. Most of it is refactoring: refactor: remove deployment-backed agent API , refactor: remove legacy controller runtime , chore: remove legacy ACP and controller runtime . That pattern, repeated a dozen times, is the actual story. kagent didn't add a feature to its old agent model. It replaced the model. Through 0.x, a kagent agent was, underneath, a Kubernetes Deployment. v1.0 introduces AgentInstance : an imperative gRPC lifecycle object with a fixed state machine, not a workload spec a controller reconciles toward. PR 2436 https://github.com/kagent-dev/kagent/pull/2436 adds the service and its PostgreSQL persistence, with idempotent create, ownership checks, and Actor identity fencing. PR 2445 https://github.com/kagent-dev/kagent/pull/2445 adds suspend and resume, synchronous, backed by Substrate, and explicit about what happens when two callers collide: Kind smoke: Create → READY → Suspend → SUSPENDED → Resume → READY → conflicting Resume → ABORTED → Delete → DELETED → Get → NOT FOUND That's not a happy-path test. It's a test that a second, conflicting resume gets rejected outright rather than racing the first one. A Deployment reconciler doesn't offer that; it just converges, eventually, and two competing writers get whatever order the informer delivers. AgentInstance answers with a status code instead. PR 2446 https://github.com/kagent-dev/kagent/pull/2446 puts an authenticated A2A gRPC gateway in front of ready instances, routing through Atenet to private root Substrate actors. The PR is explicit about what's still missing: "Durable public Task persistence, public/private ID mapping, ordering, and idempotency remain follow-up work." Worth knowing before you point production A2A traffic at it on day one of an alpha. The most visible v1.0 feature lives in the chat UI, not the API. PR 2775 https://github.com/kagent-dev/kagent/pull/2775 adds a Checkpoint button next to Send. It saves the conversation's current turn boundary. "Everything above it travels into a fork and nothing below it does" is how the PR describes the contract. Duplicate chat in the rail's row menu is the same mechanism: checkpoint plus fork, in one click. PR 2847 https://github.com/kagent-dev/kagent/pull/2847 renames the concept from "checkpoint" to "snapshot" in the chat, gives each one a name