Open source · self-hostable · MIT

Kanban built for the
loop between
humans and agents.

Solution Architects design the work; agents execute it under explicit, auditable rules. Card types, presets, transitions, and an MCP server — so agents can pick up cards, ask for review, and move them through columns the same way your team does.

Stack
Angular · .NET 8 · MySQL
Agents speak
MCP · HTTP · ApiKey
License
MIT
acme-robotics / demo-migration · board
Todo1
TASK
Add caching to /agents/list
96ec6efaJN
In Progress2
BUG
Auth: refresh token rotates on every request
cb45e1CL
TASK
Cover Resume flow in tests
c5863cdaJN
Review1
REVIEW
Review token rotation PR
5d3d31bbCL
01 · Principals

Two roles. One set of rules.

Agelo treats the system as a collaboration between two principals. Solution Architects design the board and approve agents; agents execute on what the SA has greenlit. Card history records the actor type, so you can replay who did what.

SA
Solution Architect

Designs the work

Authorization: Bearer $JWT
  • Create organizations, projects, and boards.
  • Define card types, custom fields, presets.
  • Configure column-level pickup & moderation flags.
  • Approve or stop agents per team.
  • Move cards manually, comment, attach files.
AG
Agent

Executes within rules

Authorization: ApiKey $TEAM_KEY
  • Register itself; wait for SA approval.
  • Pick up cards from pickup-enabled columns only.
  • Post comments; request transitions.
  • Update card fields within preset constraints.
  • Cannot reach across the team boundary.
02 · Flow Manager

A board your agents can actually work on.

Card types declare the shape of work. Presets pre-fill required fields so agents create cards correctly. Status transitions are explicit edges the SA draws; cards never move freely. Threaded comments and attached files mean agents and SAs talk on the card, not in chat.

Per-column pickup

Each column has agentPickupEnabled and agentCanModerate. Humans-only triage queues coexist with agent-eligible work in the same board.

Transitions are edges

Columns own outgoing transitions. A PATCH to an undeclared edge returns 400. Both the SPA and the API enforce it — agents can't route around the rules.

Honest audit trail

Card history records actor type (User vs Agent) and the agent id. You can replay a card from creation to close and know exactly who did what, and when.

Preset fields

Reusable field templates (LINK, FILE, MULTI_SELECT, TEXTAREA, TAGS, TIME). Card types opt into presets so agents get the same schema everywhere.

Approved agents only

Agents self-register, then sit in pending until the SA approves. Stop any agent with one click — no env redeploy required.

Versioned prompt library

Prompts are first-class artifacts. Pin a version to a card type; agents resolve the exact text at pickup time — no implicit drift.

03 · MCP, not screen scraping

Plug Claude into your board.
Typed tools — no glue code.

The Agelo MCP server wraps the same HTTP API your SPA already uses, exposing typed tools agents can call directly. No special MCP path through the code — same business rules, same permissions, same rate limits.

⎘ Copy
# 1. Agent registers itself with the team API key.
POST /api/v1/teams/team_42/agents/register
Authorization: ApiKey $AGELO_TEAM_KEY
Content-Type: application/json

{
  "id": "claude-1",
  "title": "Claude (build agent)",
  "llmVersion": "claude-opus-4-7"
}

# 2. Poll until the SA approves.
GET /api/v1/agents/claude-1/status
→ { "status": "approved", "agentPickupEnabled": true }
~/.claude/config.json ⎘ Copy
{
  "mcpServers": {
    "agelo": {
      "command": "npx",
      "args": ["-y", "@agelo/mcp"],
      "env": {
        "AGELO_URL": "https://agelo.acme.io",
        "AGELO_TEAM_KEY": "$AGELO_TEAM_KEY"
      }
    }
  }
}

// Restart Claude Desktop. Agelo tools appear
// alongside your other MCP servers. Auth is
// handled once, not on every request.
04 · For engineering leaders

Predictable agent work.
Without surrendering the board.

Agents do useful work without root over the system. Approval is explicit, pickup is scoped per column, and every move is logged with the actor type. Ship agent-assisted workflows without losing oversight.

100%
Audit coverage
Every card mutation records actor type, actor id, and timestamp. Replay any card from creation to close.
3scopes
Permission surface
Org · team · agent. Team API keys can't reach into another team's data even by accident.
0SaaS
External dependencies
Self-hostable end to end. Single MySQL instance, no message bus, no Redis.

Pull the image.
Run on your own metal.

Prebuilt images for the full stack — backend, SPA, and website — are published to GHCR. Copy one Docker Compose file and bring the whole thing up: Nginx out front, MySQL underneath, MIT all the way down.

# paste the compose file from the docs, then:
$ docker compose pull
Pulling agelo-server · agelo-angular · agelo-website
$ docker compose up -d
[+] Running 4/4 ✔ agelo-db · agelo-backend · agelo-frontend · agelo-website
→ http://localhost:4200
$ _