bichon is a free, open source api development & testing project written in TypeScript and released under AGPL-3.0. It has 1,955 GitHub stars, 80 forks and 38 open issues, and was last pushed 2 days ago. On this registry it ranks #112 of 178 tracked projects in API Development & Testing, with 5 head-to-head comparisons available.

What is bichon?

Bichon is a self-hosted email archiving server written in Rust that downloads mail from IMAP accounts, builds a full-text search index, and serves a REST API with an embedded WebUI for long-term preservation, cross-account search, and programmatic access — built for people and teams who need to keep and query large volumes of email rather than send it.

What it is

Bichon lives in the self-hosted email and backup ecosystem and is positioned as an archiver, not an email client. It never sends, composes, forwards, or replies; the optional SMTP server only receives mail. It replaces the ad-hoc mix of IMAP clients, export scripts, and separate search stacks that teams otherwise assemble to keep old mail readable and queryable.

The concrete problem is retrieval. Mail spread across many IMAP accounts is hard to search as one body of knowledge. Bichon pulls accounts concurrently, indexes subject, body, sender, recipients, and attachment properties, reconstructs threads across folders, and exposes everything through a REST API and WebUI. Storage is three embedded layers — Tantivy for the full-text index with Zstd compression, bichon-blob with Zstd for blobs, and memdb for relational metadata — so no external database or search cluster is needed.

Key capabilities

  • Concurrent multi-account IMAP download using password (PLAIN/LOGIN) or OAuth 2.0 (SASL XOAUTH2) with automatic token refresh and PKCE, over SSL/TLS, STARTTLS, or plain connections, with optional self-signed certificate acceptance.
  • Incremental UID-based delta fetching that pulls only new messages, detects UIDVALIDITY changes, and triggers automatic cache rebuilds, plus fetch scoping by date range, folder limit, or named folders with per-account SOCKS5 proxy routing.
  • Full-text search over subject, body, sender, recipients, and attachment properties, optimized for European languages, with filters for date range, size range, attachment presence, file type, content category, and facet-based tag combinations.
  • BLAKE3 content hashing deduplicates identical bodies and attachments so each is stored once, while folder moves update metadata only.
  • OpenAPI 3.0 documentation served at /api-docs through Swagger UI, ReDoc, and Scalar, covering every endpoint with request and response schemas.
  • Multi-user RBAC with five built-in roles (Admin, Manager, Member, AccountManager, AccountViewer), custom roles, 22 granular permissions, and account-level isolation enforced at the API layer.
  • Import from EML directories, MBOX including Gmail variants, Thunderbird profiles, and Outlook PST via CLI, EML import from the WebUI, MBOX export via bichon-cli, and bulk restore of mail back to original IMAP accounts.

Who uses it and how

  • Individuals and small teams consolidating several IMAP accounts into one searchable archive through the WebUI.
  • Organisations with retention duties that need permissioned access, using account-level isolation and scoped roles so each user sees only the accounts granted to them.
  • Developers integrating archived mail into other systems through the OpenAPI 3.0 REST API instead of scraping a mail client.
  • Administrators migrating existing stores by importing MBOX, Thunderbird, or PST data and restoring mail in bulk to source accounts.
  • Operators on restricted networks routing download traffic per account through a configurable SOCKS5 proxy.

Getting started

Docker is the recommended installation path, with a Docker Compose option alongside it; binary installation and building from source are documented alternatives.

How it compares

The facts provided name no comparable or paid products, so Bichon stands alone in this registry rather than being contrasted with alternatives. What distinguishes it here is the packaging: a Rust server, an embedded Tantivy index, and a WebUI delivered as one self-hosted unit.

When to use it — and when not to

The storage layer is embedded with zero external dependencies, but a self-hoster still owns backups, TLS termination, and any inbound mail received through the optional SMTP server. Anyone wanting an email client that composes, forwards, or replies should not choose it, because Bichon deliberately does none of that. Facts also flag caveats: the README excerpt is truncated, the registry records the language as TypeScript while the README states Rust, and the documented v0.x to v1.0 data migration means major upgrades need planning.

project readme (upstream, from github) — read inline

Bichon Logo

BICHON

GitHub Stars Docker Pulls User Survey

Release Docker License Ask DeepWiki Discord Follow on X

A self-hosted email archiving server built in Rust. Download emails from IMAP accounts, builds a full-text search index, and serves a REST API with an embedded WebUI. Purpose-built for long-term preservation, unified cross-account search, and programmatic access to archived email.

Watch the demo
▶ Click to watch the demo

[!NOTE] Bichon is an archiver, not an email client. It does not send, compose, forward, or reply to emails. Its optional SMTP server is for receiving emails only.

Contents

