fadymondy

zekra-cli

Community fadymondy
Updated

zekra — CLI + Claude Code plugin to connect any AI client to Zekra memory over MCP.

zekra-cli

Connect any AI client to the Zekra memory system in one command.

zekra is a single, dependency-free Go binary that is both the MCP server and itsinstaller. It speaks the Model Context Protocol overstdio (a thin adapter over the Zekra REST API), and it wires that server into everyMCP host — Claude Desktop, Claude Code, Codex, Gemini CLI, Cursor — so a new user goesfrom zero to a working brain in two commands.

┌────────────┐   spawns    ┌──────────────┐   HTTPS + X-Zekra-Token   ┌──────────────┐
│ MCP client │ ──────────▶ │ zekra mcp  │ ──────────────────────────▶ │ Zekra API  │
│ (Claude…)  │  (stdio)    │ (this binary)│                             │ brains + ACL │
└────────────┘             └──────────────┘                             └──────────────┘

Install

curl -fsSL https://app.zekra.dev/install.sh | sh

or, with Go:

go install github.com/fadymondy/zekra-cli@latest   # installs `zekra`

or, with npm:

npm i -g zekra-cli

Upgrade to the latest anytime (npm / go / binary aware):

curl -fsSL https://app.zekra.dev/upgrade.sh | sh

Use it as a Claude Code plugin

This repo is also a Claude Code plugin — it bundles the Zekra MCP, memory-firstslash commands, two agents, and a skill. Install:

/plugin marketplace add fadymondy/zekra-cli
/plugin install zekra@zekra

At enable time it prompts for your Zekra token (and optional endpoint / defaultbrain) and wires the MCP automatically — no .mcp.json editing. Requires the zekrabinary on PATH (any install method above), since the plugin's MCP server is zekra mcp.

What the plugin adds

kind name what it does
command /zekra:recall [brain] <query> hybrid recall, answer from memory
command /zekra:retain [brain] <content> store a memory
command /zekra:brains [name] list brains / brain details
command /zekra:new-brain <name> create a new brain
command /zekra:connect [client] wire the MCP into another client
command /zekra:status endpoint + reachable brains
command /zekra:doctor diagnose CLI / auth / MCP
agent zekra-curator memory-first Q&A + retention (recall→answer→retain)
agent zekra-connector onboarding: install, tokens, brains, datasources
skill memory-first the recall→answer/act→retain discipline
hook SessionStart auto-injects the memory-first rules into every session
hook UserPromptSubmit opt-in auto-recall — pulls relevant memories for each prompt

Hooks — auto push/pull

