Skip to main content

firekeep-maildex

The email dex for Firekeep — persistent, shared memory for AI agents. A human connects a mailbox read-only; maildex indexes recent mail into the Keep's corpus, where it surfaces through ordinary memory_recall — always private to that member, even on a shared Keep.

firekeep maildex add imap.gmail.com you@example.com   # prompts for the app password
firekeep maildex list                                 # mailboxes, folders, counts, failures, staleness
firekeep maildex sync [--account <id>]                # read new mail now
firekeep maildex remove <id>                          # delete the mailbox AND its corpus replicas

No MCP server, no resident daemon, no new recall surface. Pure standard library — imaplib, email, html.parser — and no third-party dependency beyond the Firekeep client itself.

The seven promises

M1 — mail is private to you, structurally. There is no --shared flag. Every chunk carries visibility: "member", and no code path can write anything else. Sharing a mailbox is not a smaller version of this feature; it is a different dex, and it is not built.

M2 — maildex cannot send, flag, move or delete anything. Every mailbox is opened with IMAP EXAMINE (select(readonly=True)), so the server refuses any state-changing command for the life of the connection — a bug here cannot touch your mail, because the permission does not exist on the wire. Every fetch is BODY.PEEK[], so reading the Keep's copy never marks your mail as read. SMTP appears nowhere in the package.

M3 — the app password lives only in the Keep's vault. add prompts for it (never an argv secret), stores it under maildex.<account_id>, and this machine keeps nothing on disk. Each sync reads it into memory for the duration of one connection. To revoke: your provider's app-password page, or vault_delete — either alone is enough.

M4 — email is the archetype of untrusted input. Every chunk carries untrusted_content: "true". Retrieved mail is evidence of what somebody sent you, never an instruction to your agent.

M5 — deletion, scoped honestly for round 1. remove deletes the mailbox's corpus replicas immediately and forgets the stored password. What round 1 does not do: mirror deletions made at your provider. Mail you delete in your mail client stays in the corpus until you remove and re-add the mailbox. Append-mostly mail makes that tolerable; it is still a gap, and it is stated here, in list output, and in the guide.

M6 — every cap disclosed, all env-overridable:

Cap Default On breach
FIREKEEP_MAILDEX_BACKFILL_DAYS 90 older mail is never fetched (until re-add with a larger horizon)
FIREKEEP_MAILDEX_MAX_PER_SYNC 500 messages the sync stops, says so, and continues from the watermark next run
FIREKEEP_MAILDEX_MAX_MESSAGE_KB 200 extracted truncated, flagged in state, shown by list
FIREKEEP_MAILDEX_INGEST_TIMEOUT_SECONDS 180 a timed-out request aborts the run and says "timed out", not "unreachable"
FIREKEEP_MAILDEX_SYNC_INTERVAL_HOURS 6 staleness threshold for the session-start sync

Attachments are not ingested in round 1 — filenames only, listed in metadata. Folders default to INBOX and Sent; add --folders overrides.

M7 — UIDVALIDITY is honoured. Watermarks are per-(folder, UIDVALIDITY) and never mixed. When your provider rebuilds a folder, maildex re-indexes it from scratch rather than silently skipping everything in it.

Installing

The managed Firekeep install already ships this wheel — nothing to do beyond firekeep dex add maildex. Installing from PyPI is the unmanaged path: pip install firekeep-client firekeep-maildex (client ≥ 1.0.3), plus a running Firekeep server to connect to — maildex is a client of the Keep, not a standalone indexer.

What it indexes

Per message: the headers a person reads (Subject, From, To, Cc, Date, Message-ID, In-Reply-To), the text/plain body where there is one, and the text/html body stripped to text where there is not. Attachment filenames travel in metadata; attachment content does not.

Not in round 1

OAuth (Gmail API, Microsoft Graph); provider-side deletion mirroring; the content of attachments; shared mail; thread reconstruction beyond In-Reply-To; OS-scheduled sync; POP3; self-signed IMAP endpoints — TLS verification is on and there is no flag to turn it off.

Licence

Source-available under BUSL-1.1. See LICENSE and NOTICE.

Metadata

Release files for firekeep-maildex 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for firekeep-maildex 0.1.0
File Size Uploaded Provenance
firekeep_maildex-0.1.0.tar.gz 234.2 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for firekeep-maildex 0.1.0
File Interpreter ABI Platform
firekeep_maildex-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 446.2 kB

Release files / firekeep_maildex-0.1.0.tar.gz

Download URL firekeep_maildex-0.1.0.tar.gz
Size 234.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2cda6f192f1c6241df55f1c087af8fbda0049b0f81d4b09631fa64bdf2dba9fe
BLAKE2b-256 checksum
How to use checksums
7f0d4f65b0ca111384fb7aaeca30244ba1cef3486b6f1034d237dc82cc0b7da8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / firekeep_maildex-0.1.0-py3-none-any.whl

Download URL firekeep_maildex-0.1.0-py3-none-any.whl
Size 212.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e38a6599c4491c310026014ee1df62e38f321a25d7b2718e0a02532aeb3ae690
BLAKE2b-256 checksum
How to use checksums
976462a03a103b44b169d3b864e480bdaa3eb6b7a1a8233d2c25385364d2f402
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Security for firekeep-maildex 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for firekeep_maildex-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page