Your inbox found its balance.
Email + Equilibrium = Emailibrium. Because your inbox shouldn't feel like a second job.
Emailibrium is a vector-native email intelligence platform that replaces keyword search and manual filters with semantic understanding. Connect your accounts, and in under 10 minutes it clusters, classifies, and cleans 10,000+ emails β then keeps learning from every interaction.
π No cloud processing. No data leaving your machine. Just fast, private, intelligent email.
Most email tools treat your inbox like a database β keyword filters, folder rules, manual sorting. Emailibrium treats it like a living knowledge graph. Here's what makes it different:
- 𧬠Semantic, not syntactic β understands meaning, not just keywords. "Call with the London team about Q3" matches even if you search for "UK quarterly meeting."
- π 100% local by default β your emails, embeddings, and models never leave your machine. No SaaS subscriptions, no data brokers, no surprises.
- β‘ 10,000 emails in 10 minutes β HNSW vector indexing and batch classification deliver inbox zero at a pace no manual approach can match.
- π Gets smarter with you β SONA adaptive learning updates classifications from every correction you make, so the system improves continuously without retraining.
- π Any account, one brain β Gmail, Outlook, IMAP β unified under a single semantic search layer and shared intelligence model.
- π‘οΈ Enterprise-grade encryption, zero cloud risk β AES-256-GCM at rest, Argon2id key derivation, Web Crypto API. Your privacy is a hard guarantee, not a policy.
Command CenterΒ Β Β Β Β Β Β Β Email Reader
Inbox Cleaner WizardΒ Β Β Β Β Β Β Β Insights Explorer
Rules StudioΒ Β Β Β Β Β Β Β Chat Assistant
Settings
| Capability | How |
|---|---|
| π Semantic search | Find "that budget spreadsheet from Sarah" β not just emails containing the word "budget" |
| β‘ 10-minute inbox zero | Guided cleanup wizard with batch actions across thousands of emails |
| π¬ Subscription intelligence | Auto-detects 47 newsletters you forgot you signed up for |
| ποΈ Topic clustering | Emails self-organize into projects, threads, and themes |
| π§ Continuous learning | Every click, star, and archive makes search and classification smarter |
| π± Multi-account unified inbox | Gmail, Outlook, IMAP β one interface, one search, one brain |
Email arrives β Embed as vector β Classify via centroid similarity β Cluster by topic β Archive
β β β
Searchable in <50ms Learns from corrections Groups evolve over time
Under the hood: HNSW vector indexing, Reciprocal Rank Fusion hybrid search, GraphSAGE-inspired clustering, 3-tier adaptive learning (SONA), and AES-256-GCM encryption at rest. All running locally in Rust.
# Clone
git clone https://github.com/pacphi/emailibrium.git
cd emailibrium
# Guided setup (recommended for first time)
make setup # interactive wizard: prerequisites, secrets, AI, Docker
# Option A: Native
make install
make dev
# β Backend: http://localhost:8080 Frontend: http://localhost:3000
# Option B: Docker
make setup-secrets # generate dev secrets (first time only)
make docker-up-dev # start with hot-reloadPrerequisites: Rust 1.97+, Node.js 26 (LTS)+, pnpm 11.5+ β or just Docker. See Setup Guide for details.
β±οΈ Want value in 15 minutes with no cloud setup? Connect a personal Gmail (or Yahoo, iCloud, Fastmail, Zoho) account via IMAP + an app password β no Google Cloud or Azure project required. See QUICKSTART.md. (Outlook.com and Google Workspace require the OAuth path; see the OAuth Setup Guide.)
React TypeScript SPA ββREST + SSEβββ Axum API Gateway
β β
TanStack Router Intelligence Layer
TanStack Query βββββββββββΌββββββββββ
Zustand + PWA β RuVector Engine β
β HNSW Β· SONA Β· GNN β
βββββββββββΌββββββββββ
Data Layer
SQLite Β· Redis Β· REDB
- π¦ Backend: Rust (Axum 0.8), SQLite, 22 vector intelligence modules (ONNX/fastembed default embeddings)
- βοΈ Frontend: React 19, TypeScript, Tailwind CSS, 8 features, PWA-ready
- π Privacy: All embeddings generated and stored locally. Cloud is opt-in, never required.
- π Command Center β search hub with Cmd+K palette
- π§Ή Inbox Cleaner β 4-step guided cleanup wizard
- π Insights Explorer β charts, subscription analytics, health score
- π§ Email Client β view, reply, compose with thread view
- π€ Rules Studio β AI-suggested rules with semantic conditions
- βοΈ Settings β per-account config, encryption, appearance
Emailibrium embeds a Model Context Protocol server in the backend, so any MCP-capable client β Claude Code, Claude Desktop, or the built-in chat β can read your mailbox through the same services the REST API uses. It runs inside the existing Axum process; there is no second port and no separate daemon.
Endpoint: http://localhost:8080/api/v1/mcp (Streamable HTTP)
15 read-only tools, grouped by what they touch:
| Area | Tools |
|---|---|
search_emails, get_email, list_recent_emails, count_emails, get_email_thread, find_similar_emails, list_attachments |
|
| Insights | get_insights, list_subscriptions, list_clusters, get_learning_metrics |
| Accounts | list_accounts, get_sync_status |
| Rules | list_rules |
| Cleanup | preview_cleanup_plan |
Alongside the tools, three resources (email://{id}, thread://{key}, insights://summary)
expose stable read-only views, and two prompts (triage-inbox, weekly-report) package the
common multi-step workflows.
Every tool is read-only β nothing sends, deletes, or modifies mail. Action tools are deliberately deferred (see ADR-028).
Three behaviours are worth knowing before you rely on a result:
preview_cleanup_planis strictly a dry run. It builds a plan in memory, marks the payload"dry_run": true/"persisted": false, and saves nothing. The plan id it returns is ephemeral and will not resolve viaGET /api/v1/cleanup/plan/:id. To get a plan you can actually apply, create one through the REST endpoint.get_learning_metricscounters are process-local and reset when the backend restarts. They are not lifetime totals, so don't read them as historical figures.list_accountsapplies no status filter. Disconnected, errored, and suspended accounts all appear; check thestatusandis_activefields rather than treating presence in the list as a working account.
Localhost only. The whole
/api/v1surface, MCP included, is unauthenticated by design β emailibrium is a local-first single-user app. Do not expose port 8080 beyond localhost. Bearer auth is a prerequisite for any non-localhost deployment.
See Connecting an MCP client for client setup.
| Document | Description |
|---|---|
| User Guide | Getting started, features, keyboard shortcuts |
| UI Overview | Visual tour β screenshots of every screen |
| Deployment Guide | Install, Docker, production setup |
| Configuration Reference | Every config key, default, and env override |
| Document | Description |
|---|---|
| Maintainer Guide | Developer, designer, operator, security, and PM perspectives |
| Architecture | 4-tier system design, bounded contexts, data flow |
| Releasing | Version, tag, changelog, Docker image publishing |
| API Spec | OpenAPI 3.0 β all 12 endpoints with schemas |
See all ADRs in docs/ADRs.
See all DDDs in docs/DDDs.
| Document | Description |
|---|---|
| Research: Initial Evaluation | Academic evaluation with 30 citations |
| Research: LLM Options | ONNX, Ollama, cloud β tiered AI architecture |
| Search Quality | Recall, NDCG, MRR methodology |
| Classification | Macro-F1, per-category P/R |
| Clustering | Silhouette, ARI, detection metrics |
| Performance | Benchmarks and memory profiling |
| Domain Adaptation | Model switching, multilingual |
| Inbox Zero Protocol | User study design |
make help # see all available targets
make ci # format-check + lint + typecheck + test
make test # backend (Rust) + frontend (Vitest)
make docker-up-dev # full stack with hot-reload
make upgrade # upgrade all dependencies
make outdated # check what's staleSee the Maintainer Guide for the full developer experience.
| Layer | Technology |
|---|---|
| Backend | Rust, Axum 0.8, SQLite (SQLx), Moka cache |
| Vector Intelligence | HNSW indexing, SONA learning, GraphSAGE-inspired clustering, adaptive quantization (scalar/PQ/binary) |
| Frontend | React 19, TypeScript 5.9, Vite 8, TanStack Router + Query, Zustand, Tailwind CSS |
| UI Components | shadcn/ui pattern, Radix primitives, cmdk, Recharts, Framer Motion |
| Infrastructure | Docker Compose, GitHub Actions CI, Dependabot, Husky + lint-staged |
| Security | AES-256-GCM encryption at rest, Argon2id KDF, Web Crypto API, CSP headers |
MIT
Emailibrium: where email finds its equilibrium.