Features

  • Multi-Account IMAP Download: Download multi-account concurrently. Supports password (PLAIN/LOGIN) and OAuth 2.0 (SASL XOAUTH2) with automatic token refresh and PKCE. SSL/TLS, STARTTLS, or plain connections with optional self-signed certificate acceptance.
  • Incremental Download: UID-based delta fetching downloads only new messages after the initial download. UIDVALIDITY changes are detected and trigger automatic cache rebuilds.
  • Fetch Scoping: Filter download by date range, mailbox folder limit, or specific folder names. Configurable per-account SOCKS5 proxy routing.
  • Auto-Configuration: Discover IMAP server settings automatically from an email domain.
  • Full-Text Search: Search across subject, body, sender, recipients, attachment properties, and more. Optimized for European languages.
  • Advanced Filters: Date range, size range, attachment presence, file type, content category, and facet-based tag combinations.
  • Thread Grouping: Reconstruct and view complete conversation threads across folders.
  • Attachment Search: Browse and filter attachments by sender, file type, size, and other attachment properties.
  • Faceted Tags: Add, remove, or overwrite tags on messages and attachments. Filter by tag combinations with real-time count updates.
  • Contacts View: Extracted and deduplicated sender/recipient address book across all authorized accounts.
  • Three-Layer Storage: Tantivy for full-text indexing (Zstd compression), bichon-blob with Zstd for compressed blob storage, and memdb for relational metadata. All embedded — zero external dependencies.
  • Content Deduplication: Identical email bodies and attachments stored once via BLAKE3 content hashing. Folder moves update metadata only.
  • Dashboard Analytics: Email volume trends, top senders, storage usage breakdown, attachment statistics, and per-account activity. Scoped by user permissions.
  • OpenAPI 3.0: Interactive API documentation at /api-docs (Swagger UI, ReDoc, Scalar). All endpoints documented with request/response schemas.
  • Multi-User RBAC: 5 built-in roles (Admin, Manager, Member, AccountManager, AccountViewer) plus custom roles with 22 granular permissions.
  • Account-Level Isolation: Grant users access to specific accounts with scoped roles. Permissions enforced at the API layer.
  • CLI & WebUI Import Tools: Import from EML directories, MBOX files (including Gmail variants), Thunderbird profiles, and Outlook PST files via CLI. Import EML files directly from the WebUI.
  • CLI Export: Download account data as MBOX via bichon-cli.
  • Bulk Restore: Restore emails in bulk back to their original IMAP accounts.
  • Embedded SMTP Server: Receive emails directly at the gateway level. STARTTLS or TLS encryption. AUTH PLAIN/LOGIN with API token authentication.
  • Admin Tooling: Password reset for locked-out admins. Non-destructive migration from v0.3.7 and v1.x to v2.x.
  • API Token Management: Create, list, and revoke long-lived API tokens for programmatic access.
  • SOCKS5 Proxy Management: Configure and manage proxy profiles for routing IMAP traffic per account.
  • Scheduled Download: Configure per-account download schedules using cron expressions. Run syncs at specific times or intervals — for example, nightly-only or business-hours-only archiving.
  • Remote Content Blocking: External images and tracking pixels embedded in emails are blocked by default. Users can selectively allow remote content to load on a per-message basis from the WebUI.
  • Async Index Deduplication: Duplicate detection in the search index is performed asynchronously, reducing write latency during high-throughput ingestion.

Quick Start

Docker (Recommended)

# Pull the image
docker pull rustmailer/bichon:latest

# Create data directory
mkdir -p ./bichon-data

# Run container
docker run -d \
  --name bichon \
  -p 15630:15630 \
  -v $(pwd)/bichon-data:/data \
  --user 1000:1000 \
  -e BICHON_ROOT_DIR=/data \
  -e BICHON_ENCRYPT_PASSWORD=your-secure-password-here \
  rustmailer/bichon:latest

Open http://localhost:15630 in your browser.

[!IMPORTANT] Default login: username admin, password admin@bichon. Change this immediately via Settings → Profile.

Docker Compose

services:
  bichon:
    image: rustmailer/bichon:latest
    container_name: bichon
    ports:
      - "15630:15630"
    volumes:
      - ./bichon-data:/data
    user: "1000:1000"
    environment:
      BICHON_ROOT_DIR: /data
      BICHON_ENCRYPT_PASSWORD: your-secure-password-here
      BICHON_LOG_LEVEL: info

Binary Installation

Download from the Releases page:

Platform Archive
Linux (GNU) bichon-x.x.x-x86_64-unknown-linux-gnu.tar.gz
Linux (MUSL) bichon-x.x.x-x86_64-unknown-linux-musl.tar.gz
macOS bichon-x.x.x-x86_64-apple-darwin.tar.gz
Windows bichon-x.x.x-x86_64-pc-windows-msvc.zip
# Linux / macOS
./bichon --bichon-root-dir /path/to/data --bichon-encrypt-password your-password

# Windows
.\bichon.exe --bichon-root-dir E:\bichon-data --bichon-encrypt-password your-password

--bichon-root-dir must be an absolute path. All Bichon data lives under this directory.

Build from Source

Prerequisites: Rust (latest stable), Node.js 20+, pnpm

git clone https://github.com/rustmailer/bichon.git
cd bichon

## Bu

readme truncated — read the full docs on github

Frequently asked questions

Is bichon free to use?

bichon is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does bichon do?

Bichon – A lightweight, high-performance Rust email archiver with WebUI

What is bichon written in?

bichon is primarily written in TypeScript. Its source is publicly available at https://github.com/rustmailer/bichon, and it has 1,955 GitHub stars.