Markbase vs. Engram

Two takes on agent memory.

Engram is a single-binary local memory store for coding agents — SQLite + FTS5 under an MCP server you run yourself. Markbase is a hosted MCP that stores plain markdown, so any agent on any machine can share the same memory without anyone running a server.

What each tool is actually for

Engram gives a coding agent a brain on the machine it's running on. A Go binary, a SQLite file under ~/.engram/, and a set of MCP tools tuned for the way coding agents work — mem_save, mem_search, session lifecycle, conflict surfacing. It's local-first by default, with optional cloud replication if you want to share between machines.

Markbase is a hosted MCP endpoint that stores plain markdown documents in folders. There's no binary on your machine, no SQLite file, no syncing — agents just point at the URL and read and write the same documents. The contract is "files in folders," not "rows in a database."

They're solving overlapping problems with very different shapes. Which one fits depends on what you want the memory to look like, and who needs to reach it.

Engram's strengths

  • Local-first, zero dependencies. One binary, one SQLite file. No service to sign up for, no network round trip.
  • Coding-agent-shaped tools. mem_save expects a title, type, and a What/Why/Where/Learned structure. That structure is opinionated in a useful way for coding workflows.
  • Open source, self-run. If "I want to own the process and the disk" is non-negotiable, Engram already meets you there.

Where Markbase is shaped differently

Markbase makes the opposite trade-offs on purpose, because the problem we're optimizing for is "a fleet of agents on different machines sharing the same memory" — not "a single coding agent on this laptop."

  • Hosted, not installed. There's no binary, no SQLite, no upgrade path to manage. Two minutes from invitation to a working endpoint.
  • Plain markdown, not a database. Documents are .md files in folders, with YAML frontmatter. You can read them, diff them, paste them anywhere. There's no schema-versioned table layout to migrate.
  • Cross-machine by default. The endpoint is the endpoint. Claude Code on your laptop, Claude.ai in a browser, a CI agent on a build runner — they all hit the same URL and see the same memory. No sync command, no chunked exports, no second machine to enroll.
  • Knowledge that crosses projects. An Engram database is per-machine, per-codebase — what one project's agent learned lives there and stays there. Markbase keeps each project's memory in its own workspace, but an agent isn't confined to one: ask it to design something in your new project using the architecture decisions from your old one, and it can read both in the same conversation. Past work becomes input to the next project, not just an archive of the last one.
  • Concurrency prevented, not surfaced. Engram surfaces conflicts after both writes have landed, then lets you audit and reconcile. Markbase prevents them at write time: every read returns an ETag; every update_doc sends back the ETag it expects. If the document changed, the second write fails cleanly with an etag_mismatch and the agent re-reads and retries — in a single tool call, with no human in the loop.

Structure, but on your terms

Engram bakes structure into its database schema — mem_save takes a title, a type, and a What/Why/Where/Learned body. That's a sensible default for a single coding agent, and it's the same shape for every save, in every project, forever.

Markbase lets you author the shape. If decisions need a status enum, a date, and a typed link to the record that supersedes them, you write that — drop a _schema.md in the folder and the folder becomes a typed collection. Records inside it are still .md files, but every write conforms to the schema, and agents can query the collection by field like a table. Different shapes for different kinds of memory, in the same store.

Most other agent-memory tools sit at the opposite extreme: they're a scratchpad. Any agent writes anything in any shape, and the only way to enforce a convention is a CLAUDE.md in each repo telling each harness "please use this folder for decisions, this shape for postmortems." Conventions live outside the memory they describe, get replicated by hand, and drift.

Markbase puts those conventions inside the memory store too. Every folder can carry an _markbase.md alongside its _schema.md: what this folder is for, what's append-only, who writes here. Agents working on a path read the _markbase.md chain root-to-leaf before they act, and apply what they find. The shape is enforced; the working conventions travel with the data.

Can I use both?

Yes — and for some setups it's the right answer. Engram is great as a per-machine scratchpad for what one coding agent learned during its own session. Markbase is the shared layer: the architecture notes, the decisions, the long-lived context that other agents on other machines need to read. The two formats are different enough that the split is clean.

Side by side

Different shapes, different jobs.

Feature Engram Markbase
Shape Local Go binary you run Hosted MCP service
Storage SQLite + FTS5 on your disk Object storage, versioned
Format Structured observations in a DB Plain markdown files in folders
Primary surface MCP, HTTP, CLI, TUI MCP over HTTPS
Reach by default One machine Public endpoint, OAuth 2.1
Cross-machine sync Git-based chunks, opt-in cloud Native — one endpoint, many agents
Cross-project knowledge Stays in the local DB it was saved to Reusable across your projects in the same conversation
Concurrency model Conflict surfacing after the fact ETag idempotency — prevented at write time
Record shape Baked into the binary (What/Why/Where/Learned) _schema.md per folder — you author the shape
Conventions for agents Inferred from the save shape _markbase.md chain you author per folder
What you maintain The binary, the DB, the sync Nothing — fully hosted
Licensing Open source, self-run Hosted service, invitation-only
Best for A coder who wants memory local to one machine Multi-agent fleets sharing one source of truth
Engram is a binary you run; Markbase is a service we run. Both speak MCP — pick the one whose shape matches where the memory should live.

Invitation-only, for now

Need shared memory across a fleet?

If your agents live on more than one machine — laptop and CI, desktop and phone, your team and theirs — and you'd rather not run another process to keep them in sync, request an invite. We'll set you up with a hosted endpoint and a workspace.