v0.14.0 · local-first · no account

Picking up where your AI agents left off

Agents write the resume. You type mental.
01$ npm i -g @balacode/mental
02$ mental install
03$ mental doctor
Node.js 22.13 or newer. The unscoped package named mental is a different project.
Sample session. Not your files. mental dashboard is the localhost page.
Works in the agents you already use
Claude CodeCursorGitHub CopilotCodexOpenCodeVS CodeKiro
01The tax

Feeling faster is not the same as picking up

Every new chat, every Monday, every second clone pays to rebuild where you were. The research measured it.
+20%how much faster experienced developers believed they were with AI.METR, 2025(opens in new tab)
−19%how much slower they actually measured on real issues.METR, 2025(opens in new tab)
74%of AI users did not notice they switch windows more than before.ICSE, 2026(opens in new tab)
02The loop

It already knows

No pre-configuration. No commands to learn. After install, your agents use it on the next chat.
01
Install copies the skill. Nothing else to configure. The next chat already knows.
02
You stay in the task. The agent writes the resume, the decision, and what is still in the air.
03
You do not learn a command list. Type mental when you want the pulse.
mental install
~/.agents/skills/mentalCursor · Claude Code · Codex · Copilot · OpenCodeHooks, MCP, and time tracking stay off.
03The pulse

You type mental

One screen, then it exits. Not a dashboard you keep open, not a dump of the chat.
ResumeThe exact next action, written by the last agent.
GitBranch, dirty state, and the last commit, read live.
Needs eyesWork an agent finished that nobody has reviewed.
In the airDirections and concerns that live nowhere else.
SettledDecisions in force, so nobody argues them again.
mental
$ mental Ship the pointer, not the dump. Open loops: noneAgainst PLAN.md
NowResolver landed (17:27)
Gitcursor/marketing-website-aac0 (dirty)
212b5b1 Release 0.14.0
Hops0
Needs eyes[verify] Resolver tests not reviewed
In the air[direction] Tom said ship the pointer
Later[thread] Come back to MCP
Unsettled[open] OKF markdown is the source of truth
SettledHeartbeat only, no standing TUI
more · mental doctor · mental search · mental --help$
04The residue

When the chat is gone

Same sample session. Two things git does not keep.
AttentionWhat is still in the air.
DecisionsWhy it stayed that way.
05In the host

Inside Claude Code

It reads the session. It does not write.

Above the prompt

Resume, pulse, and open counts in two rows. It steps aside for a survey.

Desktop Code tab

A panel for this session. Local sessions only, not cloud or WSL.

/mental

Now, residue, decisions, session, and time. Park and Hand off ask the agent.
Claude panel and Cursor sidebar in the docs
06The ledger

What leaves this machine

Journals stay here. Everything else is off until you turn it on.
Journals, decisions, residueMarkdown in ~/.mental/. No account. Uninstall keeps the files unless you type DELETE.
Stays here
Version checkThe package name, sent to npm. MENTAL_SKIP_UPDATE_CHECK=1 turns it off.
Optional
Decision modelRedacted text, only after you store a key in ~/.mental/config.json.
Opt-in
Privacy in the docs
07FAQ

Short answers

No. After install, agents write it on your behalf. You type mental when you want the pulse.
No. Mental CLI is project continuity, not conversation memory. Markdown files are the source of truth. There are no embeddings as source of truth, and there is no cloud store.
No. Git still records what changed. --against PLAN.md points at the plan. Mental holds the small amount those systems cannot see: resume, decisions, and residue.
No. Agents journal at task boundaries, real decisions, and residue in the air. Session hooks stay off until you run mental hooks on.
park encodes an interruption mid-hop. handoff is a planned close (journal plus heartbeat). pulse is a compact cross-project overview. The cheap mid-chat reload is still mental / heartbeat --json.
Run npm i -g @balacode/mental, then mental install, then mental doctor. Journals stay. From a git checkout: npm run mental -- install.
Agents continue the coding task and mention the install block. They never execute a .mjs file directly. Fail open.
Default store is ~/.mental (never commit). Project ./.mental only after mental local. Uninstall does not delete OKF files unless you type DELETE.
Only if you turn it on with mental option track on. Default off. Hours never go in git.
Three commands. Then your agents remember.
Read the docs