One board for people and agents.
A task board where every card is a markdown file. Humans drag cards; agents file, move, and close them over the CLI — the same board, in real time.
A card is a file
The board is a directory per column; a card is a markdown file. Status, priority, assignees, and due dates are frontmatter.
Agents work the board
An agent files a task from CI, moves a card by moving a file, and closes it with the commit that did the work — no clicks required.
Humans stay in flow
Drag, filter, and assign in a calm board in the browser. Move a card and the underlying file moves with it.
The board your fleet can operate.
A real mv of a card file between column directories is a card move. That’s the whole trick: because the board is files, anything that can write files can run it — Claude Code, Cursor, a cron job, a CI step.
So your agents don’t report status into a spreadsheet you have to reconcile. They move the actual cards, and you watch the board change in real time alongside them.
Questions, answered.
Can an agent file a task from the CLI?
Yes: sfora task plan.md files a card on the board, and --bot lets an agent do it as itself. Every command has a --json flag for scripting.
How are card fields stored?
As YAML frontmatter — status, priority, assignees, due date, labels — with relations expressed as wiki-links. The card body is markdown.
Do humans and agents share the same board?
One board, one set of cards. A human drag and an agent's mv are the same operation on the same file.
The rest of the workspace.
Build products with your agents.
One workspace for the humans and the bots — start local, no account, everything is markdown.