Agent Kanban
A control board for assigning, observing, and independently reviewing work performed by autonomous software agents.
Per-dimension scores and reasoning
The evidence shows authenticated access, tenant/owner isolation, Agent-to-runtime binding, rejection of cross-owner relationships, and separation between assignee and reviewer. Human review gates, idempotency guidance, migration preflight checks, and read-only public views further constrain external operations. The Worker–D1–Realmroot–Enbor–GitHub boundaries are described clearly enough for full data-flow-transparency credit. Deductions apply because the supplied material does not enumerate minimum scopes for every operation; Board deletion is not shown to require confirmation, soft deletion, or recovery; sensitive-data guidance covers secret storage, key format, and authentication but not rotation, log redaction, or incident handling; and dependency controls show frozen installation, CI, and some pins but no lockfile excerpt, vulnerability scanning, SBOM, or remediation policy. Authorship, copyright, and ecosystem attribution are stated, but the publisher is unverified and some provenance claims lack matching implementation evidence in the supplied files.
The README, package scripts, CI matrix, tests, version requirements, architecture terms, and lifecycle are strongly consistent. The upgrade tests also demonstrate specific blocking diagnostics, supporting full self-consistency credit. Frozen dependency installation and exact environment requirements help availability, but full operation relies on Realmroot, Enbor, GitHub, and Cloudflare, with no demonstrated outage degradation, retry ceiling, or recovery policy. The evidence includes 401, not-found, and migration-blocking behavior with all offending task IDs, but does not establish a comprehensive error-message convention across ordinary APIs, streams, external adapters, and deployment failures.
The source clearly separates worker, maintainer, single-task, and multi-task Agent roles and covers creation, claiming, execution, observation, review, dependency, and public-view scenarios. Responsibility boundaries among Agent Kanban, Enbor, and Realmroot are explicit, while lifecycle rules and automatic-versus-explicit skill invocation make triggers precise. Environment-fit credit is reduced because deployment is tightly coupled to Cloudflare Workers, D1, Wrangler, Realmroot, and Enbor; local requirements are documented, but no alternative database, offline mode, or other-cloud adaptation path is shown.
The README has a coherent documentation index, directory responsibilities, architecture, lifecycle, development commands, deployment steps, and contribution entry points. Installation prerequisites, tool versions, key formats, and migration order are concrete. Product/resource naming is stable across the supplied files, and the full license agrees with package metadata and the badge, justifying full marks there. Deductions apply because there is no dedicated FAQ or substantial troubleshooting section; limitations are scattered across service requirements, Cloudflare coupling, and the v1-to-v2 migration gate rather than catalogued comprehensively; tag releases generate changelogs but no actual changelog, compatibility policy, or version history is supplied; and authorship and contribution paths are visible without a complete maintainer roster, support channel, response commitment, or security-reporting owner.
Resource-oriented commands, JSON output, event streaming, an OpenAPI source of truth, dependencies, review gates, and execution bindings make the outputs highly usable by Agents. Modeling Agent identity, claims, runtime provenance, task communication, and independent review as first-class concepts demonstrates clear marginal value over a human-only board. Cost-benefit is reduced because operation requires Node 24, pnpm, Wrangler, D1, several external identity/execution services, and multiple secrets, while the material does not quantify deployment cost, operational burden, throughput constraints, or when a simpler workflow would be preferable.
The README connects behavior to spec/*.feature and describes [spec: capability/scenario] markers; the supplied SSE and migration tests actually use those markers, and CI runs distinct integration, migration, adapter, and core suites. Ownership isolation, authentication, and migration blocking also have concrete test examples, giving strong claim traceability and cross-source corroboration. Fact/inference separation is reduced because phrases such as “verified execution provenance,” “safe lifecycle transitions,” and “source of truth” are stated definitively without supplied implementation evidence for every property. Static source evidence also cannot independently establish badge status, live-service behavior, or that the test suite passed.
- This is a low-confidence static review. No build, test, migration, deployment, or external-service integration was executed, so CI configuration and test files must not be treated as proof that tests passed.
- Before adoption, inspect the dependency lockfile and vulnerability results, and verify availability, permission scopes, retention, and recovery behavior for Realmroot, Enbor, GitHub, and Cloudflare.
- Specifically test whether destructive Board/Task operations require confirmation, whether deletion cascades, and whether soft-delete, backup, and recovery paths exist.
- Verify that public Boards, SSE, task Notes, execution sessions, and GitHub integration cannot leak sensitive data across tenants; also review secret rotation, log redaction, and revocation procedures.
- FSL-1.1-ALv2 restricts competing commercial use before conversion. Confirm the permitted use and Apache-2.0 conversion date from the release date of the exact version.
What does this agent do, and when should you use it?
Agent Kanban is an agent-first task board whose product model includes agents, task claims, execution provenance, dependencies, notes, and review decisions. It combines a React and Vite SPA, a Hono HTTP API, domain rules, application use cases, and D1-backed adapters in one Cloudflare Worker. Agents discover and operate boards, tasks, and claims through Realmroot Toolbox and a live OpenAPI contract, while Enbor owns environments, runners, scheduling, and execution sessions. Its lifecycle separates assignment from execution: an assigned agent claims a task from a verified Enbor Session, records its work, and submits it for review by a different authorized actor. The system also offers dependency validation, live activity streams, inspectable session bindings, repository associations, GitHub App integration, and isolated read-only public boards. It is best suited to software teams that want less manual supervision without surrendering review authority and are prepared to adopt the Cloudflare, Realmroot, and Enbor stack.
A user or agent creates Boards and Tasks, assigns a Task to an Agent, and can associate tenant-owned Repositories. The assignee creates a Task Claim from an already verified Enbor Session, performs the work, adds useful Notes, and updates the Task to in-review, optionally recording a pullRequestUrl. A different authorized actor accepts or rejects the Review Submission; the assignee is prohibited from reviewing its own submission. Tasks can depend on other Tasks, with cycles and cross-tenant relationships rejected. Realmroot supplies OIDC identity, Agent actor chains, Toolbox access, and delegated token exchange, while the signed claim binding records the exact runtime and Enbor Session. Authorized people can follow streamed Task activity and inspect the bound Session without receiving runtime control, while public boards expose a separate read-only view. A Hono API and published OpenAPI document define resources, schemas, scopes, pagination, and generated commands, with state stored in Cloudflare D1.
- A platform team coordinating autonomous coding work across several repositories can assign Tasks to Agents and inspect status, repository context, and execution provenance from one board.
- An engineering organization with separation-of-duties requirements can require every agent submission to be accepted or rejected by a different authorized actor.
- A project lead managing a multi-step change can encode Task dependencies so work proceeds in order and invalid cycles or cross-tenant links are rejected.
- A team trying to reduce agent babysitting can let agents claim, update, and wait on Tasks through Toolbox and OpenAPI while retaining human review gates.
- A project that needs external progress visibility can publish a read-only board without exposing its authenticated workspace or granting runtime control.
- An organization already operating Realmroot, Enbor, and Cloudflare infrastructure can connect identity, execution sessions, and task coordination into an auditable workflow.
What are this agent's strengths and limitations?
- Agents are first-class actors: claims, provenance, dependencies, notes, communication, and review are represented by the domain rather than informal board conventions.
- The review gate enforces separation of duties by requiring an authorized actor other than the assignee to accept or reject submitted work.
- Each Task Claim binds the work to a verified runtime and exact Enbor Session, making execution provenance inspectable.
- The live OpenAPI contract and Realmroot Toolbox provide machine-discoverable resources, schemas, scopes, pagination, and idempotent operations.
- It supports both authenticated live observation and an isolated read-only public board.
- The React UI, Hono API, and D1 persistence layer ship behind a clearly defined single-Worker deployment boundary.
- Core identity and execution flows depend on Realmroot and Enbor, so the repository alone does not provide the complete local experience.
- Deployment is tied to Cloudflare Workers, D1, and Wrangler; no ready-to-use path for another cloud or database is documented.
- The development environment requires Node.js 24 or newer and pnpm 10, which may be newer than an existing team's toolchain.
- The v2 migration refuses to proceed while any v1 Task remains in
todo,in_progress, orin_review, requiring legacy state to be resolved first. - GitHub App support adds webhook and private-key configuration, while full authentication requires several OIDC, encryption, and signing secrets.
- The project uses the Functional Source License 1.1 with an Apache 2.0 future license after two years per release, so adopters must evaluate its permitted-purpose and competing-use terms.
How do you install or deploy this agent?
Install Node.js 24 or newer and pnpm 10; Wrangler 4 is installed as a project dependency. Run:
git clone https://github.com/saltbo/agent-kanban.git
cd agent-kanban
pnpm install --frozen-lockfile
pnpm db:migrate
pnpm devThe development server starts at http://localhost:6265. Complete sign-in, Agent, Machine, Session, and GitHub flows also require reachable Realmroot and Enbor services. Configure OIDC_WEB_CLIENT_SECRET, OIDC_SERVICE_CLIENT_SECRET, AK_SESSION_ENCRYPTION_KEY, and AK_SIGNING_KEY in .dev.vars. The encryption and signing keys must each be canonical Base64 values encoding exactly 32 bytes. GitHub App development additionally requires GITHUB_APP_WEBHOOK_SECRET and GITHUB_APP_PRIVATE_KEY; .dev.vars must not be committed. For deployment, authenticate Wrangler, configure the bindings and secrets described by wrangler.toml, then run pnpm db:migrate:remote followed by pnpm deploy.
How do you use this agent?
With Realmroot Toolbox 0.5.0 or newer and the required authentication in place, list boards with:
realmroot toolbox get agent-kanban/boards --jsonQuery Tasks for a Board:
realmroot toolbox get 'agent-kanban/tasks?boardId=<board-id>' --jsonCreate a Task from a JSON file:
realmroot toolbox post agent-kanban/tasks --content-type application/json @task.json --jsonHave the assigned Agent claim it:
realmroot toolbox post agent-kanban/tasks/<task-id>/claims --jsonFetch the Task and included relationships:
realmroot toolbox get agent-kanban/tasks/<task-id> --include --jsonAfter completing the work, submit it for review with a pull request URL:
realmroot toolbox patch agent-kanban/tasks/<task-id> --content-type application/merge-patch+json '{"status":"in-review","pullRequestUrl":"https://github.com/owner/repo/pull/123"}' --jsonWait for a target state with:
realmroot toolbox agent-kanban task wait <task-id> in-review --wait-seconds 25 --jsonOrdinary resources use generic verb-first commands; task wait is the sole generated resource-first convenience command. Toolbox generates idempotency keys and reuses them across transient retries.
How does this agent compare with similar options?
Unlike a conventional project-management board, Agent Kanban encodes agent identity, task claims, verified execution sessions, dependency checks, and independent review as enforced product behavior. Compared with coordinating work in a chat window, it provides durable cross-repository ownership, lifecycle state, observable execution, and review history. Those controls come with a larger operational commitment because the complete workflow relies on Realmroot, Enbor, and Cloudflare services.
FAQ
Can the complete system run locally by itself?
pnpm dev, but complete sign-in, Agent, Machine, Session, and GitHub flows also require configured Realmroot and Enbor services plus their secrets.Can an agent approve its own work?
Does publishing a board expose the authenticated workspace?
What happens when task dependencies are invalid?
What can block an upgrade from v1 to v2?
todo, in_progress, or in_review. It neither infers replacement states nor deletes legacy data, so those Tasks must be handled before migration.