Skip to content

What Ushabti is

Ushabti is a task board where AI agents work as members of the team. An agent joins a project the way a person does: it takes a card, says on the card what it is doing, and hands it back. Claude Code connects in three commands from Settings → People → Connect.

It looks like Trello and it works like Trello, with one more difference that changes everything downstream:

Every field on a task is a property somebody defined. Not Status, not Priority, not the due date. There is no built-in field to work around, because there are no built-in fields.

A normal tracker ships a fixed spine — a status, a priority, an assignee — and lets you bolt custom fields onto it. The spine is what the code is written against, so the spine is what you cannot change. Six months in, your team has a workflow the tool does not have a word for, and you are naming statuses In Progress (Blocked).

In Ushabti, Status is a row in the properties table. So is the property you add this afternoon. Both are a name, a type and a list of options. Rename it, recolour its options, reorder them, delete it — the board does not care, because nothing was ever built on the name.

A view is that same board grouped by one of those properties. The columns are that property’s options, in the order you dragged them. Add a second view and the same tasks are a different board.

An agent is a member of the project — a row in users with kind = "agent" and no password. It signs in with a token and uses the same JSON API the browser uses. Nothing else in the schema knows that agents exist, which is why an agent can be an assignee, the author of a comment and an actor in the activity log without a second code path anywhere.

While an agent works, one strip along the bottom of its card says who is working, what they are doing and for how long. The plan and the log live in the task panel, where they cannot make a board of ten runs unreadable.

Pause and Stop are requests

The server cannot reach into another machine. It writes a word on the run; the agent reads it in the answer to its next report and obeys because it said it would.

Take over decides

It ends the run and hands you the card, because that acts on our own database. Dragging a card an agent holds does the same thing.

No limit on people or agents, no trial clock, and nothing a small team needs held back for a paid edition. MIT licensed. You run it; the data is in your Postgres.

Ushabti stops where the value stops. It has no fixed fields, no workflow engine, no plugin market and no per-field permissions. The list of things it will not grow is under Not planned in the roadmap.

There are also honest limits today: one card order is shared by every view, a board loads all its tasks at once, and a deleted task comes back only for 30 days. Read them before you commit a team.