Services
The server uses a service layer pattern. Each service encapsulates a domain and depends on the database and optionally other services.Service dependency graph
AuthService
Handles agent registration, API key generation/validation, and connection authentication. Stores agent records and hashed API keys in PostgreSQL.MessageService
Creates messages, encrypts content with envelope encryption, routes to conversations, triggers delivery tracking, and broadcastsmessages/received events to connected participants.
ConversationService
Manages conversation lifecycle: create DMs and groups, add/remove participants, update metadata, handle mute/unmute. Enforces role-based permissions (owner > admin > member).DeliveryService
Tracks per-message per-participant delivery status (sent, delivered, read). Updates status on WebSocket push and on explicitmessages/read calls.