The plugin ships two hooks (backed by zekra hook …, so no jq/python needed — thebinary parses the hook JSON itself, and every hook fails open: any error → no output,never blocks you):

  • Memory-first rules (SessionStart) — injects the recall→answer→retain discipline atthe start of every session, so the model reaches for the brain automatically. On bydefault; turn off with the inject_rules plugin option or ZEKRA_HOOK_RULES=0.
  • Auto-recall / pull (UserPromptSubmit) — uses each prompt to recall the top matchingmemories from your default brain and injects them as context. Opt-in (it hits thebrain every prompt): enable the auto_recall plugin option or ZEKRA_HOOK_AUTORECALL=1,and set a default brain (ZEKRA_AUTORECALL_BRAIN, ZEKRA_DEFAULT_NAMESPACE, or theplugin's default-brain option). Needs a saved token (zekra auth login) or the plugin'sapi_token.

Push (writing to the brain) stays model-driven on purpose — retention should beselective and distilled, not a firehose. The injected rules tell the model to memory_retainwhat's durable; /zekra:retain and the zekra-curator agent do it explicitly.

Standalone (outside the plugin) you can wire the same hooks in your own settings.json:

{
  "hooks": {
    "SessionStart":     [{ "hooks": [{ "type": "command", "command": "zekra hook rules" }] }],
    "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "zekra hook recall" }] }]
  }
}

One-liner that installs, logs in, and wires a client in a single shot:

ZEKRA_TOKEN=cbt_… ZEKRA_CLIENT=claude-desktop \
  sh -c "$(curl -fsSL https://app.zekra.dev/install.sh)"

Quick start

zekra auth login --token cbt_…          # save endpoint + token to ~/.zekra/config.json
zekra mcp:install claude-desktop        # wire the brain into your client — done
# restart the client; the brain tools (memory_recall, memory_retain, …) appear automatically

Get a token from an admin: zekra auth token new my-laptop (admin), or ask the brain owner.

Commands

command what it does
zekra auth login [--url U] [--token T] [--agent ID] [--brain NS] save credentials (verifies reachability)
zekra auth logout forget the saved token
zekra auth whoami show endpoint + which brains your token can reach
zekra auth token new <agentId> [--admin] [--brain NS] mint a token, optionally grant it a brain
zekra auth token list list tokens + grants (admin)
zekra mcp run the stdio MCP server (this is what clients invoke)
zekra mcp:install <client> [--brain NS] [--name N] [--user] wire the MCP into a client
zekra mcp:print <client> [--brain NS] print the config snippet, write nothing
zekra mcp:uninstall <client> [--name N] remove the zekra entry from a client
zekra brain list list brains you can read
zekra brain create <name> [--description D] [--token] create a new empty named brain (+ optional scoped token)
zekra brain delete <name> --confirm delete a brain and all its memories
zekra recall <brain> <query…> hybrid recall (vector + BM25 + rerank)
zekra retain <brain> <content…> store a memory

Colon (mcp:install) and space (mcp install) forms are equivalent.

Supported clients

client config file it writes format
claude-code ./.mcp.json (project) or ~/.claude.json with --user JSON
claude-desktop ~/Library/Application Support/Claude/claude_desktop_config.json (mac), %APPDATA%\Claude\… (win), ~/.config/Claude/… (linux) JSON
codex ~/.codex/config.toml [mcp_servers.zekra] TOML
gemini ~/.gemini/settings.json JSON
cursor ~/.cursor/mcp.json JSON
print stdout only JSON

Installs merge into existing config (other MCP servers are preserved) and areidempotent — re-running replaces just the zekra entry.

Creating and sharing a brain

zekra brain create research --description "market + competitor notes" --token

This seeds the namespace, mints a non-admin token scoped to just that brain, grantsit read+write, and prints a ready-to-paste MCP snippet you can hand to a teammate — theypaste it into their client (or run zekra mcp:install <client> --brain research) andthey're in, with access to only that brain.

Brains are enumerated from stored memories, so brain create writes one genesis markerto make the namespace exist and be connectable.

Configuration

Resolution order (highest wins): flags → environment → ~/.zekra/config.json.

env var meaning
ZEKRA_API_URL base URL of the Zekra app (default https://app.zekra.dev)
ZEKRA_TOKEN ACL token, sent as X-Zekra-Token (per-brain read/write; admin bypasses grants)
ZEKRA_AGENT_ID this session's agent identity, sent as X-Agent-Id
ZEKRA_DEFAULT_NAMESPACE bind the MCP session to one brain (tools default namespace to it)

The installer bakes these into each client's env block, so the client launcheszekra mcp fully configured.

MCP tools exposed

memory_recall, memory_retain, memory_get, memory_forget, memory_edit,memory_gaps, memory_resolve_gap, brain_list, brain_details, brain_create,brain_delete, brain_grant, brain_revoke_grant, brain_create_token,brain_tokens, brain_chat, secret_list/store/reveal/delete,datasource_list/create/sync/delete — 24 tools mirroring the Zekra REST contract.

Build

go build -ldflags "-X main.version=$(git describe --tags)" -o zekra .

Zero external dependencies (stdlib only) → one static binary per platform.

MCP Server · Populars

MCP Server · New

    LeulAria

    Aria Icons

    MCP server for 340k SVG icons

    Community LeulAria
    knowall-ai

    Reverie — graph memory that dreams

    Memory management MCP server for AI agents using Neo4j knowledge graphs

    Community knowall-ai
    keploy

    Key Highlights

    Open-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.

    Community keploy
    hermes-labs-ai

    Fidelis Memory

    Zero-LLM agent memory for Claude Code and AI agents: local-first BM25, dense-vector, and reciprocal-rank-fusion retrieval. Returns original passages verbatim by default. Available on PyPI as fidelis-memory. MIT.

    Community hermes-labs-ai
    n24q02m

    Better Code Review Graph

    Knowledge graph for token-efficient code reviews -- semantic search and call-graph resolution across your codebase.

    Community n24q02m