How briar/briar-mailbox works
Briar Mailbox is a relay that lets Briar contacts leave messages and files for an owner when the owner is offline; the owner can also leave messages for contacts to retrieve later. Its Android app supports onboarding and setup, while a CLI provides a server runtime. The documented transport is Tor, with Bluetooth, Wi-Fi Direct, and LAN described as extended capabilities. Source excerpts show setup, authentication, persistence, and lifecycle responsibilities; other feature connections are included only where the README documents them or left unverified.
Main entry points: WebServerManager.kt HTTP server · Database.kt Database · TorPlugin.java Tor transport · SetupManager.kt Mailbox setup
Components 21
Clients and setup
- Android app
mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxService.kt - Setup screens
mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/setup - Server CLI
mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt
Mailbox runtime
- Lifecycle manager
mailbox-core/src/main/java/org/briarproject/mailbox/core/lifecycle/LifecycleManager.kt - HTTP server
mailbox-core/src/main/java/org/briarproject/mailbox/core/server/WebServerManager.kt - API routes
mailbox-core/src/main/java/org/briarproject/mailbox/core/server/Routing.kt - Mailbox setup
mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt - Mailbox wipe
mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/WipeManager.kt
Identity and message storage
- Authentication
mailbox-core/src/main/java/org/briarproject/mailbox/core/server/AuthManager.kt - Contact records
mailbox-core/src/main/java/org/briarproject/mailbox/core/contacts/ContactsManager.kt - Message files
mailbox-core/src/main/java/org/briarproject/mailbox/core/files/FileManager.kt - Database
mailbox-core/src/main/java/org/briarproject/mailbox/core/db/Database.kt - Transactions
mailbox-core/src/main/java/org/briarproject/mailbox/core/db/Transaction.kt - Settings metadata
mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/MetadataManager.kt - Random IDs
mailbox-core/src/main/java/org/briarproject/mailbox/core/system/RandomIdManager.kt
Network and platform
- Tor transport
mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/TorPlugin.java - Android networking
mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidNetworkManager.java - App status
mailbox-android/src/main/java/org/briarproject/mailbox/android/StatusManager.kt - Push-like alerts
mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxNotificationManager.kt
Other components
- Mailbox owner
- Briar contacts
Connections 28
- Briar contacts → HTTP server: leave messages
- Mailbox owner → HTTP server: retrieve messages
- Mailbox owner → HTTP server: leave messages
- Briar contacts → HTTP server: retrieve messages
- HTTP server → Tor transport: uses Tor
- Mailbox owner → Setup screens: sets up
- Setup screens → Mailbox setup: configures
- Server CLI → Lifecycle manager: starts lifecycle
mailbox-cli/src/main/java/org/briarproject/mailbox/cli/Main.kt - Android app → Lifecycle manager: starts services
mailbox-android/src/main/java/org/briarproject/mailbox/android/MailboxService.kt - Lifecycle manager → Database: opens and closes
mailbox-core/src/main/java/org/briarproject/mailbox/core/lifecycle/LifecycleManager.kt - API routes → Authentication: checks principals
- Mailbox setup → Settings metadata: stores tokens
mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt - Mailbox setup → Random IDs: generates token
mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt - Mailbox setup → Message files: checks database files
mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt - Authentication → Database: reads contacts
mailbox-core/src/main/java/org/briarproject/mailbox/core/server/AuthManager.kt - Authentication → Settings metadata: checks metadata
mailbox-core/src/main/java/org/briarproject/mailbox/core/server/AuthManager.kt - Contact records → Database: reads and writes
mailbox-core/src/main/java/org/briarproject/mailbox/core/contacts/ContactsManager.kt - Message files → Database: checks access
mailbox-core/src/main/java/org/briarproject/mailbox/core/files/FileManager.kt - Message files → Authentication: authorizes transfers
mailbox-core/src/main/java/org/briarproject/mailbox/core/files/FileManager.kt - Database → Transactions: uses
mailbox-core/src/main/java/org/briarproject/mailbox/core/db/Database.kt - App status → Lifecycle manager: observes state
mailbox-android/src/main/java/org/briarproject/mailbox/android/StatusManager.kt - App status → Tor transport: observes state
mailbox-android/src/main/java/org/briarproject/mailbox/android/StatusManager.kt - App status → Push-like alerts: updates
mailbox-android/src/main/java/org/briarproject/mailbox/android/StatusManager.kt - Android networking → Tor transport: implements network
mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidNetworkManager.java - Briar contacts → Tor transport: connect via
- Mailbox owner → Tor transport: connect via
- Mailbox owner → Android networking: optional transports
- Briar contacts → Android networking: optional transports