Open-source MCP memory layer v0.55.1

Remember once.
Recall everywhere.

Imprint gives your AI coding agents one persistent memory. The decisions, fixes and context they learn come back in every session and every tool, sync to your other machines, and can be handed to a teammate in one command. It all runs on your machine.

curl -fsSL https://raw.githubusercontent.com/alexandruleca/imprint-memory-layer/main/install.sh | bash
  • Local on your machine
  • Encrypted workspace sync
  • Synced across devices
  • 9 agent hosts
claude — ~/code/imprint
› Why does Imprint run Qdrant as a server instead of embedded?
● imprint · search "qdrant server vs embedded"
decision imprint docs/architecture.md

Embedded Qdrant is single-writer: the MCP server, hooks and imprint ingest can't share its on-disk lock. Auto-spawn a local server on 127.0.0.1:6333 instead.

stored 3 weeks ago synced from workstation
● Embedded mode locks the store to a single process. Imprint runs a local Qdrant server so your agent, its hooks and background ingests can all read and write at the same time.
answered from memory · no files re-read

One memory for every MCP agent · imprint setup all

  • Claude Code
  • Claude Desktop
  • ChatGPT Desktop
  • Cursor
  • GitHub Copilot
  • Codex
  • Cline
  • OpenCode
  • OpenClaw
Why Imprint

Memory that isn't trapped in one chat window.

Built-in agent memory lives in one tool, on one machine, for one person. Every new session starts blank and your agent re-reads the same files. Imprint keeps what it learns and takes it with you.

  1. Mon + decision
  2. Tue + bug fix
  3. recalls both
Across sessions

Tomorrow starts where today left off.

Hooks capture decisions as you work and save context before the window compacts. Your agent searches memory first, so it stops rediscovering the same answers. Guidelines you approve about how you like to work, drafted from what you have told your agents, reach every new session.

  • Claude Code
  • Cursor
  • Copilot
  • Codex
  • Cline
one shared store
Across tools

Switch editors without starting over.

Claude Code, Cursor, Copilot, Codex, Cline and other MCP hosts read and write the same memory. What one agent learns, the next one already knows.

  • laptop
  • desktop
  • VPS
Across machines

Your memory, on every machine you code on.

Pair a laptop, a desktop and a cloud box with a one-time share code. Memories and facts merge both ways, or one way, without duplicates, end-to-end encrypted. Projects are identified by their manifest, not their path, so they line up everywhere.

ASM
workspace: team
decisions · fixes
docs · facts
Across your team

Onboard a teammate's agent in one sync.

Give a colleague what your agent has learned about a codebase: decisions, fixes and indexed docs. Copy just that project into a team workspace and send it, one way if you like. Everything else stays where it is.

Sync & share

Share what your agent has learned, across devices and colleagues.

Pair two machines through a relay and Imprint merges their memories, both ways or just one, end-to-end encrypted. Keep your laptop and workstation in step, or give a new teammate's agent the project's history on day one.

  1. 1

    Serve

    One machine runs the command below and prints a one-time share code.

    imprint sync serve
  2. 2

    Join

    The other side passes the code: your desktop, a cloud VPS, or a teammate’s laptop. Joining receives; add --two-way to send back too.

    imprint sync <code>
  3. 3

    Approve

    The serving side sees the device’s hostname, user, OS and fingerprint and accepts it once or trusts it. A joining machine that sends sees the serving device and confirms first.

  4. 4

    Merge

    Memories and facts stream across and are deduplicated on arrival. The serving side can be --send-only or --receive-only; the joining side sends only with --two-way or --send-only.

you@laptop
$ imprint sync serve
═══ Imprint Sync Server ═══
✓ Connected! Share this with the other machine:
imprint sync 7f3a9c21-Ab3xY9Kq
This device: laptop (id: a3f2c1d4)
═══ Incoming Sync Request ═══
Device:   sam-workstation
User:     sam · OS: linux · ID: 5e19b07c
Accept? [y]es / [n]o / [t]rust & accept: t
✓ Merged peer data
sam@workstation
$ imprint sync 7f3a9c21-Ab3xY9Kq --two-way
✓ Connected to laptop (you, linux, id a3f2c1d4)
Send your workspace 'default' to laptop? [y/N]: y
✓ Merged remote → local
✓ Pushed local → remote
═══ Sync Complete ═══
  • End-to-end encrypted

    Each session’s code becomes the key (SPAKE2) without crossing the relay; every frame is AES-256-GCM. The relay only ever sees ciphertext.

  • No duplicates

    Memories and facts merge without duplicates. Unchanged workspace digests skip the next vector transfer.

  • Nothing leaves unasked

    Joining only receives unless you add --two-way, and you see which machine gets your workspace before anything is sent. The serving side enforces its own one-way choice.

  • Self-host or go offline

    Run the stateless relay from a small Docker image on your own domain, or move zipped snapshots instead.

Checking the public relay…

Sync codes made without --relay meet here.

sync.alexandruleca.com (opens in a new tab)
Sessions relayed
—
machines paired through it
Rooms open now
—
sessions waiting or running
Release
—
follows stable releases

Keep your own devices in step: enable automatic pairing on both sides, or add --remember to both commands. While both dashboards or imprint sync watch processes run, Imprint reconnects with the same workspace and approved direction. Pause anytime, or confirm forgetting the device on both sides. Offline removal remains pending until they reconnect.

The code’s secret never crosses the relay, and the relay — including the default one — never sees your devices or your memories; a wrong code or an altered frame ends the session. Vectors travel with each record, so the receiving machine doesn't re-embed anything; both sides need the same embedding model. See it step by step, or read the sync docs.

Workspaces

Share only the pieces you choose.

