dissolution
Local-first semantic search for code and docs.
dissolution indexes one or more directories into per-repo SQLite databases using sqlite-vec, keeps them synced with filesystem watchers, and gives you both a CLI search flow and a local browser UI.
Why dissolution?
- No external vector DB — just SQLite files in your repos.
- Multi-directory indexing — add as many paths as you want.
.gitignoreaware — indexing and sync respect ignore rules.- Background daemon UX —
dissolve start, thendissolve web. - Agent-ready —
dissolve onboard+ pi extension package.
Install
Rust CLI
pi extension package
Quickstart
# 1) Start background daemon + UI + watchers
# 2) Open UI (no need to remember the port)
# 3) Add directories
# 4) Search semantically
# 5) Print agent onboarding prompt
CLI
Agent onboarding
dissolve onboard prints a prompt you can paste into Claude/Codex/pi-style agents.
Use dissolve onboard --mcp for an MCP-first prompt.
- run
dissolve searchfirst for repo/docs questions, - cite
file_path:line_start, and - fall back to exact grep when needed.
pi extension setup
Install with:
If you prefer manual config, add:
The extension exposes a tool that routes semantic queries to local:
Prefer MCP? Run:
and use dissolve onboard --mcp to print a ready mcpServers snippet.
Docs site (Astro + Starlight)
Docs live in docs/ and are designed for Cloudflare Pages deployment.
Testing
BDD-style tests are implemented with cucumber + Gherkin.
# or
GitHub Actions publishing
- Crates.io:
.github/workflows/publish-crate.yml(on push/merge tomain) - npm package (
@hyperprior/dissolution):.github/workflows/publish-npm.yml(on push/merge tomain)
Docs are deployed by Cloudflare's Git integration (no docs deploy GitHub Action).