Problem / Motivation
Modern open-source clients treat LLM assistance as a headline feature — in particular AI auto-tagging / labeling (automatically classify incoming mail into categories/labels), plus thread summaries, smart replies, and compose/rewrite. Bulwark has no AI at all: it offers manual multi-tag / color labels and server-side Sieve rules (deterministic, hand-authored), but nothing that categorizes mail by content, so users coming from AI clients lose auto-triage.
Doing this against a self-hosted, operator-chosen LLM endpoint keeps it consistent with Bulwark's privacy-first stance — unlike hosted clients that route mail through their own infra + cloud LLMs.
Reference open-source implementations:
elie222/inbox-zero (MIT) — AI categorization + AI rules + auto-labeling over Gmail/Outlook.
Mail-0/Zero (MIT) — AI agents/LLMs including auto-labeling.
Proposed Solution
Bulwark already has a strong plugin surface (composer-sidebar slot, email-banner slot, email-body access, onBeforeEmailSend, /api/translate proxy, http:fetch + httpOrigins, the privileged crypto-plugin tier — see the community paulhenry46/pgp-plugin). Expose the few missing primitives so a first-party or community "AI Assistant" plugin can run entirely against an operator-configured endpoint:
- Auto-tagging hook — an
onNewEmail/post-fetch hook that can read a message's decoded content and apply JMAP keywords/tags (map an LLM classification onto existing tags), scoped to an allow-list of target tags.
- Composer editor API — read selection/body and insert/replace/stream text into the Tiptap editor (today a plugin can render a sidebar but can't write into the compose body).
- Thread-content read API for summarization.
- Admin-lockable LLM endpoint config (base URL + key + model) pointing at a self-hosted OpenAI-compatible gateway (Ollama / vLLM / LiteLLM / etc.).
- Reference plugin: auto-tag on arrival, summarize thread, compose/rewrite with tone, smart-reply chips.
Alternatives Considered
Sieve rules (current) — deterministic keyword/sender rules, no content understanding. External AI clients (Inbox Zero, Zero) — route mail through their infra + cloud LLMs, defeating self-hosting. A fully external plugin today — blocked: no API to apply tags from a content hook or to write into the composer.
Feature Area
No response
Mockups / Examples
Inbox Zero AI categorization + auto-label; Mail-0/Zero AI labeling.
Additional Context
Keeping the model endpoint operator-configured preserves "your data, your server". Only the plugin primitives above are required from core; the assistant itself can ship as a plugin like S/MIME does.
Problem / Motivation
Modern open-source clients treat LLM assistance as a headline feature — in particular AI auto-tagging / labeling (automatically classify incoming mail into categories/labels), plus thread summaries, smart replies, and compose/rewrite. Bulwark has no AI at all: it offers manual multi-tag / color labels and server-side Sieve rules (deterministic, hand-authored), but nothing that categorizes mail by content, so users coming from AI clients lose auto-triage.
Doing this against a self-hosted, operator-chosen LLM endpoint keeps it consistent with Bulwark's privacy-first stance — unlike hosted clients that route mail through their own infra + cloud LLMs.
Reference open-source implementations:
elie222/inbox-zero(MIT) — AI categorization + AI rules + auto-labeling over Gmail/Outlook.Mail-0/Zero(MIT) — AI agents/LLMs including auto-labeling.Proposed Solution
Bulwark already has a strong plugin surface (composer-sidebar slot, email-banner slot, email-body access,
onBeforeEmailSend,/api/translateproxy,http:fetch+httpOrigins, the privileged crypto-plugin tier — see the communitypaulhenry46/pgp-plugin). Expose the few missing primitives so a first-party or community "AI Assistant" plugin can run entirely against an operator-configured endpoint:onNewEmail/post-fetch hook that can read a message's decoded content and apply JMAP keywords/tags (map an LLM classification onto existing tags), scoped to an allow-list of target tags.Alternatives Considered
Sieve rules (current) — deterministic keyword/sender rules, no content understanding. External AI clients (Inbox Zero, Zero) — route mail through their infra + cloud LLMs, defeating self-hosting. A fully external plugin today — blocked: no API to apply tags from a content hook or to write into the composer.
Feature Area
No response
Mockups / Examples
Inbox Zero AI categorization + auto-label; Mail-0/Zero AI labeling.
Additional Context
Keeping the model endpoint operator-configured preserves "your data, your server". Only the plugin primitives above are required from core; the assistant itself can ship as a plugin like S/MIME does.