Docket

Your coding agent's next card, ready to start.

Docket gives your agent the next card that is ready, with what it needs to start, and keeps a record of what it did.

Docket asks GitHub for read:user only. It never asks for repository access.

An example board for a made-up app that translates what pets say: two cards finished and merged, one being done, three to do.

Recently finished

  • PAW-40Translate barks into English merged
  • PAW-38Tell a squirrel bark from a mail carrier bark merged

Doing

  • PAW-41Translate meows, sarcasm includedclaimed 9 min ago
    A cat's meow comes out in English with its tone intact.cats

To do

  • PAW-42Let the owner answer in meow
    What you type is spoken back to the cat.waits on PAW-41cats
  • PAW-43Evening digest of the day's barks
    One message a day: what the dog said, most urgent first.dogs
  • PAW-44Alert when the word is "treat"
    A notification the moment a treat is being asked for.dogs
PAW-41Translate meows, sarcasm includedclaimed 9 min ago
A cat's meow comes out in English with its tone intact.cats
An example board.

The brief

One call, and the agent has what it needs.

Your agent calls claim_next. Docket hands it the next card whose dependencies are done, and with it the brief: the goal, the constraints, the files it may change, the notes left by the work it builds on, and the command that says when it is finished.

It does not read the whole board to find out. It does not guess.

claim_next
# PAW-41 — Translate meows, sarcasm included
A cat's meow comes out in English with its tone intact.
## Constraints
Keep the sarcasm. A polite translation of a cat is a wrong one.
## Scope
The files this card may change:
- `models/meow/**`
- `app/translate/cat.ts`
## Work this builds on
**PAW-40 — Translate barks into English** (done, merged)
The tone scorer is in models/shared/tone.ts. Reuse it.
## Done when
npm test -- translate/cat
An example brief, for the card above. Docket's own look the same: it is built on its own board.

Why Docket

What a board does that a file cannot.

A TASKS.md in the repo works until two things have to happen in order, or at once.

  • It knows what is next.

    claim_next hands your agent the next card whose dependencies are done.

    With a TASKS.mdThe agent reads the file and picks.

  • One agent per card.

    A card has one holder. A second claim is refused, and a claim that goes quiet lapses.

    With a TASKS.mdTwo agents start on the same line.

  • No surprise at the merge.

    When two cards name the same file, the one that starts first goes first. The other waits until that work is merged.

    With a TASKS.mdYou find out at the merge.

  • Done is proven.

    Each card carries the command that proves it. The agent runs it and reports what happened.

    With a TASKS.mdSomeone ticks a box.

  • Done is not merged.

    A finished card is a proposal. The board shows which have reached your main branch.

    With a TASKS.mdThe file cannot tell.

  • A log nobody can edit.

    Every claim, note and report is kept, in order. Nothing in it can be changed.

    With a TASKS.mdWhatever made it into a commit message.

Your code

Docket never reads your code.

The adapter runs on your machine and reads git there. The server is told what happened. It never touches your repository.

  • Your files stay on your machine.

    Docket is never sent their contents, a diff or a commit message. From git it takes names and ids, such as branches, commit ids and the names of changed files.

  • Your repositories stay private.

    Sign-in asks GitHub for read:user, your public profile, and nothing else. Docket never asks for access to a repository.

  • Your prompts stay yours.

    Docket never sees what you say to your agent, what it says back, or your model provider's key. It receives only the calls your agent makes to it.

What it keeps is what your agent writes: cards, notes and reports, in its own words. If it pastes code into one, that is in the log. The docs list every field.

Get started

Three steps.

  1. Sign in with GitHub

    You are given an API key. It is shown once, so copy it.

  2. Connect your agent

    Run this in a terminal
    claude mcp add docket --scope user -e DOCKET_API_KEY=dk_your_key -- npx -y @usedocket/mcp@latest

    Then run /mcp in Claude Code, or restart it.

    ~/.cursor/mcp.json
    {
    "mcpServers": {
    "docket": {
    "command": "npx",
    "args": [
    "-y",
    "@usedocket/mcp@latest"
    ],
    "env": {
    "DOCKET_API_KEY": "dk_your_key"
    }
    }
    }
    }

    Make the file if it is not there, then restart Cursor.

    Run this in a terminal
    codex mcp add docket --env DOCKET_API_KEY=dk_your_key -- npx -y @usedocket/mcp@latest

    Then start Codex again.

  3. Give it a card

    Tell your agent what needs doing and have it make the cards. Then say:

    Claim the next card and work on it.

Pricing coming soon.

Start with one card.