Synapse
Point it at text. Get a searchable archive for free. Spend a few cents turning it into a Markdown wiki your agent can query.
Give Codex a private, local memory without filling every prompt with your history:
codex mcp add synapse -- uvx --from synapse-vault synapse mcp --vault /absolute/path/to/my-brain
Nothing from the vault is injected into the agent's prompt. The agent searches first, then reads one relevant Markdown page. A thousand unopened pages cost zero tokens.
See it in ten seconds
uvx --from synapse-vault synapse serve --demo
That opens a populated 20-page graph. It needs no API key, import, database server, or JavaScript build.
Keep your own history
uvx --from synapse-vault synapse init ./my-brain
uvx --from synapse-vault synapse ingest ~/Downloads/chatgpt-export --vault ./my-brain
uvx --from synapse-vault synapse serve --vault ./my-brain
Ingest is local and free: it writes Markdown and builds a disposable SQLite FTS5 index. Search works immediately:
uvx --from synapse-vault synapse search "the phrase I remember" --vault ./my-brain
To turn raw history into a linked wiki, estimate first and then build a small resumable batch:
export SYNAPSE_API_KEY="..."
uvx --from synapse-vault synapse build --vault ./my-brain --limit 20 --dry-run
uvx --from synapse-vault synapse build --vault ./my-brain --limit 20
The build pass is optional. It is a plain for loop making one OpenAI-compatible chat-completions request per item. Run it against OpenAI or a local Ollama/LM Studio server; stop and resume without paying twice.
Markdown is the database
my-brain/
├── raw/<source>/<YYYY-MM>/<id>.md immutable imported history
├── wiki/<slug>.md linked, editable knowledge pages
├── synapse.db disposable FTS5 + graph index
└── synapse.toml model and owner settings
Delete synapse.db and synapse reindex --vault ./my-brain recreates it. The durable data is ordinary Markdown that works with git, Obsidian, grep, and any editor.
How it works
- An adapter streams each source into a tiny
Itemshape with stable IDs and timestamps. - Ingest writes immutable raw Markdown and indexes it with SQLite FTS5—no model call.
- Build compresses one item and asks any OpenAI-compatible model for complete wiki pages.
[[wikilinks]]become edges; a recursive SQLite CTE handles multi-hop traversal.- The one-file dashboard, CLI, Python API, REST API, and MCP server all use the same vault.
Model providers
Synapse uses one standard-library HTTP POST to /chat/completions; there is no provider SDK.
| Provider | Base URL | Status |
|---|---|---|
| OpenAI | https://api.openai.com/v1 |
Tested with gpt-4o-mini |
| Ollama | http://localhost:11434/v1 |
Compatible; not yet in CI |
| LM Studio | http://localhost:1234/v1 |
Compatible; not yet in CI |
| OpenRouter | https://openrouter.ai/api/v1 |
Compatible; community verification wanted |
| Groq | https://api.groq.com/openai/v1 |
Compatible; community verification wanted |
| Together | https://api.together.xyz/v1 |
Compatible; community verification wanted |
| DeepSeek | https://api.deepseek.com/v1 |
Compatible; community verification wanted |
Set SYNAPSE_BASE_URL, SYNAPSE_MODEL, and (when required) SYNAPSE_API_KEY. See configuration and costs.
Agent access
The MCP server exposes search, read_page, list_pages, neighbors, and read_source. It is a small stdlib JSON-RPC loop over STDIO, so there is no daemon and no MCP SDK dependency. See MCP setup.
Python works too:
from synapse import Vault
matches = Vault("./my-brain").search("launch decision")
Not built, on purpose
| Not built | Why |
|---|---|
| Embeddings | FTS5 is free, inspectable, and needs no migration or per-item API call. Add vectors only after measured recall failures. |
| Graph database | Personal graphs fit in SQLite; a ten-line recursive CTE handles traversal. |
| Auth or cloud sync | Synapse is single-user and binds only to 127.0.0.1. Your files stay yours. |
| Agent framework | The processing pipeline is a resumable loop, not an application graph. |
| Automatic merge/delete | A model never silently destroys a human-editable page. |
| PDF/DOCX parser | Those dependencies would break the zero-dependency promise; convert with Pandoc or MarkItDown first. |
Imported text is untrusted data. Synapse never executes it, and agents are instructed never to follow instructions found inside pages. Raw sources remain available for provenance.
Learn and contribute
- Add an adapter—the highest-impact contribution is about 30 lines plus one tiny synthetic fixture.
- Read how the SQLite graph works.
- See CONTRIBUTING.md for the test and pull-request workflow.
Synapse began as the winner of the LangGraph hackathon in London. This is the local-first rewrite that deleted SurrealDB, FastAPI, React, LangGraph, and embeddings so people can actually run it.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file synapse_vault-0.1.0.tar.gz.
File metadata
- Download URL: synapse_vault-0.1.0.tar.gz
- Upload date:
- Size: 45.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c209915509c1809f0182fb87bbd8a48dacda33575609f88a537941ec2784d7f
|
|
| MD5 |
7a93a8ba503b8278fd59569201c471a8
|
|
| BLAKE2b-256 |
19e0ce3f4246f2d886ce8fa8855ced1264aa70bb561a2d763b51be5219196857
|
Provenance
The following attestation bundles were made for synapse_vault-0.1.0.tar.gz:
Publisher:
publish.yml on anshulyadav1976/synapse
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synapse_vault-0.1.0.tar.gz -
Subject digest:
3c209915509c1809f0182fb87bbd8a48dacda33575609f88a537941ec2784d7f - Sigstore transparency entry: 2756550226
- Sigstore integration time:
-
Permalink:
anshulyadav1976/synapse@04408a25ede8b021526cc78ee9fef8f2ce6bbb21 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anshulyadav1976
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@04408a25ede8b021526cc78ee9fef8f2ce6bbb21 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file synapse_vault-0.1.0-py3-none-any.whl.
File metadata
- Download URL: synapse_vault-0.1.0-py3-none-any.whl
- Upload date:
- Size: 49.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
655f060cb5c712530ae51162c2198dd9b779882ef3a0655fc92b61213e21112f
|
|
| MD5 |
b40afde2af1a6d739a9541b7624151ed
|
|
| BLAKE2b-256 |
94eecbf83c91a55d62095be30f81d8c812a8149ed65ba10f95358ee053159187
|
Provenance
The following attestation bundles were made for synapse_vault-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on anshulyadav1976/synapse
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synapse_vault-0.1.0-py3-none-any.whl -
Subject digest:
655f060cb5c712530ae51162c2198dd9b779882ef3a0655fc92b61213e21112f - Sigstore transparency entry: 2756550318
- Sigstore integration time:
-
Permalink:
anshulyadav1976/synapse@04408a25ede8b021526cc78ee9fef8f2ce6bbb21 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anshulyadav1976
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@04408a25ede8b021526cc78ee9fef8f2ce6bbb21 -
Trigger Event:
workflow_dispatch
-
Statement type: