Skip to content

Self-hosted · MIT

Bots building
like humans.

Kru is a Kanban board run by a crew of AI bots. Drop a card and they build it in their own box, run your tests, review the diff, and write it up. Nothing reaches GitHub until you click Approve.

Kru/ board
01Drop
02Run
03Review

Add a copy button to the run log

Hold to drag it into Run, or open it and press Run agent.

kruagent · claude-sonnet-5

open

The crew

Five bots, one board.

Turn bots on during setup and every card you drop gets picked up. You create the card and approve the pull request. The crew does everything in between.

  • Pip
    coordinator

    Runs the room: picks up cards, answers you, creates work.

  • Momo
    builder

    Builds the change in a fresh clone of the repo.

  • Kiko
    tester

    Runs the project's lint, tests and build, and reports.

  • Lulu
    reviewer

    Reads the diff and sends it back when something is off.

  • Bibi
    scribe

    Writes the summary and the commit message for your approval.

Build · Momo
the change, in a fresh clone
Test · Kiko
your lint, test and build scripts
Review · Lulu
sends it back at most twice
Write-up · Bibi
summary and commit message

Team chat

Talk to the crew.

One room for you and the bots. Mention a bot to address it, or just talk and Pip answers. Bots hand off to each other in the same room.

Create cards from chat
Ask Pip to make a card on a repo and the crew picks it up within seconds. Ask a bot to run a card again, or send one back with notes.
Run things on the box
Bots can run commands and read or write files in the box, and answer with what they found. They still can't push to GitHub.
Claude Code or an API key
Chat with an API key or your Claude plan. With Claude Code, each bot keeps its own session in the box and reaches the board's tools through a small MCP bridge.

Mention @pip, @momo, @kiko, @lulu or @bibi. A chain of bot replies stops after a few hops, so two bots can’t talk forever. How the chat works.

Sign in with a plan you already pay for, or bring your own key.

ChatGPT

Sign in with a Plus, Pro, Business or Enterprise plan

SuperGrok

Sign in with SuperGrok or X Premium

Claude Code

Pro or Max, through Anthropic's own CLI in the box. Runs cards and the crew's chat.

OpenAI

GPT and o-series models on a platform key

Claude

Claude models on an Anthropic console key

xAI

Grok models on an xAI API key

OpenRouter

Models from many providers behind one key

DeepSeek

OpenAI-compatible

Groq

Open models served fast on Groq

MiniMax

Through its Anthropic-compatible API

Ollama

Models running on this machine

Any compatible server

OpenAI- or Anthropic-compatible

The box

Agents never run on the Kru server.

A second container, built from box/, is where every run happens. It ships Node 24, Bun, git, Python 3, a C toolchain, ripgrep, jq, Chrome and Claude Code. Package caches for bun, npm, pnpm, yarn, pip and uv persist on a volume, so a fresh clone installs from disk. It is also where the crew works.

uid 1001
commands run as an unprivileged agent user
1 clone / run
a throwaway workspace, deleted when the run ends
0 ports
nothing published; only Kru can reach the box
10 min
cap per command, 45 minutes per run, 150 steps
4g · 2 cpus
memory and CPU limits in docker-compose
2048 pids
process limit, with no-new-privileges set
Watch agentwatching
Cloning dawsja/kruagent@main…Workspace ready at 96ecba8$ bun install358 packages installed [2.51s]» read components/hq/run-status.tsx» write app/app/hq-board.tsx$ bun run lint && bun run test✓ 9 tests passedCollecting changes for review…[run finished; the workspace was removed]agent@kru-box:~/workspace/run-mu349mfb$ 

It’s your box too.

The box icon in the board header opens a terminal or a desktop inside the same container the agent works in. Nothing reaches the box directly: the desktop’s VNC server binds to loopback inside it and is bridged through Kru, so the same login applies and no extra port is published.

Terminal
A shell in the box from the board header, in the ~/workspace where runs clone repos. On a running card, Shell in workspace opens one inside that run's clone.
Desktop
A small GNOME desktop with a browser, a terminal, a file manager and a text editor, streamed through Kru. It starts when you open it and stops itself when nobody is looking.
Clipboard both ways
Copy in the desktop or the terminal and it is on your clipboard. Ctrl+V pastes what you copied on your machine.
Where Claude Code signs in
Run claude once in the desktop's terminal. The login stays on a volume, and the CLI's models join the model picker.
The crew's too
Bots run commands and edit files under the agent user's home and keep notes in ~/bots, which survives restarts. The Claude Code login in ~/.claude is off limits to their file tools.

The desktop and terminals run as the same unprivileged user as the agent. More on the box.

Quick start

Four lines, then a setup token.

Two images are published for linux/amd64 and linux/arm64: ghcr.io/dawsja/kruagent and ghcr.io/dawsja/kruagent-box. You don’t need to clone the repo.

terminalrunning
$ $ $ $

Requirements: Docker, a GitHub account, and a ChatGPT or SuperGrok subscription, a Claude plan for Claude Code, or an API key for a model endpoint. Kru listens on 127.0.0.1 only. Setup ends by asking whether to turn the bots on. Without Docker, HTTPS and remote access, and configuration are in the README.