SwarmMarshal

The communication intelligence backbone for your agents.

One MCP server over every inbox you own — Gmail, Microsoft Graph, IMAP, the works. Your agent gets source-grounded answers, thread context, person history, and commitments already extracted, with a citation back to the real message behind every fact.

Source grounded answers open every record
Timelines briefs, packets from private history
Local desktop workbench Windows and macOS
MCP — get_context_pack 3 accounts connected
query: "What did we agree to with Acme in March?" 7 grounded facts · 3 emails · 1 calendar invite sources attached
redaction: ExternalTool PII stripped · peer-shareable fields included policy applied
route: FunctionTypes.AgentChat · LocalOnly gpt-oss:20b · 32 GB host · hot model on-device
0.1.0release
Previewstatus
Free public preview is openpulse
What it is

A local-first data layer your agent can actually rely on.

Most of what your agent needs to be useful already lives in your communications history. SwarmMarshal makes that history multi-provider, source-grounded, queryable over MCP, and routed through an LLM stack you control.

Pillar 1 · Portal

MCP over every inbox, not just Gmail.

Codex and Claude Code each ship a Gmail connector. That covers one account, with no shared context across providers. SwarmMarshal is the layer above that.

Multi-provider, one model

IMAP, Gmail OAuth, Microsoft Graph, app passwords, and OAuth2 variants normalized into a single account abstraction. Native provider clients use Gmail labels and Graph delegated access where it matters — not lowest-common-denominator IMAP.

Per-account isolated SQLite

Each account writes to its own database. The unified view is a query layer over them. No cross-account data leakage; sync, outbox, and IMAP reconciliation run independently per account and survive crashes via durable MessageFlagOutboxEntry queues.

MCP tools your agent will actually use

get_context_pack returns source-grounded facts with confidence scores and redaction levels. get_thread_context returns participants, action items, and last-N message summary. get_person_context returns relationship history across every account at once.

Pillar 2 · Provenance

Every fact carries the message it came from.

Agent frameworks accumulate orphaned rows. SwarmMarshal treats provenance and cleanup as first-class.

SourceRef on every durable record

Canonical shape: Kind, AccountId, RecordId, Uri, Title, Excerpt, ObservedAt, plus explicit DeletionBehavior. Stored on the row, not as an afterthought. Forward-compatible with a normalized provenance graph.

Trust-gated knowledge promotion

Unverified inbound claims land in KnowledgeClaim. Promotion to UserMemory or ContextFact requires user-authored, trusted-contact, or corroborated status. KnowledgeSuppression rows block relearning rejected claims. The data layer enforces trust — not a prompt-layer band-aid.

Cleanup-on-source-delete is mandatory

IMessageDeletionObserver is the interface every writer of source-backed data registers against. Delete a message; observers dispatch and tombstone or cascade. The (SourceAccountId, SourceMessageId) pair invariant is runtime-enforced. Bare IDs are unsolvable by design.

Pillar 3 · Routing

A real LLM router. Function-type keyed. Auditable. Hardware-aware.

Every LLM call goes through ILlmRouter with a stable function-type name. That's the routing key, the audit unit, the benchmark unit, and the place model preferences are materialized.

Governor + advisor pattern

ILlmRoutingGovernor coordinates priority-banded ILlmRoutePolicyAdvisor implementations — Quality 300, Budget 500, RuntimeHealth 600. Deterministic, registration-order-independent. Add an advisor; slot it into the band.

LocalOnly enforced before advisors run

Set PrivacyClass = LocalOnly and the prompt is guaranteed not to leave the machine — even when a cloud advisor would be cheaper or faster. Subscription CLI providers (Claude Code, Codex) are first-class routes for cost-shifting, but they don't satisfy LocalOnly because prompts still leave the machine.

Hardware-aware local selection

MessagePipelineRouteAdvisor reads host RAM, CPU, GPU, and picks the best local model that fits. LocalLlmRuntimeManager keeps per-lane hot models (Text / Embedding / Vision), applies Ollama keep_alive hints, and lets user-waiting traffic preempt background work. Crashed Ollama? LocalLlmRuntimeRepairService restarts it and reports Repaired, NeedsApproval, or NeedsHumanSetup.

Pillar 4 · Hygiene

Long-lived memory needs operations discipline. So we built it.

Most agentic stacks have no memory housekeeping layer. SwarmMarshal treats memory as a durable asset with maintenance cycles, calibration gates, and deterministic safety filters.

Empirical calibration gates

Prompt and model changes run through the message-pipeline calibration harness. Promotion requires ≥0.88 score and ≥90% pass rate; improvements under 2% are rejected for stability. Results are recorded by (prompt hash, hardware key) in the MessagePipelineModelCatalog — same model on different hardware is a different decision.

REM Reconciler runs weekly

A local agent that wakes Sunday 2:00 AM, marks stale claims, escalates contradictions, purges low-confidence unconfirmed memories, and journals findings as AgentInsight rows. Duplicates surface for review instead of getting silently merged. The audit trail is the deliverable.

Deterministic post-LLM safety

When the enrichment model returns knowledge.worthy = false, durable artifacts are dropped before persistence. Ungrounded fact quotes are dropped. Internal [STATUS]/[REPORT]/[PROPOSAL] traffic is normalized away from durable knowledge. The LLM is trusted to classify; the system gates the durable writes.

Bonus

Schema is reconciled from the EF model. No migration files.

SchemaMigrationService.ReconcileSchemaFromModelAsync reads the model on startup, snapshots the live DB, and applies only the missing tables, columns, and indexes. The model is the source of truth; the DB is an eventually-consistent projection. Users at arbitrary versions reconcile cleanly in one idempotent pass.

For the personal user too

Because the data layer is clean, the inbox is calm.

SwarmMarshal also happens to be an excellent email client. The same machinery that gives your agent grounded context gives you fast search, source-cited assistant answers, multi-channel timelines, and supervised research helpers. That side of the product is here:

The app

A real desktop app — data stays on your machine.

Your accounts sync to local SQLite. The MCP server runs in-process. You pick which model interprets each function type, including fully local options. These screenshots are from the actual app.

Daily briefing

Daily briefing

Morning view: AI summary, unread, calendar, approvals, and what needs your attention.

Team explorer

Team explorer

Inspection-first roster of employees, local worker identity, assistant profiles, and helper agents.

Assistant workbench

Assistant workbench

Ask across your communication history, watch tool calls, and keep approvals visible.

Unified inbox

Unified inbox

Email, Telegram, Slack, Discord, and Apple Messages as a fast capture and review layer.

Vibes

Vibes

Vibe-code a workspace by describing it; agents build the forms, tables, and views.

Skill manager

Skill manager

Author and audit reusable skills. Drafts queue up for human approval.

Full gallery →
Free to try

Install. Connect your accounts. Point your agent at the MCP.

Download SwarmMarshal, connect your Gmail / Microsoft / IMAP accounts, and wire the bundled MCP server into Claude Code or Codex. Your agent now reads, queries, and acts across every inbox you own — with provenance.