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, rather than the model remembering to check, so a note pushed on your laptop shows up on your desktop within seconds. Nothing is injected into the conversation.
Type a reminder and push it. The three views below pick it up the way the real ones do.
-
Claude Code · laptopwhenever you run
/mokkan list$ /mokkan list -
Codex · desktopthe mokkan skill, at the start of the next task
$ mokkan pending -
mokkan pane · desktopthe mod, on its next refresh (every 15 seconds)
TODOs 0 │ Reminders 0 │ Archived 0 No todos. t adds one.
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 pane is open, is emailed to you. Todos, which have no due time, are never emailed. 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. An open pane shows it as a toast within 15 seconds. With no pane open, it goes out by email.
delivered
Shown as a toast in the pane. If no ack comes, the email goes out anyway.
acknowledged
You’ve seen it. It stays on the stack until you pop, dequeue or finish it.
Only a reminder with a due time is emailed, and at most once. With a pane open, it’s emailed if you haven’t acknowledged the toast within 3 minutes. With no pane open in the last 5 minutes, the server waits 5 minutes after the due time, and a pane that opens in that window shows it first. Acknowledge it first, from the pane, mokkan ack or Codex, and there’s no email and the credit held for it comes back.
- 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, printed straight away, and as mokkan … in any shell. To have Claude run it for you, ask in words: the plugin’s /mokkan:mokkan skill does it. 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 on its own opens it, and closes it again. 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 ship inside plugins, so there’s nothing extra to install.
mokkan 49 cr ──────────────────────────────────────────── TODOs 3 │ Reminders 1 │ Archived 4 ▸ ▎ 1: rotate the staging db password ▎ 2: reply to the RLS review comments · 3: bump node on the CI runners ──────────────────────────────────────────── acked · bump node on the CI runners t todo · r reminder e edit · w when · d archive · a ack v view reminders · s sync · b buy l log out · h help · q close
▎ open (cyan a todo, magenta a reminder), · acknowledged, ✓ archived; a reminder’s time sits on the right.- ↑ ↓ or 1–9
- Point at a row. Press it again to archive it, or to reopen it on the Archived tab.
- t / r
- Push a note, or schedule one:
2h call the bank. - e / w
- Edit the text, or the due time.
- d / a
- Archive, or acknowledge.
- v / s
- Switch between TODOs, Reminders and Archived; sync. It opens on Reminders while one is due.
- l / r
- Log in or register right in the pane. The password is masked.
It refreshes every 15 seconds and after every action, and a reminder that comes due while it’s open arrives as a toast. Each refresh tells the server a session is active. Esc hands the keyboard back to the prompt; ctrl+x tab takes it again, and /mokkan closes the pane.
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 pane,
/mokkan(alone it toggles the pane; with a verb it runs it), and a skill Claude uses when you ask in words (the menu lists/mokkanas/mokkan:mokkan). 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
rin 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 pane,
/mokkan, and the skill Claude uses when you ask in words. - 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-cli.md
/mokkan-cli, for sessions without the plugin: 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