Kybase

io.github.KyrzinPublished by GitHub account Kyrzinv0.2.4Updated Oct 30, 2026

Self-hosted Markdown memory for AI agents: notes you can read and edit, with hybrid search.

VerifiedSTDIODesktop onlyFiles & StorageKnowledge & Memory

Overview

AI-generated overview

Self-hosted Markdown memory server that gives a local AI agent 18 tools to read, search, write and link notes stored in an embedded Postgres.

What you can do
  • Read, write and link notes in a local Markdown knowledge base
  • Search notes by full text (English and Russian, accent- and case-insensitive) and, with an embedding provider, by meaning
  • Check background embedding progress with an indexing status tool
  • Export the whole vault as a zip of plain Markdown files with frontmatter and wikilinks
When to use it
Use it when a local agent such as Claude Code, Claude Desktop or Cursor should keep persistent, human-readable memory across sessions without running Docker or a separate database. It suits single-machine setups; the full Kybase app is suggested for a web UI, graph view, sharing or several agents at once.
Requirements
Runs locally over stdio via npx (Node.js). No account or authentication. All variables are optional: KYBASE_DATA_DIR (default ~/.kybase), DATABASE_URL to use an existing Kybase Postgres, EMBEDDING_PROVIDER (ollama, google or openai), OLLAMA_URL and OLLAMA_MODEL, or GOOGLE_API_KEY / OPENAI_API_KEY for cloud embeddings. Expect a few hundred MB of memory while running.
Before you install
Choosing the google or openai embedding provider sends note text to that provider; Ollama keeps embeddings local. The embedded database has no password, so access relies on file permissions, and on Windows it binds a loopback port reachable by other processes running as you. The instance secret file encrypts stored provider API keys and must be kept with the data. The server writes and changes notes in your vault.

Installation

In SourceWeft

  1. Open Kybase in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

kybase-mcp

Persistent memory for AI agents, as a single command:

bash
npx kybase-mcp

No Docker, no database to install, no server to run. The first start creates a local knowledge base under ~/.kybase and speaks MCP over stdio. Your notes are plain Markdown in Postgres — running on your machine, leaving it only if you choose a cloud embedding provider.

This is the same MCP server the full Kybase app exposes over HTTP. Use this package when you want memory for a local agent; use the full app when you also want the web UI, the knowledge graph view, sharing, and access for several agents at once.

Connect an agent

Claude Code — .mcp.json in your project, or claude mcp add:

json
{  "mcpServers": {    "kybase": {      "command": "npx",      "args": ["-y", "kybase-mcp"]    }  }}

Claude Desktop — the same block in claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json).

Cursor — the same block in .cursor/mcp.json or ~/.cursor/mcp.json.

Several clients on one machine can use it at once: the first process to start owns the database, and the others connect to that process.

Restart the client and ask it to remember something. It gets 18 tools for reading, searching, writing, and linking notes.

Claude Desktop, one click — download kybase-mcp-<version>.mcpb from Releases and open it; the data folder and embedding provider are set in the extension's settings.

The server is listed in the official MCP Registry as io.github.Kyrzin/kybase.

Search

Full-text search works immediately, in English and Russian, accent- and case-insensitive.

Semantic search — finding a note by meaning when it shares no words with your question — needs an embedding provider. The local option is Ollama:

bash
ollama pull embeddinggemmaOLLAMA_URL=http://localhost:11434 npx kybase-mcp

Existing notes are embedded in the background as soon as a provider is available; indexing_status reports progress. Without one, nothing breaks — semantic search simply stays idle.

Reading your notes

The embedded database is not a folder of .md files, so this writes the whole vault out as one:

bash
kybase-mcp export vault.zip

Plain Markdown with frontmatter, folders as directories, [[wikilinks]] intact — open it in any editor. It is also exactly the archive the full Kybase app accepts under Settings → Import .zip, so starting here and moving to the web UI later costs one command in each direction.

Configuration

Every variable is optional.

VariableDefaultWhat it does
KYBASE_DATA_DIR~/.kybaseWhere the database and instance secret live.
DATABASE_URL(unset)Point at an existing Kybase Postgres instead of the embedded one. In this mode the package does not run migrations — the app that owns the schema does.
EMBEDDING_PROVIDERollamaollama, google, or openai.
OLLAMA_URL(unset)e.g. http://localhost:11434. Enables semantic search.
OLLAMA_MODELembeddinggemmaMultilingual by default; nomic-embed-text is smaller and English-leaning.
GOOGLE_API_KEY / OPENAI_API_KEY(unset)Cloud embedding providers. Picking one sends your note text to that provider.

Build from source

The package bundles code from the main repository, so build it from a checkout rather than from this directory alone:

bash
git clone https://github.com/Kyrzin/kybase.gitcd kybase/packages/kybase-mcpnpm install          # also builds, via the prepare scriptnpm install -g .     # puts `kybase-mcp` on your PATH

Your data

Everything is under KYBASE_DATA_DIR:

  • pgdata/ — the database itself (Postgres compiled to WebAssembly, with pgvector). Copy the directory to back it up.
  • secret — generated on first run, 0600. It encrypts any embedding provider API keys you store. Keep it with the data.
  • run/ — the unix socket the database listens on, in a 0700 directory. It has no password, so file permissions are the access control. Windows cannot listen on a socket path, so there the database binds an unused loopback port instead — reachable by other processes running as you, and never from another machine. KYBASE_EMBEDDED_TCP=1 forces that mode on Unix too, for a data directory on a filesystem that cannot host a socket.

Expect the process to hold a few hundred MB of memory while it runs: the embedded database is a full Postgres, and it lives inside it. Pointing DATABASE_URL at a Postgres you already run avoids that entirely.

Note content is plain Markdown and every note is readable through the MCP tools, so an agent can always read the whole vault back out, and kybase-mcp export writes it out as files — see Reading your notes.

License

AGPL-3.0-only.

Source: packages/kybase-mcp/README.md at commit 615975f

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

4
  1. v0.2.4LatestOct 29, 2026
  2. v0.2.3Oct 22, 2026
  3. v0.2.2Oct 2, 2026
  4. v0.2.1Sep 23, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts