v0.12.0

$ tsk · a task board in your terminal · herdr plugin, runs standalone

A task board
for you and
your agents

One board where you both plan, pick up work, and move it through open, ready, started, blocked, review, done. You and your agents can create, edit, and complete tasks.

$ curl -fsSL https://gettsk.sh/install.sh | sh

macOS · Linux · Windows · MIT · Try the board ↓ · install guide →

desk · tsk ▾ · projects
NEEDS YOU2
▸ ▲ T31 Review the release checklist
│ Steps live on the task page. Notes wrap, never truncate.
└─ tsk
■ T29 Waiting on the pane label
IN MOTION1
● T27 Proof the landing copy once more
ON DECK · desk4
○ T25 Draft the announcement
○ T18 Global backlog note
inbox2
◌ T24 Capture the loose idea
◌ T30 Triage the new report
desk
enter open · ctrl+d done · ctrl+n next · ctrl+o inbox · ? help
1
Three tabs, always on screen. desk gathers work across every project. The middle tab is your selected project; p picks a different one. projects is the index of them all. 1, 2, 3 jump between them; the active tab is underlined.
01 why

Not another to-do app.

tsk is the shared surface between a developer and the agents working beside them. It lives in the pane you already have open. No browser tab, no sync service, no form takeover.

Capture never leaves the list.

+ opens one line on the status row. Enter saves, Shift+Enter keeps the line open, Tab expands onto the task page. Two tokens set project and thread from inside the title.

+ Fix the flaky bench !p tsk !t ci
enter save · shift+enter stay · tab page · esc close

Nothing completes itself.

Every mutating verb needs Ctrl. Bare letters do nothing, so a stray keystroke in a focused board cannot finish or delete work. Undo is one chord away.

enter open · ctrl+d done · ctrl+n ready · ctrl+o open · : palette
ctrl+x delete · ctrl+u undo · ? help · + capture

One store. Everyone at the table.

You, herdr's quick-capture popup, and your agents edit the same ~/.tsk. An agent drops a plan in as JSON, new tasks enter the inbox, and the board shows them on the next tick.

$ cat plan.json | tsk add
{ "created": [T33, T34, T35], "existing": [], "failed": [] }
$ herdr plugin action invoke quick-capture --plugin herdr-tsk

Try it. This board is yours to play with.

Double-click a task to open it, check off a step, or press + to add your own. Switch to Projects at a wide width, then move to a project to preview its board. Explore auth, API, and reliability work with threads and checklists. Press Shift+M to mark several tasks and act on them at once. Changes stay in this demo; refresh to start over.

tsk
drag the divider · jk move · hl close or open · + capture · ? help

Two real layouts. Beside an agent, tsk is the 78-column board herdr opens by default, and → or l peeks. Give it the whole terminal, or drag the divider past 110 columns, and the same board becomes the four-stage slider: → or l slides the task page in. On the Projects tab, moving to a project opens its preview at Split, and → or l makes that project board live at Rail. The demo takes bare s n o d b because browsers keep the control chords. In the app, every mutating verb needs Ctrl. Esc closes either split after its editors and overlays. At the full-board root, Esc exits the terminal app; here it only releases keyboard focus, keeping the current tab. This demo covers marking and updating task sets, browsing, opening tasks, plus adding, checking, renaming and removing steps. Full task editing and save recovery remain unfinished.

02 board

One list, ordered by urgency.

Inside Git, start on the repo’s project board. Outside Git, start on desk with the current directory one tab away. desk shows what needs you across projects, active work, and your loose backlog. The selected project stays one key away; projects is a searchable index with a View selector for cross-project threads. Filter threads within a project with t, or across projects with v on the index. Give the board 110 columns and it becomes a slider.

Wide: the four-stage slider.

At 110 columns and up, focus and geometry are the same thing. One rule, one footer, no colour.

  1. Board
    full width · board has focus
  2. Split
    board 40%, task page beside it · board has focus
  3. Rail
    dim 32-column rail, task page · task has focus
  4. Page
    full width · task has focus

→ / l one stage right ← / h one stage left Enter jump to the page and remember where you were Esc go back there

03 status

One workflow for you and your agents.

Six states shared by everyone on the board. You and your agents can create tasks, edit titles and notes, manage steps, and move tasks through the board, from open to done, using the CLI. Checking every step leaves the task status unchanged until it is explicitly updated.

  1. open inbox ctrl+o
  2. ready on deck ctrl+n
  3. started in motion ctrl+s
  4. blocked waiting ctrl+b
  5. review check it ctrl+r
  6. done in the drawer ctrl+d
inbox T14 Ship the landing page tsk
you press ctrl+n → ready
04 cli

Built for agents from the first commit.

Headless add, list, status, edit, and steps against the same store. An agent drops a plan in as JSON and it lands as open tasks in the inbox. It can move status, rewrite notes, check off steps, and mark work done.

$ tsk add -t "Draft release notes" -p tsk --thread release --json
{"outcome":"created","id":"5c1e…","number":32,"title":"Draft release notes","project":"tsk"}
$ tsk steps T32 add "Write the failing test"
added 9f Write the failing test
$ tsk status T32 start
status T32 started Draft release notes
$ tsk list T32
STARTED
 - 32 Draft release notes #release
   [ ] 9f Write the failing test
$ cat plan.json | tsk add
{ "created": [...], "existing": [...], "failed": [] }

Paste this into your agent

Use tsk for my task board. Run `tsk guide` and follow it; if tsk is not installed, read https://gettsk.sh/docs/agents.md and ask me before installing.

Everything an agent needs is one command or one URL. Every docs page is also Markdown: /docs/cli/ is /docs/cli.md.

Exit contract

0listed, created, existed, or applied
1one or more item refusals. Retry the failed subset.
2usage or parse error. Nothing persisted.
3store I/O. Indeterminate. tsk list before retrying.
  • skill
    tsk setup grok
  • docs
    https://gettsk.sh/docs/cli.md

Adds are idempotent on title, project, and thread. --json is flat and stable. CLI reference →

05 install

Install it. Open the board.

One binary, standalone or in Herdr. State lives in ~/.tsk on macOS/Linux or %LOCALAPPDATA%\tsk on Windows, whether you run it bare or inside Herdr.

$ curl -fsSL https://gettsk.sh/install.sh | sh

Or install with Homebrew:

$ brew install smarzban/tap/tsk

Windows 10/11 ARM64 or x86-64:

PS> irm https://www.gettsk.sh/install.ps1 | iex

If prompted on macOS or Linux, reopen your terminal or run the installer's printed export command. When Herdr is already installed, an interactive install may ask to run tsk setup herdr; when agent skill roots are detected it also asks once to install the tsk skill. The wrap-up then points at the board (prefix+t after Herdr setup, or tsk setup herdr / tsk setup when those asks are skipped). Open the board with tsk. Add a task with tsk add -t "your task title". Installation details.

06 next phase

Coming soon

From task to implementation.

The next phase brings agent execution into the board: assign a task to an agent, start implementation from tsk, and run the work in Herdr worktrees.

  1. 01

    Assign an agent.

    Choose who takes on the task, with its notes and steps as the brief.

  2. 02

    Start from the board.

    Initiate implementation where you already plan and track the work.

  3. 03

    Work in Herdr worktrees.

    Give the implementation its own worktree alongside your other work.

Planned for the next phase. Not available in the current build.