.kiwi/workflows/. Pages join a workflow through two frontmatter fields, workflow and state. KiwiFS then moves them only along the transitions you allow, and the web UI shows them as a Kanban board.
Use workflows for task boards, editorial pipelines, review queues, or any process where a page should move through fixed stages.
How it works
- A definition in
.kiwi/workflows/{name}.jsonlists the states and the allowed transitions. - A page opts in with
workflow: {name}and a startingstate. - Moving a card (or calling
POST /api/kiwi/workflow/advance) checks the move against the definition, then updates the page’s frontmatter through the write pipeline. Every move is a git commit.
Definition format
.kiwi/workflows/tasks.json
State fields
State fields
Transition fields
Transition fields
GET /api/kiwi/workflows lists their errors in an errors array. The kiwifs init templates kb, tasks, cms, adr, and research ship with a ready-made workflow.
Page frontmatter
tasks/add-sso.md
A card that is blocked cannot move to a state named
in_progress; the move returns 409. When a page has a status field that equals its old state, advancing updates status to the new state as well. Pages whose state matches no column appear under __unmatched__ in the board response.
Moving pages
- Web UI
- REST
- MCP
Click Kanban in the toolbar and pick a board. Drag cards between columns to advance them, or within a column to reorder them. Drag a page from the file tree onto a column to add it to the workflow. Use New board, Edit columns, and Delete board to manage definitions.
409 when the transition is not defined, the current state is terminal, the target column is at its WIP limit, or the card is blocked. Advancing to the state a page is already in returns "noop": true.
/workflow/advance is the only path that checks a workflow definition. A plain file write can still set any state. To guard every write, add global transition rules under [workflow] in config.toml with enforce_transitions = true. See Configuration.Pair workflows with claims
On a shared board, have agents claim a card before they work on it, then advance it. The claim tells other agents the card is taken; the workflow records where it is.Related
Workflows REST API
Definitions, assign, advance, reorder, and board.
Task claims
Leases that stop agents from colliding on a card.
Webhooks
Get a
transition event when a page changes state.Templates
Init templates that ship with workflows.