OPEN SOURCE / LOCAL FIRST / ALPHA

Why is it
built this way?

The answer may be in a PR, an incident note, or a decision made weeks earlier. Engineering Memory stores those records with their origins and connects them to what happened next. People and coding agents can query the same local memory.

Runs locally with SQLite. GitHub import is optional.

01 / THE MEMORY PACKET

A result should
cite its record.

The local retriever returns a short context packet with source IDs, state, capture time, and related records. Select a question to inspect an illustrative packet.

These are fictional records. This page does not run a live query.

CONTEXT ASSEMBLYEXAMPLE OUTPUT

Why SQLite?

DECISIONCURRENT

Use SQLite for the local MVP

One local database keeps the first release easy to run and inspect.

SOURCE ID: manual:demo-sqlite · DIRECT NOTE
CAPTURED: 2026-09-20 · UNATTRIBUTED
RATIONALESAME SOURCE

A single file keeps setup and backups simple for a local prototype.

SOURCE ID: manual:demo-sqlite · DIRECT NOTE
CAPTURED: 2026-09-20 · UNATTRIBUTED
02 / THE MODEL

Store the source.
Index the claim.

The index uses six kinds: Event, Change, Decision, Rationale, Attempt, and Outcome. A record keeps its original text; links between records are explicit.

01

Capture

Enter a decision directly or import an artifact. Keep the source ID, reference, times, and claimed author.

02

Connect

Link a reason to a decision, an attempt to an outcome, or a correction to the note it replaces.

03

Retrieve

Send an MCP client a bounded packet, including current state and the ID of each source record.

03 / WHY IT EXISTS

A commit is evidence.
It isn't the whole timeline.

Commits and pull requests often contain valuable rationale. They are worth keeping as sources. Decisions can predate code changes, while failed attempts and observed outcomes may arrive later.

Git + GitHubCode evidence, reviews, and some of the why
Engineering MemoryDecisions, attempts, and outcomes connected across sources

The memory can point to a commit or PR and connect it to a note, document, incident, or conversation.

04 / INSPECT AND CORRECT

The record can
be challenged.

Inspect the origin

Results include a source ID, reference when present, event and capture times, and caller-supplied attribution.

Keep the correction

Superseded and retracted notes remain inspectable. Current search prefers active records.

Leave gaps visible

When search finds no support, the retriever can say so. It cannot certify that a retrieved claim is true.

Current status: local alpha. Search is lexical and can miss paraphrases. Evaluation on real engineering tasks is still ahead.

05 / GET STARTED

Run it locally.

Clone the repository, add one decision, and query it from the CLI. The same local database is available to MCP clients.

Installation and MCP setup
TERMINALLOCAL MVP
# Install the local prototype
git clone https://github.com/vladmuresan03/engineering-memory.git
cd engineering-memory
python3.13 -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[mcp]'

# Store a decision with its reason
engineering-memory add Decision \
  "Use SQLite for local memory" \
  --rationale "One file keeps setup simple"

# Give an agent context
engineering-memory context "Why SQLite?"
MIT LICENSE · PYTHON 3.11+