Built out of frustration — not a pitch deck

My AIs had no shared memory.
So I built one.

I'm Mukarram. I do research on Claude Web, run code on Claude Code. They don't talk to each other. Spent an hour designing architecture — then had to re-explain every decision from scratch. Zikra is the memory layer that connects them.

Get Zikra Lite See the problem ↓
zikra — live memory
$ curl -s -X POST http://localhost:7723/webhook/zikra \ -H "Authorization: Bearer $ZIKRA_TOKEN" \ -d '{"command":"search","project":"myapp","query":"how does auth work"}' ────────────────────────────────────────────────── ✓ score 0.94 │ auth uses JWT tokens ✓ score 0.87 │ session expiry set to 7 days in prod 2 results · 38 tokens · your agent remembers

The problem, clearly

Claude Web and Claude Code are strangers. Every new session is a blank slate.

Without Zikra
Session 1 — Claude Web
M
CW
✓ auth: JWT, 7-day expiry ✓ DB: PostgreSQL + pgvector ✓ arch: microservices on Railway
— new session —
Session 2 — Claude Code
M
CC
? "What auth approach are you using?" ? "Can you describe the DB schema?" × Back to square one. Again.
With Zikra
M
Mukarram
T
Team
CW
Claude Web
CC
Claude Code
GPT
ChatGPT
↓  ↓  ↓  ↓  ↓
shared memory
✓ Every session starts with full context ✓ Any agent. Any machine. Any location. ✓ Doesn't matter which AI you're using

What Zikra does

Core capabilities

FeatureWhat it does
Shared persistent memory One PostgreSQL pool. Every agent, every machine, every session reads and writes the same context. Decisions made in Claude Web are visible in Claude Code seconds later.
Agent-agnostic Claude Code, Claude Web, ChatGPT, Gemini, Codex, Copilot. Same webhook. Same token. Same memory. No per-agent integration required.
Role-based access Owner, collaborator, guest. Enforced at the router. Owners create tokens and promote requirements. Collaborators write and search. Guests read only.
Confidence decay Memories age automatically. Errors decay in 30 days, decisions in 90, schemas in 180. Below 0.2 confidence — flagged stale. Below 0.05 — deleted. No manual cleanup.
Requirements pipeline A business user writes a requirement in Copilot or any AI. Owner promotes it. Developer pulls and executes it in Claude Code. Full traceability from spec to execution.

Full feature set

FeaturePurpose
Hybrid search70% semantic vector + 30% keyword. Finds by meaning, not exact match.
Token-budget resultsResults are tiered and capped. Never floods your context window.
Auto-save on session endClaude Code Stop hook fires on close. No manual saving.
PreCompact hookSaves a summary before Claude's context resets. Nothing lost at compaction.
Multi-user tokensEach person gets a scoped bearer token. Identity tracked on every write.
Promote to promptOwner approves a requirement — it becomes a live executable prompt.
Automated cleanupWeekly cron removes old conversations, resolved errors, orphaned runs, old schema versions.
Schema storageStore and retrieve DB schema per project and module. Any agent pulls current version before touching backend code.
Error loggingAny agent logs a bug with full context. Vector-embedded, searchable, tracked to resolution.
Debug protocolNamed prompt: read the error, search memory, check resolutions, fix, log. Any agent follows it.
Session trackingEvery run logged — tokens, cost, files modified, status, linked to the prompt that triggered it.
Active runs tableSee which machine is running which prompt in real time across your team.
Statusline barLive in your terminal. Run count, memory count, model, project, context usage. Skull at 600K tokens.
Django admin UIWeb interface for browsing, searching, and managing all memories.
MCP nativeClaude connects via MCP trigger. No custom integration.
Alias normaliser"find", "recall", "remember", "query" all route correctly. Agents don't need exact command names.
Self-documenting APIUnknown command returns full reference with examples. No external docs needed at runtime.
Lite versionSQLite, Python, zero Docker. 60-second setup. Same API. Upgrade is one URL change.

How we got here

No polished origin story. Just a real problem that kept getting worse.

M
The frustration

"I like doing my architecture and research on Claude Web. It can browse sites, do deep research, give real suggestions on system design. But when it came time to actually run the code — that's Claude Code's job. The problem? They don't talk to each other. Every new session, you're starting from scratch. Claude Code had no idea what Claude Web and I had just spent an hour designing."

— Mukarram, founder
M
The first build

Started with a simple webhook and SQLite. Then added vector search. Then wired it into Claude Code stop hooks so it ran automatically at the end of every session. You never had to type "save this" — it just happened. Months later it was saving hours a week. We called it Zikra — Arabic for memory.

M
A
R
The team joined

More people joined the project. Suddenly one person is on Claude Web doing research, another validating requirements and writing prompts, Claude Code just executing. Decisions made in one session were invisible to everyone else — two developers would build in opposite directions and not find out until a late-night code review argument. That's when Lite wasn't enough. We needed Postgres.

CW
CC
GPT
Agent agnostic

