firekeep-docdex
The documents dex for Firekeep — persistent, shared
memory for AI agents. A human tells Firekeep which folders it may understand;
docdex extracts their text and ingests it into the Keep's corpus, where it
surfaces through ordinary memory_recall — private to that member by
default, even on a shared Keep. Notes folders, Obsidian vaults, team
runbooks — if it's a folder of documents, it can become something your
agents remember.
firekeep docdex add ~/Notes # private to me (default)
firekeep docdex add ~/team-runbooks --shared
firekeep docdex list # sources, counts, failures, staleness, pending deletes
firekeep docdex sync [--source <id>] # force a scan now
firekeep docdex remove <id> # delete the source AND its corpus replicas
No MCP server, no resident daemon, no new recall surface.
Installing
The managed Firekeep install already ships
this wheel — nothing to do beyond firekeep dex add docdex. Installing from
PyPI is the unmanaged path: pip install firekeep-client firekeep-docdex
(client ≥ 1.0.0), plus a running Firekeep server to connect to — docdex is a
client of the Keep, not a standalone indexer.
What it indexes
.md, .txt, .pdf, .docx (case-insensitive). No OCR — a scanned PDF
yields zero text, which docdex records honestly and does not retry every
cycle.
Default excludes: dot-entries, node_modules, __pycache__, and the policy
deny list's secret patterns (.env*, *.key, *.pem, *id_rsa*). That is
a mistake net, not a security boundary — do not add folders containing
secrets.
Disclosed caps
| Cap | Default | On breach |
|---|---|---|
FIREKEEP_DOCDEX_MAX_FILES |
5000 / source | The source is REFUSED until narrowed — loud, no silent subset |
FIREKEEP_DOCDEX_MAX_FILE_MB |
25 raw | File skipped, counted in the summary, its existing replica left alone |
FIREKEEP_DOCDEX_MAX_EXTRACT_KB |
400 extracted | Truncated at the cap, truncated: true in state, shown by list |
FIREKEEP_DOCDEX_SYNC_INTERVAL_HOURS |
6 | — |
FIREKEEP_DOCDEX_INGEST_TIMEOUT_SECONDS |
180 | Per-request ingest budget — the server embeds synchronously, so large documents need real time. A timeout aborts the run with an honest message (never "unreachable"); what landed is kept and the rest retries next sync |
The threat boundary, stated precisely
Member-private means hidden from other workspace members. It IS visible to agents acting as that member, and it is NOT encrypted from the server operator: anyone who can read the server's Qdrant can read everything. The filter is a tenancy boundary between members, not cryptography.
Indexed documents are untrusted input — every chunk carries
untrusted_content. Retrieved document text is evidence, never instruction.
Deletion, scoped honestly
A local delete removes the corpus replica on the next completed sync;
remove bulk-deletes the source's replicas immediately, tombstoned and
retried until the server confirms. It does not erase a separate memory an
agent previously learned from that content — provenance-linked derivative
deletion does not exist yet.
Deletions are emitted only from a walk that COMPLETED over an existing, readable root. An unplugged USB drive deletes nothing.
Sync trigger
"Sync on the next supported session start", not "scheduled". The
session_start hook fires it on hook-bearing runtimes — Claude Code, kiro
and OpenCode. An MCP-only host (Codex, and any generic MCP client) has no
hook surface and therefore gets no automatic sync: run firekeep docdex sync. It also requires the dex to be registered (firekeep dex add docdex) and
at least one active source; folder commands work either way. Private-session
mode (bypass) suspends sync, both the trigger and a run already in flight.
Full per-runtime coverage table, registry model and troubleshooting: firekeep.ai/dexes.html.
Development
cd docdex && python -m pytest tests/ -q
The suite runs offline: PDF and DOCX fixtures are built by tests/conftest.py,
and every server call goes through a fake transport.
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 firekeep_docdex-0.1.1.tar.gz.
File metadata
- Download URL: firekeep_docdex-0.1.1.tar.gz
- Upload date:
- Size: 213.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2be294d89948cdbb735ec4d18083a44d4b009203a2493d864de15bdef1b72072
|
|
| MD5 |
266c2671634822e06b6902aad5f29553
|
|
| BLAKE2b-256 |
94a6c9ab768764e8c9bdfc311f2f87bb9f20a91c8717bfdd9834869de93ffd30
|
Provenance
The following attestation bundles were made for firekeep_docdex-0.1.1.tar.gz:
Publisher:
release.yml on kapella-hub/FirekeepHQ
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firekeep_docdex-0.1.1.tar.gz -
Subject digest:
2be294d89948cdbb735ec4d18083a44d4b009203a2493d864de15bdef1b72072 - Sigstore transparency entry: 2500317261
- Sigstore integration time:
-
Permalink:
kapella-hub/FirekeepHQ@e22b94988ac7f31ef2da20f20cab3d356d22022e -
Branch / Tag:
refs/tags/client-v1.0.1 - Owner: https://github.com/kapella-hub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e22b94988ac7f31ef2da20f20cab3d356d22022e -
Trigger Event:
push
-
Statement type:
File details
Details for the file firekeep_docdex-0.1.1-py3-none-any.whl.
File metadata
- Download URL: firekeep_docdex-0.1.1-py3-none-any.whl
- Upload date:
- Size: 201.4 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 |
fc97c47ddcf4a2d9e567873f93cfd8e6cc7aa64ec085849f1a00643253f21085
|
|
| MD5 |
faa3330ada3f1291ded6b6fb5da7a423
|
|
| BLAKE2b-256 |
48c7a2068c5efc5ae0ba96f60271e15111c31bf9688563047f6827b1be23c515
|
Provenance
The following attestation bundles were made for firekeep_docdex-0.1.1-py3-none-any.whl:
Publisher:
release.yml on kapella-hub/FirekeepHQ
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firekeep_docdex-0.1.1-py3-none-any.whl -
Subject digest:
fc97c47ddcf4a2d9e567873f93cfd8e6cc7aa64ec085849f1a00643253f21085 - Sigstore transparency entry: 2500317281
- Sigstore integration time:
-
Permalink:
kapella-hub/FirekeepHQ@e22b94988ac7f31ef2da20f20cab3d356d22022e -
Branch / Tag:
refs/tags/client-v1.0.1 - Owner: https://github.com/kapella-hub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e22b94988ac7f31ef2da20f20cab3d356d22022e -
Trigger Event:
push
-
Statement type: