Core concepts
Team Memory
Knowit is local-first. Project memory is a JSONL file you review in version control like source code — and a shared SQLite path covers everything else.
Git-reviewed JSONL
In project scope, .knowit/knowledge.jsonl is the canonical memory file. Because it's line-delimited JSON, every added rule or decision shows up as a clean diff. The workflow is the one your team already has:
- An agent (or a teammate) stores a new decision during a session.
- The change appears in
.knowit/knowledge.jsonland goes into the same branch and pull request as the code it explains. - Reviewers see the memory change next to the code change and approve both.
- On pull, every teammate — and every agent they run — gets the updated memory automatically.
Migrating from SQLite projects
Existing projects with .knowit/knowit.db are migrated automatically on first project-scope initialization when .knowit/knowledge.jsonl does not exist. You can also run the conversion explicitly:
$ knowit migrate-storage --sqlite-path .knowit/knowit.db --dry-run
$ knowit migrate-storage --sqlite-path .knowit/knowit.dbThe command writes .knowit/knowledge.jsonl and .knowit/sources.json. It refuses to overwrite existing targets unless you pass --force.
Shared SQLite database
For private global memory, or a shared database that lives outside any repo, point everyone at the same SQLite database path:
$ KNOWIT_DB_PATH=/shared/team/knowit.db npx knowit install --scope global --client claudeEvery developer and every agent then reads and writes the same durable memory source — without adding a hosted dependency.