木簡mokkan.dev

mokkan

A reminder list that follows you between agent sessions. Push a note in Claude Code; it surfaces in the next session you open, in Codex, in a pane docked beside the transcript, on any machine, and stays there until you say you’ve seen it.

  1. claude plugin marketplace add vicmpen/mokkan
  2. claude plugin install mokkan@mokkan
  3. npx @vicmpen/mokkan-cli register you@example.com

Needs Node 20.3 or later. Source on GitHub · Full setup, npm and Codex

[7c2e19a4] rotate the staging db password

due · pushed from Codex on the desktop · waiting for you

A sample reminder. Acknowledge it and watch it go.

One push. Every session.

The server keeps the only copy of your list. Each session asks it what’s due, through hooks rather than the model remembering to check, so a note pushed on your laptop shows up on your desktop within a turn or two.

Type a reminder and push it. The three views below pick it up the way the real ones do.

  1. Claude Code · laptopStop hook, after Claude’s next reply
    Nothing due.
  2. Codex · desktopthe mokkan skill, at the start of the next task
    $ mokkan pending
  3. mokkan pane · desktopthe mod, on its next refresh, with a toast
    [todo 0]  reminders 0  done 0
    Nothing on the stack.

Simulated in your browser. Nothing is sent to api.mokkan.dev.

Nothing closes until you say so.

Showing a reminder doesn’t mean you saw it. mokkan keeps it lit until you acknowledge it, and a scheduled reminder that nobody acknowledges, or that comes due while no session is open, is emailed to you. If it has to choose, it would rather tell you twice than not at all.

  1. scheduled

    mokkan in 1h30m … waits on the server, off the list, until its time comes.

  2. due

    On the list and unseen. The next hook in any session picks it up. With no session open, it goes out by email.

  3. delivered

    Shown in a session. It keeps asking for an ack, and if one doesn’t come, the email goes out anyway.

  4. acknowledged

    You’ve seen it. It stays on the stack until you pop, dequeue or finish it.

push <text>
Add to the top of the list.
pop
Take from the top: last in, first out.
dequeue
Take from the bottom: first in, first out.
in <duration> <text>
Schedule one: 30s, 10m, 2h, 1d, 1h30m.
edit <n|id> [--in 2h] <text>
Change a reminder’s text or due time in place.
ack <id> | all
Mark reminders as seen, everywhere at once.
done <id> · undone <id>
Finish one from anywhere on the list, or put a finished one back where it was.
list · pending · done · status
The whole list, what’s waiting, what you’ve finished, who you’re logged in as.
ui
The whole stack full-screen in any terminal, one key per action.

Each verb works as /mokkan … inside Claude Code (the plugin names it /mokkan:mokkan) and as mokkan … in any shell. A pop is a single atomic step on the server, so two sessions can never take the same item, and a popped item moves to done instead of disappearing.

Your stack, docked beside the conversation.

The plugin ships a Claude Code mod: a small module that runs inside your session, sees its events as they happen, and draws a pane of its own. /mokkan-pane opens it. In the fullscreen layout it docks beside the transcript and opens by itself when a session starts. On the main-screen layout it sits above the prompt.

Mods are hooks, and hooks ship inside plugins, so there’s nothing extra to install.

The pane at its 44 columns. ● due, ○ shown in a session, · acknowledged, ◷ scheduled.
↑ ↓ or 1–9
Point at a row. Press it again to mark it done, or to reopen it on the done tab.
p / i
Push a note, or schedule one: 2h call the bank.
e / t
Edit the text, or the due time.
a / k
Mark done, or acknowledge.
x / d
Pop the top, or dequeue the bottom, after a y/n.
s / r
Switch between todo, reminders and done; refresh.
l / g
Log in or register right in the pane. The password is masked.

It refreshes every minute and after every action, and a reminder that comes due while it’s open arrives as a toast. Esc hands the keyboard back to the prompt; ctrl+x tab or /mokkan-pane focus takes it again.

Why “mokkan”

Mokkan (木簡) are the thin wooden slips that clerks in 7th- and 8th-century Japan used for notes, labels and records. When a slip had done its job, they shaved the surface clean and wrote the next note on the same wood.

The terminal has kept that habit for fifty years: small plain-text tools that do one job and stay out of the way. mokkan is a slip for the age of agents. One line of text, an id in square brackets, and gone when you’re done with it.

Install

One CLI with no runtime dependencies, in three wrappers: a Claude Code plugin, an npm package for any terminal, and a Codex skill. They all share one account and one login. You need Node 20.3 or later.

  1. Add the plugin to Claude Code

    It brings its own copy of the CLI, the SessionStart and Stop hooks that put due reminders into the conversation, the /mokkan:mokkan command, and the pane. Inside Claude Code the same two steps are /plugin marketplace add vicmpen/mokkan and /plugin install mokkan@mokkan.

    1. claude plugin marketplace add vicmpen/mokkan
    2. claude plugin install mokkan@mokkan
  2. Create your account

    Run it in a terminal: it emails you a one-time code, then asks for a password with hidden input. You can also press g in the pane. Every other machine logs in to the same list with mokkan login.

    1. npx @vicmpen/mokkan-cli register you@example.com
  3. Optional: mokkan in any terminal

    Puts mokkan on your PATH for scripts, mokkan ui, and the commands that need a terminal (register, login, buy).

    1. npm install -g @vicmpen/mokkan-cli
  4. Optional: the Codex skill

    Codex has no hooks, so the skill tells it to check for due reminders at the start and end of every task. It needs the npm package from the step above.

    1. git clone https://github.com/vicmpen/mokkan
    2. mkdir -p ~/.codex/skills && cp -r mokkan/codex ~/.codex/skills/mokkan

Credits

Prepaid, no subscription. A new account starts with 50 free credits, and they never expire. When you need more, mokkan buy opens Stripe Checkout: €5 buys 500.

push
1 credit
edit
1 credit for every third edit
in <duration> <text>
1 credit, plus 1 for its email, charged only if the email is actually sent
pop · dequeue · done · ack · list
Free, always: reading and finishing never cost anything.

What’s in the repositories

  • mokkan/Everything that runs on your machine. MIT licensed.
  • src/The mokkan CLI. TypeScript, no runtime dependencies.
  • claude-plugin/The plugin: the SessionStart and Stop hooks, the /mokkan:mokkan command, and the pane.
  • claude-plugin/hooks/pane.tsxThe mod itself, one module. Read it before you trust it, as with any mod.
  • codex/SKILL.mdThe Codex skill: heartbeat and pending at the start and end of every task.
  • claude-command/mokkan.mdThe same command as a plain /mokkan: copy it to ~/.claude/commands/.
  • mokkan-server/The API behind api.mokkan.dev: Fastify and Postgres with row-level security. Run your own and point MOKKAN_SERVER_URL at it.

Write it down. Get back to work.

  1. claude plugin marketplace add vicmpen/mokkan
  2. claude plugin install mokkan@mokkan