newhand a task to a coding agent →

Your tasks, one keystroke away.

monoban is a keyboard-first kanban board for developers. Projects, columns and tasks, and nothing you have to learn to ignore. Drive it with a few keys in the browser, from your terminal, or hand a task to Claude Code or Codex and watch it open the pull request.

We’re letting people in a few at a time. Leave your email and we’ll write when it’s your turn.

~/monoban — live demofull screen ↗

## why monoban

Simple on purpose.

Most boards keep growing until managing the tool is a job of its own. monoban keeps what a board needs, and makes that fast.

It started as a personal tracker by someone who found the popular boards heavy: a dozen clicks to add a task, a modal for every edit, a settings page for everything.

monoban borrows from terminals and editors instead. It opens straight to your board, remembers where you were, and gets out of the way. You spend your time on the tasks, not on the tool.

git diff every-other-board monoban
@@ what we left out, on purpose @@- sprints, story points and burndown charts- required fields and custom workflows- a setup wizard before your first task- notification badges asking for attention+ projects → columns → tasks+ a title and a description, with checklists from - [ ]+ a column limit, when you want one+ every action one key away
  • Every action has a key

    The command palette lists every action with its shortcut beside it, so you learn the keys by using it. The mouse still works: drag anything anywhere.

  • Capture is instant

    Press n, type, press enter. The input stays open for the next task. No form, no dialog, no losing your train of thought.

  • One screen

    A task opens beside the board, like a tab in your editor. The board never goes away, and j and k walk through tasks with it open.

  • Calm by default

    Monochrome, one monospace font. Colour shows up only when it means something: a column, your selection, a limit you went past.

  • Undo, not “are you sure?”

    Delete a task and bring it back with u. Only changes that touch many tasks at once ask before they happen.

  • Never waits on the network

    Every change shows up the moment you make it and saves in the background. The status bar says saving… and then synced.

## one board

One board. Three ways in.

Plan in the browser, work from your terminal, hand tasks to an agent. Every change lands on the same board, in step, whichever way it came in.

your boardthe same projects, columns and tasks, saved as you goy shows a task's history: what changed, when, from the web or the cli

## keys

Learn it in a minute. Keep it for years.

Ten keys cover almost everything. Arrows always work; vim keys are on by default and you can turn them off on any device. Forget one? ⌘K finds any action and shows its key.

Show the keys for

The status bar shows NORMAL, INSERT or COMMAND, so you always know whether a key types text or runs an action. Single-key shortcuts never fire while you're typing.

select a task
jk
switch column (past the first: your projects)
hl
move to the next column
⇧l⇧h
reorder in the column
⇧j⇧k
to the top · the bottom
⌘⇧↑⌘⇧↓
new task
n
open a task
↵o
filter the board
/
delete · undo
xu
every command
⌘k
every shortcut
?

## cli

The same board, in your terminal.

Add a task without leaving your editor. Close it when the pull request lands. The monoban CLI works on the same board you see in the browser, and it's how your coding agents read and write it too.

brew install thiagodmont/tap/monoban
npm install -g monoban

Homebrew installs a standalone binary for macOS and Linux (no Node needed). npm needs Node 22.12 or newer.

  • monoban login approve it in your browser, or with a code over SSH
  • monoban link ties a project to a GitHub repo, so commands in that clone just work
  • monoban start SHOP-14 checks out the task's branch and moves it to In progress
  • monoban attach --pr puts this branch's pull request on the card
  • monoban today what's planned in every project, overdue first
  • --json on every command, and personal access tokens for CI
  • completion for bash, zsh and fish: commands, projects, columns and tasks
  • and a typed REST API underneath, described in OpenAPI
zsh — ~/code/shop
~/code/shop main $ monoban add "Fix the flaky checkout test" -c todoAdded SHOP-14 to To do: Fix the flaky checkout test~/code/shop main $ monoban list todo inpshop (SHOP) To do 2  SHOP-14  Fix the flaky checkout test              today  SHOP-9   Cache product images at the edge            3d In progress  2/3  SHOP-11  Refunds from Stripe webhooks     [2/4]      1d  SHOP-12  Dark mode for the dashboard                 4d~/code/shop main $ monoban done SHOP-11Moved SHOP-11 from In progress to Done.~/code/shop main $ 

