Skip to content

The board

The board is where you organize tasks. In Volli, each task is a ticket. Its five fixed columns show the ticket’s state. Start a chat separately from the ticket workspace.

Home for a project named voltaic. Five columns (Backlog, Todo, Doing, Needs
Review, and Done) hold twenty-four tasks. The Doing column contains VLT-14,
“Cache composer drafts per project”, tagged composer and renderer.

Backlog. Work you’ve written down but aren’t committing to yet. Nothing runs here.

Todo. Work you intend to do next. Nothing runs here either.

Doing. Work is active. Move a ticket here when implementation starts, then open its workspace to start or return to a chat.

Needs Review. The ticket is ready for you to inspect its Change Set and decide what happens next.

Done. Finished. Volli keeps the ticket and branch. After the configured retention period, it can reclaim a clean worktree folder when no pull request is open and no work is running there.

The board records task state; it does not control chat lifetime. A ticket chat stays openable after the ticket moves.

The board button next to the ticket count switches between Board and List. Board is the kanban layout above; List lays the same tickets out as rows instead of cards, grouped by the same five columns. Both views share the same filtering and sort order, so switching between them never changes which tickets you see or the order they’re in.

The board header carries a Priority and, once a project has labels, a Label filter chip. Each opens a checklist, and you can select more than one value in it: picking two priorities shows tickets matching either. Clear appears once a filter is active and resets it.

The sort control next to the filters picks how each column orders its tickets: Manual (the order you left them in by dragging), Priority, Created, Updated, or Title. Every key but Manual has an independent Ascending/Descending toggle; Manual ignores it, since a drag order only goes one way. Switching to a different key and back to Manual restores the hand-arranged order, because sorting by a field never touches it.

Free-text search isn’t in this header. It’s part of the command palette (⌘K), which searches tickets and sessions across every project.

Two things move tickets, and they don’t have equal authority.

You. Drag a card, or run volli ticket move yourself. Agents use the same command — a move is always an explicit act, whoever makes it.

System lifecycle handling. Volli can react to a terminal session that exited, stalled, or was interrupted.

Session signals are not on this list on purpose. volli session blocked raises attention on the exact session that called it, with the agent’s --reason as the words you see — it flags, it never moves. volli session done records the session’s outcome in its own ledger and nothing more: an agent may not declare its own ticket ready for review.

If you move a ticket while its agent is still finishing, your move stands. A lifecycle event that arrives afterward won’t undo it.

For example: pull a ticket out of Doing because the agent is going the wrong way, and a stale “session ended” de-escalation landing a second later won’t shuffle the ticket again behind you.

Right-click a card for the fastest way to act on it without a drag or the CLI. The menu offers:

  • Move to a column: the same move as a drag, without the drag.
  • Priority: set it to low, medium, or high. The current priority carries a checkmark.
  • Resume last session: shown only when the ticket has a resumable session. Reopens it in the ticket’s workspace.
  • Remove worktree…: deletes the worktree’s folder on disk and keeps the branch. Disabled while any of the ticket’s sessions are still running. If the worktree has uncommitted work, Volli asks again before it lets you discard it.
  • Archive: see Archiving below.

A ticket carries a title, a Markdown body, a priority, labels, and a display ID like VC-12. The body matters most once an agent is involved: it’s the scope of the work and the instruction the agent starts from.

Priority is low, medium, or high. Labels are project-scoped records with their own colors, so the same label means the same thing across every ticket in a project.

Set priority from a card’s context menu, or from Properties on the ticket workspace’s Now rail. Labels have no context-menu entry; set them from the same Properties section, or when you create the ticket, from the composer’s Labels chip. Typing a name that doesn’t exist yet and pressing Enter creates that label for the project, so there’s no separate “manage labels” screen.

Every ticket workspace has a comment feed under its Activity section. Post one from the box at the bottom (⌘Enter submits) and it renders as Markdown. You can edit or delete your own comments; an edited comment is marked “edited” next to its timestamp.

Each comment is attributed to whoever posted it: you or a Session. Only your own comments carry edit and delete controls. Volli doesn’t let you alter what a Session posted.

Every ticket keeps an append-only event log. Volli adds entries and never rewrites them, so the history stays accurate even after the ticket’s title, body, or column changes.

Each event records who caused it: you, a session, or automation. Volli derives that attribution itself, so an agent can’t log something as though you did it.

Read a ticket’s history with volli ticket events.

Archiving a ticket takes it off the board and keeps everything else: its history, its branch, and its worktree. Reach every archived ticket in a project from the archive icon in the board header. From there, Restore puts a ticket back on the board, and Delete permanently removes it and its full history for good. It’s the one genuinely destructive action in this flow, and the only one that asks you to confirm it can’t be undone.

Volli watches every worktree ticket’s pull request in the background. This requires gh, the GitHub CLI, on your PATH. It offers Archive & clean in two cases: the pull request merged, in any column, or the ticket has spent the configured retention period in Done with no open pull request. Neither case archives the ticket by itself.

The prompt appears in the ticket workspace’s Now rail, under the repository summary. The button that normally reads Push updates or View PR changes to Archive & clean. Clicking it removes the worktree and then archives the ticket. If the worktree has uncommitted work, the action refuses and leaves the ticket on the board.

The Done retention period also governs automatic worktree reclamation. Once a ticket has spent that long in Done, Volli can remove its clean worktree folder when no pull request is open and no work is running there. The ticket remains on the board, and its branch, commits, and pull-request URL remain available. Volli sends a notification when it reclaims a folder.

Two ways to turn a prompt down. Keep worktree exempts the ticket from both archive prompts and automatic worktree reclamation until you remove the pin. Dismiss clears the current archive prompt for this launch; Volli can offer it again after the next launch. Both actions live in the same menu as Archive & clean.

Volli checks every worktree ticket about once a minute. If gh fails (not installed, not authenticated, offline), Volli backs off: it doubles the wait after each consecutive failed check, up to 15 minutes, then retries automatically without surfacing an error toast.

All docs as plain text