Skip to main content
Glama

Krimto

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.

License: Apache 2.0 npm CI

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:

Krimto — save a fact in Claude Code, recall it in Cursor

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 fact

That'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 log the audit trail, edit it in any editor, review it in a pull request. No vendor database, no lock-in.

  • Governed user → team → org hierarchy. 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 init

The 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@krimto

This 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:

  1. Storage — facts are markdown files in a git repository (the source of truth; git is the audit log).

  2. Index — a SQLite + sqlite-vec hybrid index (keyword + vector) for fast retrieval, with scope precedence applied at ranking time.

  3. 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 init

This 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:latest

Run 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 tools
krimto_list_scopesA

Discover the scopes that exist and what they contain.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
scopesNo
limitNo

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
new_titleYes
new_bodyYes
reasonYes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYes`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.
titleYesdescriptive title, <= 80 chars
bodyYesmarkdown content
tagsNo
sourceNo
supersedesNo

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 6 tool updatesv0.2.44
    • First observedkrimto_list_scopes
    • First observedkrimto_read
    • First observedkrimto_recall
    • First observedkrimto_supersede
    • First observedkrimto_whoami
    • First observedkrimto_write

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: scopes discovery, read by ID, search, supersede, identity, and write. No overlapping functionality.

Naming Consistency5/5

All tools follow a consistent 'krimto_verb_noun' pattern, with verbs like list_scopes, read, recall, supersede, whoami, write – all clear and uniform.

Tool Count5/5

6 tools is well-scoped for a memory server: create, read, update, search, identity, and scope management. No unnecessary tools.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Self-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.
    30
    6
    Business Source 1.1
  • A
    license
    Not graded
    quality
    B
    maintenance
    Code-pinned team memory for AI coding agents — typed artifacts (Decision/Analysis/Debug/Task), MCP-native workflow, self-host with Docker Compose.
    12
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    A shared memory layer for AI agents — one memory.md synced across Claude Desktop, Cursor, Claude Code, OpenAI Codex, and any MCP client.
    4
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Open, 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.
    68
    15
    MIT

Latest Blog Posts

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