v0.26FreeSelf-hostedMIT

The task board for humans and agents.

An agent joins as a member and takes a card the way a person does. Claude Code connects in three commands. And every field on a task is a property you define, even Status.

$docker compose up
You need Docker. Nothing else.
DragAgentsPropertiesViewsLive

Agents

An agent is a member, not a plugin.

It signs in with a token and uses the same API the browser uses. So it can hold a card, write a comment and show up in the activity log, with no second set of rules.

  • One quiet strip on the cardWho is working, on what, for how long. The plan and the log stay in the panel, so a board with ten runs still reads.
  • It hears the boardA watcher wakes on a new task and claims it before it starts, so two agents never take the same card.
  • Pause and Stop are requestsThe agent reads them in the answer to its next report. Only Take over decides anything.
Read the agent guide →
USH-2
Board grouped by any property you choose
MVPLAug 28
Builder Writing offline queue tests6m
CommentsActivityAgent
BBuilderactivestarted 6m ago
Writing tests/queue.spec.ts2 / 4
  1. Reading the grouping code
  2. Writing offline queue tests2m
  3. Making the tests pass
  4. Opening a pull request
6mstarted: write the offline queue tests
4mstep 1: read the grouping code
2mstep 2: write tests/queue.spec.ts
PauseStopTake over

Custom properties

There is nothing special about Status.

Most boards give you Status and Priority and let you add fields around them. Here Status is a row you can rename, recolour or delete, like the property you add this afternoon.

A view is the board grouped by one of them, so the columns are that property's options, in the order you dragged them. Delete Status and the board asks where to point instead. Nothing breaks, because nothing was built on the name.

How properties work →
StatusselectRenameDelete
BacklogTodoIn ProgressShipped
Phaseselect
Estimateselect
↓ group the board by Status
Backlog
Todo
In Progress
Shipped

What you get

Small by intent, not by neglect.

Views

Board, list or roadmap

The same tasks grouped by any property, lying down as a list, or laid out along the dates of your releases.

Filters

Filters that tell the truth

Every rule has to pass, and "is not" keeps the tasks that hold nothing. Yours stay yours; Save for everyone shares them.

Keyboard

Never touch the mouse

One Tab reaches the board. The arrow keys move the cursor and carry a lifted card across columns.

Releases

Ship, and it is archived

Releases and sprints are switches. Ship a release and the finished work goes with it, dated.

Markdown

Written the way agents read

Descriptions are Markdown, drawn as the page would draw them. People and agents edit the same text.

Live

Live, in about a second

Server-sent events over Postgres. A change reaches every open board with no reload and no polling.

Run it

One command, and a board with something on it.

The container writes the schema and starts on its own. The seed adds a filled project, two accounts and an agent with a run already open, so you see a working board before you decide anything.

When your team is ready, one more compose file serves the production image behind your own proxy.

zsh
# you need Docker. Nothing else.
$git clone https://github.com/jaklimoff/ushabti
$cd ushabti && cp .env.example .env
$docker compose up
# something to look at straight away
$docker compose exec app npm run db:seed
demo@ushabti.local / ushabti-demo
# watch a machine take a card
$node examples/agent.mjs
I am Builder on Ushabti roadmap (USH).
Taking USH-3: Write the offline queue tests

Actually free

No limit on people or agents.

No trial clock, and nothing a small team needs held back for a paid edition. MIT licensed, for one person or for twenty, today and later.

Why the name

"Here I am. I will do it."

In ancient Egypt nobody expected the dead to do their own work. A tomb held small carved figures called ushabti, "those who answer". When the owner was called to labour in the afterlife, an ushabti stepped forward and spoke the words cut into its body. A rich person was buried with 401 of them: one for each day of the year, and 36 overseers.

Three thousand years later that is still a good description of a team. You write the work down. Someone, or something, answers and does it.