## agents

From a plan to a pull request.

monoban works with the coding agents you already use. Yours turns a plan into tasks on the board. Then press R on any of them: an agent does the work on your machine and opens the pull request.

1 · plan

Your agent plans on the board.

One command teaches Claude Code or Codex your board. When it plans a feature, it offers the plan as tasks, tagged by phase, and adds them only when you say yes. Then it keeps them current while it works: starts each one, ticks its checklist, attaches the pull request.

monoban setup claude

or monoban setup codex. It installs a skill; run it again after you upgrade monoban.

claude — ~/code/shop
> let's plan invoices for the account page⏺ I read the board first (monoban list --json). Add these 4 tasks to SHOP?phase-1 Add the invoices table and its API routephase-1 Show invoices on the account pagephase-2 Email a receipt when an invoice is paidphase-3 Remove the old billing page> yes, and drop the last one for now⏺ monoban add "Add the invoices table and its API route" -t phase-1 -d -Added SHOP-21 to To do⏺ Added SHOP-21…SHOP-23. Shall I keep them current as I go?> 

2 · run

Press R. Get a pull request.

Hand a task to an agent and get back to yours. For Claude Code and Codex the runner does the git work: the task's branch, the commits, the push and the pull request, linked on the card.

  1. 1.Start a runner$ monoban runner

    In a terminal on the machine with the code. It asks monoban.dev for work once a minute, so nothing ever reaches into your machine.

  2. 2.Press R on a taskR

    Pick the agent and your clone's folder, and whether the pull request is a draft. The options follow the agent: a budget, a model, network access.

  3. 3.Watch it on the taskw

    The run tab shows each step as it happens and what the agent is doing right now. Stuck? It asks its question on the task instead of guessing.

SHOP-14 — Fix the flaky checkout test

A run of Claude Code on SHOP-14: it prepares the task's branch, codes, commits, pushes, opens a draft pull request and reports back on the task.

  • agentpipePlans, implements and verifies in steps; moves and comments on the task itself.$ monoban agentpipe install
  • Claude Codeclaude -p in auto mode: a classifier reviews what it does, and nothing waits for you.$ npm install -g @anthropic-ai/claude-code
  • Codexcodex exec in its sandbox: it writes in the folder, with the network off unless you say.$ npm install -g @openai/codex
  • poll

    It asks; nothing comes in

    The runner polls for work. No open ports, no tunnels, no inbound connections.

  • git

    Only in your clone

    A run works only in a checkout of the task's project, on the task's own branch. Uncommitted changes there? It won't start.

  • sandbox

    Agents keep their guard rails

    Claude Code runs in auto mode, a classifier reviewing each action. Codex stays in its sandbox, offline unless the run asks.

  • --confirm

    You can say no

    Start the runner with --confirm to approve each run in the terminal. Cancel from the task, or Ctrl-C.

try it in the live demo: open a task and press R ↑how runs work, step by step →

## security

Your work stays yours.

A task board ends up holding plans, bugs and notes you wouldn't post in public. monoban treats them that way.

  • rls

    Locked down in the database

    Every read and write runs as you, under Postgres row-level security. Your projects are yours alone.

  • auth

    Sign-ins that are hard to fake

    Sign in with Google, a password, or a one-time link sent to your email. A password has at least 12 characters, upper and lower case, a digit and a symbol, and changing it takes the current one. A bot check guards the sign-in form, and you get an email when your password changes.

  • sha256

    Only hashes of tokens

    CLI sessions and personal access tokens are stored as hashes. Sign out any device, or revoke any token, in one click.

  • mail

    You hear about new sign-ins

    Each time a CLI signs in to your account, you get an email saying which device and from where, with a link to sign it out.

  • offline

    On your device, until you sign out

    To work offline, your browser keeps the boards you open and the changes not sent yet, never a token or your notes. Settings › This browser lists them and removes them; signing out deletes them.

$ monoban init

Clear your head. Start a board.

Your first project comes with Backlog, To do, In progress and Done, and it takes less time to set up than reading this sentence. We’re letting people in a few at a time: join the waitlist and we’ll write when it’s your turn.

~/monoban — waitlist

One email when it’s your turn. No newsletter. privacy

brew install thiagodmont/tap/monoban
new here? the guide walks you through it all →