A workspace is a separate memory with its own vector collection and fact graph. Keep client work, side projects and team knowledge apart. When you want to share, copy exactly what belongs into its own workspace and sync only that, one way if you prefer.

workspace: default yours
  • billing-api
  • web-dashboard
  • client-acme
  • personal-notes
workspace: team to share
  • billing-api
  • memories, vectors and their facts
S
Sam's laptop
receives billing-api only
  1. 1

    Curate

    Copy a project, a topic or a single source into its own workspace. Your workspace keeps everything; add --dry-run to preview.

    $ imprint migrate --from default --to team --project billing-api --copy
  2. 2

    Share one way

    Serve only that workspace. Your active workspace doesn’t change, and anything pushed back is refused.

    $ imprint sync serve --workspace team --send-only
  3. 3

    Receive

    Your teammate runs the code it prints, into the workspace they work in or a separate one with --workspace. Nothing of theirs is sent back.

    $ imprint sync <code> --workspace from-you

The dashboard has the same controls: copy or move memories between workspaces, and pick the workspace and direction on the Sync page. Workspace docs.

Capture

Memory that builds itself.

You don't curate notes. Imprint indexes what already exists and keeps learning while you work, then tags every chunk so agents can filter by language, layer, domain and topic.

  • While your agent works

    automatic

    Agents store decisions, patterns and bug fixes through MCP. In Claude Code, hooks also extract them after each response and save context before compaction.

  • Your codebases

    imprint ingest .

    Files are cut into overlapping spans at paragraph and line breaks, and each whole file is kept, redacted, for agents to read in full. Refresh re-indexes only the files that changed.

  • Past conversations

    imprint learn --desktop

    Claude Code, Codex, Cursor, Copilot, Cline and OpenCode sessions, WSL profiles included, each kept whole and redacted with its tool calls and their output. Add Claude and ChatGPT data exports with --desktop.

  • Docs and web pages

    imprint ingest-url <url>

    PDFs, office documents and URLs, or a page you save from Chrome with the preview extension. Stored pages are re-fetched only when their ETag or Last-Modified changes.

  • Calls and audio

    imprint ingest call.m4a

    Record a call in the dashboard, your microphone and optionally the computer’s audio, or index audio files. They are transcribed on your machine, with timestamps, and the audio stays there.

  • Anything else

    ingest_content

    Push text, Markdown, CSV, JSON or code from your own services through MCP or the HTTP API.

billing-api/internal/retry/backoff.go
  1. chunk
    line-boundary spans · bounded overlap
  2. embed
    Qwen3 Embedding · 1024-dim · on-device
  3. tag
    deterministic rules + zero-shot labels
  4. store
    vectors in local Qdrant · whole redacted file kept
Payload tags
lang
go
layer
api
kind
source
domain
payments · perf
topics
retry-policy · idempotency
Recall

Answers with sources, not guesses.

Your agent gets the few chunks that matter, with enough provenance to verify them. You get a dashboard to see exactly what it knows. Run imprint ui, or open the desktop app.

Imprint dashboard graph: four projects linked by shared topics, with the qdrant topic open in a side panel
The real dashboard, shown with a sample workspace.
  • Search with receipts

    Hybrid semantic and exact-term ranking. Every hit carries its source, hash and age, so the agent can check the live file before it edits.

  • Facts with a timeline

    A temporal knowledge graph stores subject → predicate → object with start and end dates, so a superseded decision doesn’t come back as current.

  • Cross-project recall

    Reuse the fix you already shipped in another repo. Search covers every project in the workspace unless the agent narrows it, and a hit’s nearest neighbors turn up related work elsewhere.

  • A dashboard for humans

    Browse the graph, topics and sources, sort loose sources into projects with Organize, and run ingest and sync jobs. Ask Chat, or Echo by voice: it researches your memory, asks when a question is unclear, and sets reminders, timers and scheduled jobs.

How it works

Private by default. Shared only when you say so.

Your agent talks MCP to a local Imprint server. Storage, embeddings and tagging all run on your machine, with no paid API calls. Data leaves only when you sync, encrypted end to end, or pick a cloud model for tagging, summaries or chat.

YOUR MACHINE
Your AI coding agent
Claude Code · Cursor · Copilot · Codex · Cline · …
Imprint MCP server
19 tools · hooks · chunker · tagger
  • Qdrant
    vectors · local daemon on 127.0.0.1:6333
  • Imprint graph
    temporal facts · SQLite per workspace
  • Embeddings
    Qwen3 via llama.cpp · CPU or any GPU
ONLY WHEN YOU CHOOSE
  • Sync relay
    only for sessions you start and devices you pair; end-to-end encrypted, sees ciphertext only
  • Cloud models
    off by default; tagging, summaries and chat can each use Anthropic, OpenAI or Gemini, or your own Ollama / vLLM

Uninstalling is symmetric: imprint disable removes every host entry it wrote and keeps your data, so imprint enable brings it all back. Architecture docs.

Install

One command. No sudo, no system pollution.

A self-contained .venv, an auto-downloaded Qdrant binary, and every installed host wired in one run. Pin a version with IMPRINT_VERSION=vX.Y.Z, or grab a desktop installer.

curl -fsSL https://raw.githubusercontent.com/alexandruleca/imprint-memory-layer/main/install.sh | bash
  1. 1
    imprint setup all
    wires every MCP host it finds
  2. 2
    imprint ingest .
    indexes the project you’re in
  3. 3
    imprint ui
    opens the dashboard on :8420

Teach it once. Every agent, machine and teammate remembers.

Apache 2.0, self-updating, and removable with one command. Start on your laptop and sync to the rest of your machines, or your team, when you're ready.