The Beta delivered the full API surface (Send, Health, Subscribe/Receive in core and edge mode), while allowing to use Kernel API for Store access for existing applications. General Availability makes the Messaging API production-ready: DST-validated reliability at scale, automatic recovery of messages missed while offline, built-in rate limit management and anonymity via mix integration.
FURPS
- Messaging API: R1, R2
- Mixnet
- Rate Limit Manager
Risks
| Risk | (Accept, Own, Mitigation) |
|---|---|
| Mix module readiness | Mix is owned by AnonComms. If the mix interface is not ready in time, sender anonymity properties of the API are delayed, not the API itself. |
| Rate limit UX impact | Rate limiting causes messages to be queued or dropped. UX implications must be communicated clearly in the API and documentation. |
Deliverables
Reliability and scale validation with DST
Owner: Delivery Team + DST
The Messaging API is QA-approved for production use. DST validates reliability and performance at scale against FURPS targets.
Done when: A DST test report covering reliability and scale targets is available, and QA sign-off is obtained.
Offline periods backfill
Owner: Delivery Team
Messages missed while a node was offline are retrieved automatically on reconnect and delivered through the regular Subscribe/Receive path. Applications get a complete message stream without implementing their own Store-based recovery.
Feature: Messaging API
FURPS:
- R2. Receives messages using peer-to-peer reliability (service node redundancy, periodic store query, periodic filter ping).
Done when: After an offline period, a subscribed application receives all missed messages through its existing subscription, with no additional API calls.
Create Rate Limit Manager
Owner: Delivery Team
Note: a basic implementation already exists in logos_delivery/channels/rate_limit_manager/ (queue + epoch reset). This deliverable completes it per the FURPS below (priorities, batching, persistence).
Feature: Rate Limit Manager
FURPS:
-
F1. Rate limit the number of messages passed to the delivery service.
-
F2. The rate limit is set in the form of number of messages per epoch; same format as RLN Relay.
-
F3. Tracks current quota and usage.
-
F4. Messages can be flagged with three priority levels: critical, normal, optional.
-
F5. When remaining message quota is low, critical messages are sent, normal messages are queued and optional messages are dropped.
-
F6. When message quota is exhausted, critical messages are queued on top, normal messages are queued, optional messages are dropped.
-
U1. Developer can mark messages with relevant priority.
-
U2. Developer can pass messages by batch; with an all-or-none sending strategy.
-
U3. Developer can access total quota and remaining quota values.
-
U4. Message status is available to the developer (queued, dropped, passed to delivery service).
-
R1. Errors and status from the underlying delivery service are available to the developer.
-
R2. Queued messages are persisted across restart.
-
R3. Quota status is persisted across restart.
-
S1. Nim library.
-
+1. Nimble package manager is used to build.
Integrate Rate Limit Manager
Owner: Delivery Team
Integrate the Rate Limit Manager (created in Reliable Channel API — Beta) into the Messaging API, so applications sending via the plain Messaging API get quota tracking and prioritized queueing without implementing it themselves.
Feature: Rate Limit Manager
Done when: The Messaging API send path enforces the rate limit with message priorities, using a single per-node quota.
Integrate Mix into Messaging API
Owner: Delivery Team
Messaging API gains an additional configuration parameter that allows clients to specify the anonymity requirements:
Required// when Mix is not available, messages are not publishedPreferred// when Mix is not available, fallback to regular relay/lightpushNone// don’t use Mix
Behind the MessagingAPI, Mix discovery should be started when needed and Mix protocol should be used for publishing accordingly.
Feature: Mixnet
FURPS:
- F3. Client nodes can send light push requests over the mixnet before delivery to a service node.
- F4. Client nodes can receive a response to a light push request over the mixnet.
Dependency: mix interface from AnonComms team must be available.
Done when: All three anonymity modes work as specified, and mix routing requires no application changes beyond setting the parameter.
Provide documentation on the Messaging API
Owner: Delivery Team
Documentation is a hard requirement for General Availability. It does not have to be published as a website — comprehensive documentation in the repository (e.g. a README) is sufficient.