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.
- claude plugin marketplace add vicmpen/mokkan
- claude plugin install mokkan@mokkan
- 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
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.
-
Claude Code · laptopStop hook, after Claude’s next reply
Nothing due. -
Codex · desktopthe mokkan skill, at the start of the next task
$ mokkan pending -
mokkan pane · desktopthe mod, on its next refresh, with a toast
[todo 0] reminders 0 done 0 Nothing on the stack.
Acknowledge once, from any session, and every session knows.
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.
scheduled
mokkan in 1h30m …waits on the server, off the list, until its time comes.due
On the list and unseen. The next hook in any session picks it up. With no session open, it goes out by email.
delivered
Shown in a session. It keeps asking for an ack, and if one doesn’t come, the email goes out anyway.
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.
mokkan 49 cr ──────────────────────────────────────────── [todo 3] reminders 1 done 4 ▸1 ● rotate the staging db password 2 ○ reply to the RLS review comments 3 · bump node on the CI runners ──────────────────────────────────────────── acknowledged · bump node on the CI runners push schedule edit due done ack pop dequeue tab refresh logout close
● 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.
-
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:mokkancommand, and the pane. Inside Claude Code the same two steps are/plugin marketplace add vicmpen/mokkanand/plugin install mokkan@mokkan.- claude plugin marketplace add vicmpen/mokkan
- claude plugin install mokkan@mokkan
-
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
gin the pane. Every other machine logs in to the same list withmokkan login.- npx @vicmpen/mokkan-cli register you@example.com
-
Optional: mokkan in any terminal
Puts
mokkanon your PATH for scripts,mokkan ui, and the commands that need a terminal (register,login,buy).- npm install -g @vicmpen/mokkan-cli
-
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.
- git clone https://
github.com/ vicmpen/ mokkan - mkdir -p ~/.codex/skills && cp -r mokkan/codex
~/.codex/skills/mokkan
- git clone https://
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
mokkanCLI. TypeScript, no runtime dependencies. - claude-plugin/The plugin: the SessionStart and Stop hooks, the
/mokkan:mokkancommand, 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_URLat it.
Write it down. Get back to work.
- claude plugin marketplace add vicmpen/mokkan
- claude plugin install mokkan@mokkan