"We even use ChatGPT sometimes when Claude Web is being stubborn about writing a prompt. Doesn't matter. The same MCP server works for all of them. That's Zikra. Not built for a pitch deck. Built because we actually needed it."

— Mukarram
The core idea

One memory. Every agent reads from it.

Zikra is a small server that sits between your AI tools and a database. Every agent — Claude, Cursor, Gemini, ChatGPT — can save and search the same pool of context. Architecture decisions, error patterns, requirements, runbook prompts.

One POST to save. One POST to search. It's not magic — it's just memory that actually persists.

  • Hybrid vector + keyword search — finds things by meaning, not just exact words
  • Hooks fire automatically at session end — no manual saving
  • Token budget on results — never floods your context window
# Save something once { "command": "save_memory", "title": "auth uses JWT tokens", "content_md": "JWT with 7-day expiry. Refresh tokens in httpOnly cookies.", "project": "myapp" } → saved # Find it weeks later, in any session { "command": "search", "query": "how do users log in" } → score 0.91 auth uses JWT tokens
The part we're proudest of

Automatic. You don't think about it.

The hardest part of any memory system is using it consistently. Claude Code hooks solve that. A Stop hook fires the moment a session ends and logs everything automatically. You never type "save this" — it just happens.

The statusline shows your memory count and session stats right in your terminal. After a while you stop noticing it's there — you just notice Claude always seems to know your codebase.

  • Stop hook logs every Claude Code session on close
  • PreCompact hook saves context before the window resets
  • Neovim and Claude Code statusline — live memory stats
# What Claude sees at session start # (injected from CLAUDE.md automatically) ## Recent memory — myapp ▸ auth uses JWT tokens (0.94) JWT with 7-day expiry. Refresh in httpOnly cookie. ▸ payments use Stripe (0.88) Stripe Checkout. No card data on our servers. 17 runs · 847 memories · last sync 2m ago

Two versions, one API

Lite is where Zikra started — one developer, one machine, 60 seconds to set up. The full stack is what we built when the team joined. Same commands either way. Upgrade is just changing a URL.

Lite

Zikra Lite

SQLite · Python · MIT Free

Where it started. A single Python process, SQLite database, zero infrastructure. Works in 60 seconds on your laptop. This is what most solo developers need — and exactly what fixed my Claude Web ↔ Claude Code problem.

  • pip install zikra-lite
  • Zero Docker, zero PostgreSQL
  • All 8 commands, full API surface
  • sqlite-vec for vector search
Get Zikra Lite →
Pro

Zikra

Postgres + n8n · For Teams

What we built when the team joined. PostgreSQL + pgvector + n8n. Every developer on every machine shares the same memory pool. Requirements written in London visible in Singapore within seconds.

  • Multi-machine shared memory pool
  • Multi-user RBAC token management
  • n8n workflow integration + scheduling
  • pgvector at billions-of-rows scale
Explore Zikra →
Lite
SQLite · Free
Zikra
Postgres + n8n
Concurrent writes Limited Unlimited
Vector search sqlite-vec pgvector
Scale Millions of rows Billions of rows
n8n workflows Visual editor, scheduling
Decay scoring Manual Automated via n8n schedule
Admin UI Basic Django admin
Backup Copy one file pg_dump, managed
Setup time 60 seconds 30–60 minutes

Same API. Same commands. Same JSON shapes. Upgrade is just changing a URL.

Share with your team

Zikra Lite runs on your machine by default. Getting teammates connected takes one of three approaches depending on where they are.

🏠

Same network

Start Zikra with --host 0.0.0.0 and share your local IP. Anyone on the same wifi or office network connects to http://YOUR-IP:7723 and they're in. Nothing else to install.

🌐

Remote teammates — Cloudflare Tunnel

One-time setup, five minutes, free forever. Cloudflare gives your local Zikra a permanent public URL like zikra.yourteam.com — no ports to open, no router config, no commands to run each time. See the setup steps in the README.

🖥️

Real server — Zikra Full

When your team needs something that runs permanently without your laptop being on, Zikra Full runs on any VPS with one docker compose up. Same API, same commands, same Claude Code config — just a real server instead of your machine. See Zikra →

Get started in 3 steps

From zero to persistent memory across every Claude session — in under two minutes.

1

Install Zikra

Run one command and Zikra Lite is live on your machine. A single Python process, SQLite database, nothing else to install.

npx zikra-lite # or: pip install zikra-lite
2

Open the Web UI

Browse memories, manage tokens, invite teammates, and search everything your agents have saved — all in one place.

cd ui && npm run dev # opens http://localhost:5173
3

Connect Claude Code

Paste one prompt into Claude Code. It installs the Stop hook, context injection, and statusline automatically. Memory is active in every session from that point on.

Read onboarding guide →
M

This isn't a product pitch. It's a tool we use every day.

Zikra started as an internal tool. We weren't trying to build a product — we were just trying to stop wasting time. Zikra Lite is free and takes about a minute to set up. If it helps, great. If something's broken, open an issue.

We're actively using both versions ourselves, so issues get fixed fast.

— Mukarram

Install Zikra Lite Star on GitHub