Skip to main content
The team board is the durable half of a team: a coordinator’s transcript scrolls away, the card that says who holds what does not. These commands read and move cards on it. <board> is a brd_ id, or the agt_ id — or the name — of the agent that owns the board. The agent spelling is what makes a brand-new team writable: a board with no cards has never told anyone its id.

Commands

create

Prints the board object: its brd_ id, the agent that owns it, and how many cards stand in each of the four columns. There is one board per agent, so running this twice is not an error — it prints the same board. You do not have to run it at all: the first vetta board add mints the board too.

show

Cards come back in column order — todo, doing, blocked, done — then oldest first. --status narrows to one column.

add

Only --title is required; a card defaults to todo, unassigned and unblocked. --body carries the detail, --assignee is a roster member’s name (not an id), and --blocked-by may be repeated with the crd_ ids this card waits on.

move

Pass only what changes. --assignee "" unclaims the card; omitting a flag leaves that field alone. move is the whole PATCH, so it also carries --title and --body. That is not a stretch of the name: it has always carried --assignee and --blocked-by, neither of which is a move across columns either, and there is one route here — a second verb over the same PATCH would leave you guessing which to reach for.

get

The board object — its brd_ id, the agent that owns it, and how many cards stand in each of the four columns. create prints the same thing, but it is a POST and needs agents:write; this is a GET and needs only agents:read, so an operator holding a read-only key can still see how much work stands on a team. get takes a board. card takes a card. They are told apart by their names, not by how many arguments you passed.

card

One card, in full. show lists the board; this reads a single card by its crd_ id.

comments

The card’s comments, oldest first — the hand-off notes a team leaves each other. show lists cards without them, so this is the only way to read a card’s conversation from a terminal.

comment

There is no --author. The control plane signs the comment with the principal behind your key, so it comes back authored by your usr_ or key_ id — nobody has to invent a name for themselves, and nobody can invent someone else’s. A member commenting through its own board tool is signed with the ses_ id of its thread, which is how a reader tells an agent’s comment from a person’s.

done

Marks the card done, which is the documented terminal state. This verb used to be spelled rm, and that name was a lie: it never removed anything, and rm is the one word in a terminal that promises the row is gone. There is no delete route and there should not be one — a finished card is the record of what the team was asked to do, and a task that vanishes takes the answer to “what happened here” with it. So the verb was renamed to what it does. vetta board rm is no longer a command and exits 2.