Turn private notes into local knowledge packs and synthesized wikis
Project description
Synto
Turn your raw notes into a self-improving, interlinked wiki — powered by a local LLM.
Synto is a knowledge compiler. Point it at any source of expertise and it produces a portable wiki pack any AI agent can install and query.
Local-first, provider-flexible. Runs 100% locally with Ollama or LM Studio. Switch to a cloud provider — Groq, OpenRouter, Mistral — when you need more power. Your notes and source material never leave your machine unless you choose.
Synto succeeds obsidian-llm-wiki-local (608 ★, 9k+ downloads) — same proven local pipeline, redesigned for distributable knowledge packs.
Why it exists
AI agents are only as good as the context you give them. A folder of notes or a raw PDF is not context — it's noise. Synto processes your source material through a local LLM pipeline, extracts concepts, writes cross-linked articles, and exports a structured directory: articles, an index, a concept graph, and agent-readable metadata. The pack installs like a package. Any agent gets a domain expert layer, not a file dump.
Use cases
Architectural reference from a textbook
Dobryakov took Tanenbaum's Distributed Systems, compiled it into a cross-linked wiki, and installed it into Claude/Cursor. Instead of generic suggestions, the AI started reasoning from established distributed systems principles — recommending consistent hashing and two-phase commit instead of "use a shared database." Any technical book, spec, or documentation set becomes a live context layer for your AI.
Karpathy's LLM Wiki
Andrej Karpathy's neural-network series is 20 hours of dense, high-quality material. Compile the transcripts and blog posts into a Synto pack and the content becomes queryable: any agent in your project can explain backpropagation, walk through the attention mechanism, or cite a specific lecture — from the source, not from model weights.
Your own research notes
Works today with Markdown. Drop notes in raw/, run synto run, and get a cross-linked wiki exported as an agent-ready pack. Expose it via synto serve as a local MCP server, or ship the pack directory for any file-aware agent to use.
How it works
Three stages, two LLM tiers:
- Ingest — fast model reads each source, extracts concepts and summaries
- Compile — heavy model writes one cross-linked article per concept
- Export —
synto pack exportproduces an agent-ready directory
The fast model handles analysis (4B parameters is enough). The heavy model handles writing (14B+ recommended locally, or any cloud model). Both tiers are configurable independently.
Install
pip install synto
# or
uv tool install synto
For MCP server support:
pip install "synto[mcp]"
Quick start
synto setup # configure LLM provider
synto init ~/my-vault # create vault
# add Markdown notes to ~/my-vault/raw/
synto run --vault ~/my-vault # ingest + compile into wiki/.drafts/
synto review --vault ~/my-vault # inspect drafts interactively
# or: synto approve --all --vault ~/my-vault
synto pack export --target agents --vault ~/my-vault
synto serve --vault ~/my-vault # expose as MCP server (requires [mcp])
If you want a one-command flow, use synto run --auto-approve --vault ~/my-vault.
That skips draft review and publishes directly into wiki/.
What's in a pack
pack/
articles/ one Markdown file per concept
index/INDEX.json machine-readable index with stable article IDs
agent/
manifest.json capabilities, pack metadata
concepts.json concept registry
sources.json source provenance
AGENTS.md agent-readable entrypoint
CLAUDE.md Claude Code context file
Any file-aware agent can read the articles directly. INDEX.json enables fast concept lookup without a database. synto serve exposes list_articles, read_article, and find_concept as MCP tools.
What ships now
- Full ingest → compile → approve pipeline; currently supports Markdown notes and Obsidian vaults
synto pack export --target agents— portable knowledge pack with INDEX.json and agent metadatasynto serve— read-only MCP server (list_articles,read_article,find_concept)synto query— index-routed Q&A with optional synthesis towiki/synthesis/synto review— interactive draft review: approve, reject, edit, or diff before publishingsynto watch— file watcher: auto-ingest and compile on every savesynto maintain— wiki health check, stub creation, orphan cleanupsynto eval— offline structural evaluation (coverage, citation support, link resolution)synto compare— A/B model comparison without touching your vault- Multi-language: notes are ingested and compiled in their source language
- 20+ LLM providers supported via OpenAI-compatible API
Data & Privacy
- Local by default. Ollama and LM Studio process all content on your machine — notes never leave it.
- Cloud providers. If you configure an OpenAI-compatible cloud provider, note content and wiki text are sent to that service. Review their privacy policy before use.
- No remote analytics. Synto does not send usage analytics anywhere. Local runtime and cost metrics stay in your vault database.
- Pack exports. Exported packs include raw notes, sources, wiki articles, queries, and synthesis by default. Review your vault before sharing a pack.
- API keys. Stored in
~/.config/synto/config.toml(user-owned, not inside the vault). Never commit that file.
Requirements
- Python 3.11+
- An LLM provider: Ollama (local), LM Studio, or any OpenAI-compatible endpoint
Recommended local setup: a 4B model for ingest (e.g. Gemma 4), a 14B+ model for compilation (e.g. Qwen 2.5 14B). Works entirely offline.
Migrate from obsidian-llm-wiki-local
Existing obsidian-llm-wiki-local vaults must be migrated first. Run migrate-olw to copy wiki.toml and .olw/ into the current Synto layout before using normal commands.
synto migrate-olw --vault ~/my-old-vault
Copies wiki.toml → synto.toml and .olw/ → .synto/. Notes and articles are untouched. Old files are preserved — delete them once you've verified everything works.
Project details
Release history Release notifications | RSS feed
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 synto-0.1.0.tar.gz.
File metadata
- Download URL: synto-0.1.0.tar.gz
- Upload date:
- Size: 616.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31aec6737f2667600476f847a117e11acd9231bd5a7b82c41ef3d4ac1bf5c0c0
|
|
| MD5 |
16bd1116a86f5cd0e28bed2bae5b526f
|
|
| BLAKE2b-256 |
be133993f2e794aa3adf9fc54d053a5a5d6a84657bee1a43cc7150b9242ae3c0
|
Provenance
The following attestation bundles were made for synto-0.1.0.tar.gz:
Publisher:
release.yml on kytmanov/synto
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synto-0.1.0.tar.gz -
Subject digest:
31aec6737f2667600476f847a117e11acd9231bd5a7b82c41ef3d4ac1bf5c0c0 - Sigstore transparency entry: 1555447585
- Sigstore integration time:
-
Permalink:
kytmanov/synto@5d65ac3ece2c170447938eea803effed8ae44735 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kytmanov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5d65ac3ece2c170447938eea803effed8ae44735 -
Trigger Event:
push
-
Statement type:
File details
Details for the file synto-0.1.0-py3-none-any.whl.
File metadata
- Download URL: synto-0.1.0-py3-none-any.whl
- Upload date:
- Size: 174.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26eebe4f3abc6e46773f2910b04c15d38887af2179f4fab539cc9e38eeec3b10
|
|
| MD5 |
bb71bf097d584510b56421792649df24
|
|
| BLAKE2b-256 |
562c9e471598f8a72c2ce8a801aadb7b5b00606250df39cac8f8050fdfca2aaa
|
Provenance
The following attestation bundles were made for synto-0.1.0-py3-none-any.whl:
Publisher:
release.yml on kytmanov/synto
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
synto-0.1.0-py3-none-any.whl -
Subject digest:
26eebe4f3abc6e46773f2910b04c15d38887af2179f4fab539cc9e38eeec3b10 - Sigstore transparency entry: 1555447603
- Sigstore integration time:
-
Permalink:
kytmanov/synto@5d65ac3ece2c170447938eea803effed8ae44735 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kytmanov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5d65ac3ece2c170447938eea803effed8ae44735 -
Trigger Event:
push
-
Statement type: