jot
Shared, local-first memory for every AI agent, stored as Markdown and versioned in git.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
https://github.com/ArpitK24/jot/releases/download/v0.1.1/jot-0.1.1-linux-amd64.mcpbhttps://github.com/ArpitK24/jot/releases/download/v0.1.1/jot-0.1.1-linux-arm64.mcpbhttps://github.com/ArpitK24/jot/releases/download/v0.1.1/jot-0.1.1-darwin-amd64.mcpbhttps://github.com/ArpitK24/jot/releases/download/v0.1.1/jot-0.1.1-darwin-arm64.mcpbhttps://github.com/ArpitK24/jot/releases/download/v0.1.1/jot-0.1.1-windows-amd64.mcpbhttps://github.com/ArpitK24/jot/releases/download/v0.1.1/jot-0.1.1-windows-arm64.mcpbDocumentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
jot
Shared, local-first memory for every AI agent.
Tell Claude Code you use pnpm, and Cursor already knows it tomorrow. jot is one memory on your machine that every MCP-capable agent can read and write. It's stored as plain Markdown and versioned in git.
$ jot add -k preference -t js "Use pnpm, never npm"
remembered 20261103-134832-fb9e (global)
$ jot search "package manager"
20261103-134832-fb9e preference global Use pnpm, never npm #js
Why
- One memory, every agent. Claude Code, Cursor, Codex and any MCP client share it.
- Yours, on disk. Each memory is a readable
.mdfile. No cloud, no account, no database. - Git-versioned. Every change is a commit, so you get diffs, blame and undo for free.
- Zero dependencies. A single static Go binary using only the standard library.
Install
Download a binary for macOS, Linux or Windows from Releases, or build with Go 1.23+:
go install github.com/ArpitK24/jot/cmd/jot@latest
It's also listed on the official MCP Registry
as io.github.ArpitK24/jot, with one-click .mcpb bundles on every release.
Then create your memory store:
jot init
Then connect your agents with docs/setup.md. For Claude Code:
claude mcp add jot --scope user -e JOT_SOURCE=claude-code -- jot serve
How it works
~/.jot/ global memory (or $JOT_HOME)
20261103-134832-fb9e.md
.git/
<repo>/.jot/ optional project memory (jot init --project)
A memory file:
---
id: 20261103-134832-fb9e
kind: preference
tags: [js, tooling]
source: claude-code
created: 2026-11-03T13:48:32Z
updated: 2026-11-03T13:48:32Z
---
Use pnpm, never npm.
Recall uses BM25 ranking with boosts for tag matches and recent updates, across project memories and then global ones.
MCP tools
| Tool | What it does |
|---|---|
remember | Save one preference, decision, fact or note |
recall | Search memory for what's relevant to the task |
update | Rewrite a memory that changed |
forget | Delete a memory |
list | Newest memories, filtered by kind or tags |
CLI
jot init [--project] jot search <query> jot show <id> jot log
jot add [-k -t -p] text jot ls [-k -t] jot edit <id> jot where
jot serve jot rm <id> jot version
Roadmap
- [ ] Merge near-duplicate memories instead of piling them up
- [ ] Expiry and review for stale facts
- [ ] Optional local embeddings (Ollama) for semantic recall
- [ ]
jot syncthrough a git remote across machines - [ ] TUI browser
License
MIT
Frequently asked questions
What is jot?
Shared, local-first memory for every AI agent, stored as Markdown and versioned in git.
How do I install jot?
Follow the installation steps in its documentation, shown on this page and in its repository.
Does jot need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is jot open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains jot?
It is published by ArpitK24. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.