Search index for agent memory — knowledge graph index for your documents.
Project description
Knowledge Index (ki)
The safe, easy, fast search engine for your knowledge base.
Point ki at a folder of markdown — notes, docs, a wiki — and it syncs to a Neo4j knowledge-graph index you can search and navigate in seconds, from the CLI or any AI agent. Agents and humans alike go understand → search → retrieve with no prior expertise.
ki is a search index, not a store. It only reflects what's on your filesystem — source files are never modified (safe on an Obsidian vault, a git repo, a research folder), the index is disposable cache you can rebuild with one ki index, and there's no LLM work or embeddings at index time (vendor-neutral, instant to set up, free). See docs/general-philosophy.md for the tenets.
Install
curl -sSfL https://knowledge-index.ai/install.sh | bash # ki + neo4j-cli + agent skills
ki configure # one-time Neo4j: Local (Podman), Aura, or Existing
Prefer Python tooling? uv tool install knowledge-index (or uvx knowledge-index --help to try without installing).
Quickstart
cd ~/my-notes
ki index . --profile personal # sync the folder into the graph (first index binds a profile)
ki outline my-notes --full # table-of-contents view of the vault
ki search "rate limiting" # find the right slice
ki get --type full "<uri>" # read it (copy a uri from outline/search)
ki writes one marker per vault — .ki/vault.yaml, holding the vault's slug uri, its bound profile name, and an optional description. It's safe to commit (no credentials). Re-running ki index resyncs; nuke the graph and rebuild anytime.
With an AI agent
Coding agents (Claude Code, Cursor, Windsurf, …) shell out to ki directly. ki skill install drops the bundled knowledge-base skill into each detected agent's config so it knows when to reach for ki — "what did I write about X?", "build a knowledge base from this folder," "find related material" — and when not to.
ki skill install # into all detected agents (the installer already does this)
ki skill list # what's wired up / detected
The shipped skill scopes to the local, single-vault workflow; see docs/skills.md.
Usage patterns
ki is optimized for one local vault at a time and generalizes from there. The full model — profiles, vaults, and how every command resolves scope — is docs/scoping.md.
- Local, single vault (the default, ~95%) — your markdown on disk; the full lifecycle (index/update + search/retrieve). No flags:
kiuses the vault you're standing in. - Remote vaults — read-only search/retrieval over a KB you don't have locally (sharing a KB, powering apps/production). Name it explicitly with
--profile(+--vault). - Cross-vault search — query several vaults in one profile at once (
--profile; navigation/read commands only).
Commands
ki <cmd> --help is the source of truth for flags.
- Index / update:
index(full sync) —add/rm/mv(incremental) are planned. - Read / retrieve:
search,outline(aliastree),get,status. Depth docs: search · get · outline. - Remove from index:
drop(one vault) ·nuke(a whole profile). Source files are never touched. - Admin / info:
configure,profile list,vault list,skill.
ki search is one ranked fulltext sweep over documents + sections (no embeddings) — narrow with --types, scope locally with --under or remotely with --profile / --vault. See docs/commands/search.md.
Neo4j connection
ki configure offers three paths: Local (Podman neo4j:latest + APOC/GenAI — full runbook in skills/knowledge-base/references/neo4j-podman.md), Aura (billable cloud via neo4j-cli; never picked without consent), and Existing (any Bolt URI). Credentials live in ~/.config/ki/config.yaml (mode 0600); vaults reference profiles by name, so syncing a vault folder never leaks them.
Limitations & roadmap
- Markdown only — convert PDF / docx / HTML first (
pandoc,markitdown), thenki index. - No vector search yet — fulltext is the substrate (by design — see the philosophy); hybrid is roadmap.
- No MCP server yet — coding agents work today; chat apps (claude.ai, ChatGPT, …) need an MCP bridge (roadmap).
- Plaintext passwords (
config.yaml, mode0600) — OS keyring is roadmap.
Full roadmap → open issues.
Docs
Start at docs/: architecture · general-philosophy · scoping · data model. Contributors: AGENTS.md.
Development
git clone https://github.com/zach-blumenfeld/knowledge-index.git && cd knowledge-index
uv sync --extra dev
uv run pytest # integration tests auto-skip without a Neo4j
uv run ruff check src/ tests/ scripts/
Point integration tests at any Neo4j via KI_TEST_NEO4J_URI / KI_TEST_NEO4J_USER / KI_TEST_NEO4J_PASSWORD (the suite is destructive — don't use a Neo4j with real data). Design principles, project map, test fixtures, and the release flow live in AGENTS.md.
License
See LICENSE.
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 knowledge_index-0.5.0a0.tar.gz.
File metadata
- Download URL: knowledge_index-0.5.0a0.tar.gz
- Upload date:
- Size: 294.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00eb09c273f9120a73c1e5bc6c3e56c3fc53424ef364ea6f15dfeb6090375a1f
|
|
| MD5 |
ab2dfc0270b818b2d22b760450cee093
|
|
| BLAKE2b-256 |
9826a3f6ddc3000fd2a2501caf5ecc564c5b425ae3163cd56e77544771754d3c
|
Provenance
The following attestation bundles were made for knowledge_index-0.5.0a0.tar.gz:
Publisher:
release.yml on zach-blumenfeld/knowledge-index
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
knowledge_index-0.5.0a0.tar.gz -
Subject digest:
00eb09c273f9120a73c1e5bc6c3e56c3fc53424ef364ea6f15dfeb6090375a1f - Sigstore transparency entry: 1840009360
- Sigstore integration time:
-
Permalink:
zach-blumenfeld/knowledge-index@a484d8575feebe777dda0af2b7b0259e63ad13e5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/zach-blumenfeld
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a484d8575feebe777dda0af2b7b0259e63ad13e5 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file knowledge_index-0.5.0a0-py3-none-any.whl.
File metadata
- Download URL: knowledge_index-0.5.0a0-py3-none-any.whl
- Upload date:
- Size: 132.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 |
cff0e876d2c64ad56422b62f431f0269780c076d6df220f610e5b9b505590719
|
|
| MD5 |
1d56f6f777e9bab8667b6e5677c27790
|
|
| BLAKE2b-256 |
3216d15547460769d63b0639c899e3908f5deef1d224782ed52ccb3cbf78faa9
|
Provenance
The following attestation bundles were made for knowledge_index-0.5.0a0-py3-none-any.whl:
Publisher:
release.yml on zach-blumenfeld/knowledge-index
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
knowledge_index-0.5.0a0-py3-none-any.whl -
Subject digest:
cff0e876d2c64ad56422b62f431f0269780c076d6df220f610e5b9b505590719 - Sigstore transparency entry: 1840009450
- Sigstore integration time:
-
Permalink:
zach-blumenfeld/knowledge-index@a484d8575feebe777dda0af2b7b0259e63ad13e5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/zach-blumenfeld
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a484d8575feebe777dda0af2b7b0259e63ad13e5 -
Trigger Event:
workflow_dispatch
-
Statement type: