Jamgate
A gate that sits between a person and their memory store. It decides what is worth keeping, what replaces what, and what is junk — so that a person has one memory that every AI agent they use reads from and writes to, instead of a dozen disconnected ones.
What exists
This table is computed from the source tree, not written by hand.
| Component | What it is | Status |
|---|---|---|
| The store | A SQLite file with full-text search | Built — src/store/ |
| The gate | The rules that decide what is kept | Built — src/gate/ |
| The connector | MCP, over tool invocation only | Built — src/mcp/ |
There is no server, no account, no sync and no cloud, and none of those are planned; docs/PROJECT.md lists what this project will never build.
This project shares no code with its archived predecessor at amirj4m/jamgate-old and is being rebuilt from zero; 0001 explains why.
Start here
docs/PROJECT.md is the definition of the project: what it is, the three components it will have, the list of things it will never build, and the scope. It is one page, and it is the only document you need in order to decide whether this project is interesting to you.
Then, if you want the reasoning:
| Document | What it is |
|---|---|
| Decision records | Why things are the way they are |
| The gate | Every rule it applies, generated from the code |
| Module reference | Generated from the source |
| Commands | Generated from package.json |
| CHANGELOG | Every change, in order |
| CONTRIBUTING | How the checks work and how to run them |
Where it stands
Every figure below is computed from the source, not typed in.
| Node required | >=22 |
| Runtime dependencies | 1 |
| Development dependencies | 5 |
| Source modules | 12 |
| Tests | 63 |
| Decision records | 10 |
Working on it
git clone https://github.com/amirj4m/jamgate.git
cd jamgate
npm install
npm run hooks:install # enable the local pre-commit and pre-push checks
npm run verify # lint, build, test, documentation check, secret scan
npm run verify runs exactly what CI runs. If it passes locally, CI passing is
not news.
The one rule
Every change — to code, to the repository, to the documentation — is recorded, and the project never drifts from its own documentation.
That rule is worthless as a promise, so it is not one. The table above is
generated by scripts/docgen.mjs and verified by CI, so a stale number fails
the build instead of sitting there being wrong. A new module without a
documentation block fails generation. A change without a changelog entry fails
the changelog check. An architecture decision record with a broken number fails
validation.
0002 describes the whole mechanism, including a frank section on what it cannot catch.
Secrets
This repository has been public since its first commit, which means anything
committed here is published permanently. Three layers stand in the way: GitHub
push protection rejects the push server-side before any history exists,
gitleaks scans the full history in CI, and an offline scanner runs in the
pre-commit hook. The package is marked private so it cannot reach npm by
accident.
Licence
MIT.