Feature: Direct Messages (E2EE Policy-Driven Mailbox) #16
Labels
No labels
area:api
area:core
area:docs
area:infra
area:ux
dependencies
documentation
duplicate
good first issue
help wanted
invalid
question
rust
status:complete
status:partial
status:planned
type:bug
type:design
type:feature
type:infra
type:refactor
type:research
type:ux
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
icub3d/decentcom#16
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Migrated from GitHub issue icub3d/decentcom#16
Original Author: @icub3d
Original Date: 2026-04-15T14:15:40Z
Feature: Direct Messages (E2EE Policy-Driven Mailbox)
Overview
Direct messages (DMs) allow two or more users to have private, End-to-End Encrypted (E2EE) conversations. DMs are treated as a temporary "mailbox" rather than a permanent archive, with the server acting as a relay and short-term buffer. Persistence is governed by user-selectable retention policies.
Background
The original design (Issue #16) proposed server-side plaintext storage. This has been refined to a privacy-first model where the server is a "mailbox" for encrypted blobs, supporting multi-device synchronization while ensuring data is purged once delivered.
Requirements
docs/design/identity.md).Design: Policy-Driven Mailbox
1. Encryption Strategy
2. Retention Policies
Messages in the
pending_dmstable are purged according to the chosen policy:ACK.3. "Mailbox" Workflow
pending_dmswith a list of "Target Device IDs".ACK(message_id, device_id).API / Interface Changes
REST Endpoints
POST /api/v1/dms/sync- Fetch pending encrypted blobs and metadata.POST /api/v1/dms/ack- Acknowledge receipt of specific message IDs.POST /api/v1/dms/send- Upload encrypted blobs.GET /api/v1/users/:pubkey/devices- Fetch public device keys for a recipient to perform E2EE.Gateway Events
DM_NOTIFY- Real-time signal that new pending messages are available for fetch.Task List
Server
device_keysstorage in User model.pending_dmsanddm_ackstables.Client (Tauri/Rust)
Client (React)
Open Questions