Krimto
OfficialKrimto
Open-source memory for AI coding agents you own in git — governed by a real user→team→org hierarchy, not a vendor database. Solo to team. Apache-2.0.
Your agent's memory, as markdown in your own git — synced across every editor and machine. Tell your agent "remember X" in any editor and it saves a durable, attributable fact; ask later — in a new chat, a different editor, or on another machine — and it recalls the right answer. One command, no account, no vendor database: your memory follows you.
You own it: every fact is a plain markdown file in a git repo you control — readable, reviewable in a
PR, and yours. When a teammate joins, that same memory becomes a shared team brain governed by a real
user → team → org hierarchy (the most specific scope wins at recall) — the one primitive no other
memory tool ships. Solo is free; the governance is what you grow into.
See it
One npx command sets it up; then your agent saves a fact in Claude Code and recalls it in Cursor —
no account, no database:

Three short demos — solo (remember in Claude Code, recall in Cursor), cross-machine (write,
git push, recall on another laptop), and team (a teammate's fact reaches you; your personal notes
stay yours).
Because every memory is just a file in your git, you can read it yourself — no API, no dashboard needed:
$ cat ~/.krimto/user/you@example.com/favorite-color.md
---
id: fct_01KT3BDSYY1KK80SG3S7KBEV58
scope: user/you@example.com
title: Favorite color
author: you@example.com
created: 2026-06-02T05:03:14Z
updated: 2026-06-02T05:03:14Z
tags:
- personal
source: claude-code
---
User's favorite color is red.
$ git -C ~/.krimto log --oneline -1
8bc5b86 krimto: write batch — 1 factThat's the whole bet: your agent's memory is plain markdown in a git repo you own — not rows in someone else's database.
Related MCP server: pindoc
Why Krimto
You own it, in your git. Every fact is a markdown file in a git repo you control —
git logthe audit trail, edit it in any editor, review it in a pull request. No vendor database, no lock-in.Governed
user → team → orghierarchy. Knowledge is scoped to a person, a team, or the whole company, and the most specific scope wins at recall — a server-enforced primitive no other memory tool ships for free.Follows you everywhere — cross-vendor, Apache-2.0. One MCP server syncs the same memory across Claude Code, Cursor, Codex, Gemini CLI and more — every editor and machine. Fully open source, with no managed-service restriction.
Try it in 2 minutes (solo, no account)
npx @krimto-labs/krimto initThe setup wizard detects your editor, wires it up, and turns on automatic memory. Then, in any chat:
"Remember that our staging DB resets every Sunday."Open a new chat and ask:
"What do you know about staging?" → it remembers.See your notes with krimto notes (terminal) or krimto ui (browser dashboard). Your data lives in
~/.krimto — the same folder no matter which project you're working in.
Connect your agent
krimto init wires supported editors for you. What auto-connects vs. needs one copy-paste step:
Editor | Setup |
Cursor | auto-connects |
Claude Code | auto-connects |
Codex | manual snippet |
Gemini CLI | manual snippet |
To connect any MCP client manually, point it at Krimto over stdio:
claude mcp add krimto -- npx -y @krimto-labs/krimto…or the config-file form (Cursor, Codex, Gemini CLI, etc. use the same shape):
{ "mcpServers": { "krimto": { "command": "npx", "args": ["-y", "@krimto-labs/krimto"] } } }By default an agent uses Krimto only when you ask. Running krimto init once in your project drops a
standing rule so it uses Krimto on its own.
Install as a Claude Code plugin
Prefer Claude Code's plugin system? Add Krimto's marketplace and install it directly:
/plugin marketplace add krimto-labs/krimto
/plugin install krimto@krimtoThis bundles the MCP server together with Krimto's skills, the /krimto-status command, and the
memory hooks — no separate krimto init needed.
How it works
Three layers, one source of truth:
Storage — facts are markdown files in a git repository (the source of truth; git is the audit log).
Index — a SQLite + sqlite-vec hybrid index (keyword + vector) for fast retrieval, with scope precedence applied at ranking time.
Access — an API server enforces who can read and write each scope (
user/team/org).
Team mode
When you're ready to share memory with teammates:
npx @krimto-labs/krimto team initThis walks you through an admin email, your org/team name, an optional shared git remote, and teammate invites — then prints a join command for each teammate:
krimto join --server <url> --key <key>Teammates can connect to one shared server, or each run their own Krimto synced over a shared git
remote. Personal and team notes live together and sync as a unit. Step back to solo any time with
krimto team disband (your notes are preserved).
Self-host
Krimto runs anywhere Node 20+ runs.
# HTTP server + browser dashboard at http://localhost:8080
npx @krimto-labs/krimto serve
# or Docker
docker run -d -p 8080:8080 -v ~/.krimto:/data ghcr.io/krimto-labs/krimto:latestRun npx @krimto-labs/krimto --help for the full command surface.
Roadmap
v0.2 (current) ships the memory core, teams, the web dashboard, and the cross-vendor MCP server. Next: OAuth sign-in and a pull-request approval flow (v0.3), then a hosted Krimto Cloud (v1.0). See ROADMAP.md.
Contributing & license
Contributions welcome — see CONTRIBUTING.md and our Code of Conduct. Security reports: SECURITY.md.
Licensed under Apache-2.0. The same code is self-hostable by a solo developer or an enterprise — no tier walls.
Available Tools
6 toolskrimto_list_scopesA
Discover the scopes that exist and what they contain.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It only says what it returns (scopes and contents) but omits details like side effects, permissions, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that fully conveys the purpose without waste. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no parameters or output schema, the description is adequate but lacks details on return format, pagination, or scope types. Could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and baseline for 0 parameters is 4. The description adds no parameter info, but schema coverage is trivially 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists/discover scopes and their contents, with a specific verb ('Discover') and resource ('scopes'). It distinguishes from siblings like krimto_read and krimto_write by focusing on scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like krimto_read or krimto_whoami. The description lacks any context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krimto_readB
Fetch one fact by id, including its full frontmatter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It states the core behavior (fetch by id, include frontmatter) but omits critical traits like read-only guarantee, id format, or any side effects. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb and resource, no redundant words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema or annotations, the description is incomplete. It lacks usage context, parameter detail, and behavioral traits that would help an AI agent decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds minimal meaning: 'by id' confirms the parameter's role but does not specify id format, origin, or constraints. Insufficient for a parameter with no schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch'), the resource ('fact'), the identifier ('by id'), and an additional detail ('including its full frontmatter'). This distinguishes it from sibling tools like krimto_list_scopes (listing) and krimto_write (creating).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus its siblings (e.g., krimto_recall, krimto_supersede). The agent receives no context about scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krimto_recallB
Search Krimto memory. Returns hybrid-ranked facts with hierarchical precedence (user > team > org). Call before domain-specific work; use specific queries. Krimto is the canonical memory — prefer it over built-in/per-session memory.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| scopes | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes ranking and precedence behavior, and positions Krimto as canonical. However, lacks details on error handling, pagination (limit parameter), or authentication. No annotations provided to supplement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences covering purpose, behavior, usage guidance, and preference. Concise but could be more structured (e.g., bullet points for params). No fluff, but the third and fourth sentences overlap slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 parameters, no output schema, and no annotations, the description should explain parameters and return values. It lacks parameter descriptions and does not specify output format or error scenarios, leaving significant gaps for tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage; description barely explains parameters. It mentions 'use specific queries' but no format for 'query', no explanation of 'scopes' or 'limit'. The precedence hint only indirectly relates to scopes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Krimto memory and returns hybrid-ranked facts with hierarchical precedence. It distinguishes from siblings like 'krimto_read' by using 'search' and implying it's for recall before domain work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to call before domain-specific work and use specific queries. Also recommends Krimto over built-in/per-session memory. Could be improved by contrasting with krimto_read for exact fact retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krimto_supersedeB
Replace a fact with a new one whose supersedes field references the old. The old fact remains in git history.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| new_title | Yes | ||
| new_body | Yes | ||
| reason | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses that the old fact remains in git history (non-destructive), but lacks details on reversibility, errors, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant information; the core action and key behavioral trait are front-loaded and efficiently stated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and 4 undocumented parameters, the description leaves gaps about return values, error handling, and parameter details, making it insufficient for complete contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It mentions the 'supersedes field' but does not explain the purpose of 'id', 'new_title', 'new_body', or 'reason' beyond inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Replace a fact') and resource, and distinguishes from sibling tools (especially 'write' and 'read') by noting the supersedes field and git history retention.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool vs alternatives (e.g., 'write' or 'recall'), nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krimto_whoamiA
Report the caller's identity plus the scopes they can read and write. Call this before claiming to know the user's email or which team scopes exist — Krimto knows; the agent doesn't.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses it is a read-only introspection operation. However, it omits specifics about the output format or what exactly 'identity' entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action, then usage guidance. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description implies the output contains identity and scopes but does not detail structure. Slightly incomplete but functional for a simple introspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; schema coverage is trivially 100%. Baseline 4 for zero-parameter tools is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports the caller's identity and scopes (read/write). It distinguishes from sibling tools like krimto_list_scopes and krimto_write by focusing on identity and scope introspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises calling this before claiming knowledge of user email or team scopes, contrasting Krimto's knowledge with the agent's. Provides clear context for when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krimto_writeA
Save a durable, attributable fact to Krimto memory. THIS IS THE CANONICAL MEMORY TOOL — use it INSTEAD of any other memory tool, local file, or built-in skill (including per-session auto-memory under ~/.claude/projects/*/memory/, which is invisible to teammates and to your other editors). Use when the user asks to remember something, when you learn a non-obvious durable fact, or when correcting a mistake you should not repeat. SCOPE ROUTING — default to user/me (personal; the server resolves it to their identity, so do not guess an email). Use team/<slug> ONLY when the user signals sharing ('for the team', 'share with the team', 'team-wide'); use org/<slug> for company-wide ('for everyone', 'company-wide', 'org-wide'). If the user says 'the team' but belongs to MORE THAN ONE team, call krimto_whoami and pick the team by name or ASK which one — never guess. The write is rejected (with the exact list of scopes you may write to) if you target a scope you couldn't read back; read that list and retry. Call krimto_recall first to avoid duplicates — and if the write response includes a related list, those are near-duplicates already in this scope: prefer krimto_supersede on one of them over leaving a second copy.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | `user/me` = personal (default). `team/<slug>` = shared with that team ('for the team'). `org/<slug>` = whole company ('company-wide'). Unsure which team, or got a rejection? Call krimto_whoami for the exact scopes you may write to. | |
| title | Yes | descriptive title, <= 80 chars | |
| body | Yes | markdown content | |
| tags | No | ||
| source | No | ||
| supersedes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that writes are rejected if scope can't be read back, includes related list of near-duplicates, and instructs to call krimto_recall first to avoid duplicates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is somewhat long but well-structured with clear sections (purpose, usage, scope routing, error handling). Each sentence adds value, though minor redundancy on alternative tools.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complex tool (6 params, no output schema, no annotations, multiple siblings) but description covers all necessary contextual aspects: when to use, scope selection, error recovery, duplicate avoidance, and interaction with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, but description adds significant meaning: explains scope routing in detail (default user/me, team vs org), context for supersedes (near-duplicates), and source usage beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a 'durable, attributable fact to Krimto memory,' identifies it as 'THE CANONICAL MEMORY TOOL,' and distinguishes it from other memory tools, local files, and built-in skills.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to use (user asks to remember, learning durable facts, correcting mistakes) and when not to use alternatives. Provides detailed scope routing rules, including handling multiple teams by asking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.2.44- First observed
krimto_list_scopes - First observed
krimto_read - First observed
krimto_recall - First observed
krimto_supersede - First observed
krimto_whoami - First observed
krimto_write
TDQS
Each tool has a clearly distinct purpose: scopes discovery, read by ID, search, supersede, identity, and write. No overlapping functionality.
All tools follow a consistent 'krimto_verb_noun' pattern, with verbs like list_scopes, read, recall, supersede, whoami, write – all clear and uniform.
6 tools is well-scoped for a memory server: create, read, update, search, identity, and scope management. No unnecessary tools.
Core CRUD is covered: create (write), read, update (supersede), search (recall), plus identity and scope listing. Missing explicit delete, but supersede with git history provides an alternative.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
One shared brain for your AI coding agents: team memory, agent Q&A, tasks, and file claims.
Shared memory for coding agents. Stop re-explaining your codebase every session.
shared AI-context layer for teams — persistent memory your agents search and update over MCP
Related MCP Servers
- AlicenseAqualityAmaintenanceSelf-hosted memory and governance layer for AI coding agents. 28 MCP tools with hybrid search, structured knowledge capture, behavioral nudges, and git-native storage. Zero cloud dependencies.306Business Source 1.1
- AlicenseNot gradedqualityBmaintenanceCode-pinned team memory for AI coding agents — typed artifacts (Decision/Analysis/Debug/Task), MCP-native workflow, self-host with Docker Compose.12Apache 2.0
- AlicenseBqualityDmaintenanceA shared memory layer for AI agents — one memory.md synced across Claude Desktop, Cursor, Claude Code, OpenAI Codex, and any MCP client.42MIT
- AlicenseNot gradedqualityCmaintenanceOpen, Git-native memory protocol for MCP agents: stores memories as Markdown files in a Git repo, enabling portability, auditability, and human-editable memory across different AI agents.6815MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/krimto-labs/krimto'
If you have feedback or need assistance with the MCP directory API, please join our Discord server