Source-available · Self-hosted · LLM-agnostic

Your knowledge
survives the session.

Zima is a command-line knowledge layer for the AI era. It stores your notes as plain Markdown, indexes them locally, and exposes the whole vault to AI agents over MCP. No cloud required. No lock-in.

Get started See how it works
~/vault — zima

What it is

Infrastructure, not an app.

Zima is to knowledge what git is to code — a plain-text, queryable store that lives on your filesystem. AI agents write to it through MCP. You read and write through the CLI or TUI. Same vault. Same moment. No sync required.

01
Plain Markdown files
Notes live on your disk as readable .md files. No proprietary format. Zima indexes them in a local SQLite database; you own the files.
02
MCP server built-in
Run zima serve --mcp and any MCP-compatible agent — Claude, Cursor, and others — gains persistent memory.
03
Structured by default
Every note has a type: note, decision, question, finding, reference. Filter and search instantly.
04
Embeddings optional
Semantic search via Ollama, OpenAI, or any OpenAI-compatible API. The provider is a swappable trait, so you change models freely.

Why it exists

Three moments Zima is built for.

Morning digest
The agent worked overnight. Open Zima and see every decision it made, every question it raised. Context — not just code diff.
zima sessions list --limit 1
Quick capture
A thought surfaces mid-review. Capture it in three seconds, tag it, move on. It'll be searchable forever.
zima add "..." --type finding
Search the past
"Why did we choose Kafka?" Full-text and semantic search across every note your team and agents have ever written.
zima search "kafka"

The shared layer

Agent writes. Human reads.
Same vault. Same moment.

Zima is the connective tissue between your AI agent and you. No export. No copy-paste. One persistent source of truth.

Agent claude · MCP tool call
// Claude saves a decision via MCP
tool: "save_decision"
title: "Use Kafka for event streaming"
tags: ["kafka", "arch", "streaming"]
rationale: "Chose Kafka over RabbitMQ. Better
partition tolerance at scale..."

✓ Saved notes/kafka-streaming.md
Human terminal · same vault
$ zima sessions list --limit 1

claude 14 Apr · 45 min
  task: "Refactor event pipeline"
  saved: 2 decisions · 1 finding

$ zima search "kafka"

  1 kafka-streaming decision just now
  2 kafka-consumer-lag finding 2d ago

Get started

From source to a working vault.

Build from source
First run
$git clone https://github.com/openzima/zima-cli.git
$cd zima-cli && cargo build --release# requires Rust 1.75+
$cp target/release/zima ~/.local/bin/
$zima init ~/vault
$zima add "First note" --type note
$zima serve --mcp# start MCP server for agents

Design principles

What Zima is not.

Most decisions in Zima are things we chose not to build.

01
Not cloud-first
Your vault lives on your machine — local files, a local SQLite index. No cloud required. Self-host forever.
02
Not agent-centric
AI is a lens, not the foundation. Zima works perfectly with zero AI configured.
03
Not a note-taking app
Infrastructure doesn't have a primary UI. zima is headless first. Interfaces are optional.
04
Not proprietary
Plain Markdown files; metadata in a local SQLite index. You can walk away tomorrow and keep everything.
05
Not locked to one LLM
Ollama, OpenAI, any OpenAI-compatible endpoint — or nothing. The embedding provider is a swappable trait.