Cards are files
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.
Highlights
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.