Skip to main content

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_recallprivate 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

firekeep_docdex-0.1.1.tar.gz (213.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

firekeep_docdex-0.1.1-py3-none-any.whl (201.4 kB view details)

Uploaded Python 3

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

Hashes for firekeep_docdex-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2be294d89948cdbb735ec4d18083a44d4b009203a2493d864de15bdef1b72072
MD5 266c2671634822e06b6902aad5f29553
BLAKE2b-256 94a6c9ab768764e8c9bdfc311f2f87bb9f20a91c8717bfdd9834869de93ffd30

See more details on using hashes here.

Provenance

The following attestation bundles were made for firekeep_docdex-0.1.1.tar.gz:

Publisher: release.yml on kapella-hub/FirekeepHQ

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for firekeep_docdex-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fc97c47ddcf4a2d9e567873f93cfd8e6cc7aa64ec085849f1a00643253f21085
MD5 faa3330ada3f1291ded6b6fb5da7a423
BLAKE2b-256 48c7a2068c5efc5ae0ba96f60271e15111c31bf9688563047f6827b1be23c515

See more details on using hashes here.

Provenance

The following attestation bundles were made for firekeep_docdex-0.1.1-py3-none-any.whl:

Publisher: release.yml on kapella-hub/FirekeepHQ

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page