Skip to content

product and engineering specifications for simplexmq#1726

Open
epoberezkin wants to merge 66 commits intorcv-servicesfrom
ep/spec-2
Open

product and engineering specifications for simplexmq#1726
epoberezkin wants to merge 66 commits intorcv-servicesfrom
ep/spec-2

Conversation

@epoberezkin
Copy link
Member

No description provided.

@epoberezkin epoberezkin requested a review from spaced4ndy as a code owner March 9, 2026 10:28
@evgeny-simplex evgeny-simplex force-pushed the ep/spec-2 branch 2 times, most recently from ea808cc to f3df37f Compare March 11, 2026 22:27
@evgeny-simplex evgeny-simplex force-pushed the ep/spec-2 branch 2 times, most recently from 9043b84 to 3145f8e Compare March 14, 2026 19:22
- **Duplex connections**: each connection uses a pair of SMP queues - one for each direction. The queues can be on different routers chosen independently by each party. See the [duplex connection procedure](../protocol/agent-protocol.md) for the full handshake.
- **Connection establishment**: one party creates a connection and generates an invitation (containing router address, queue ID, and public keys). The invitation is passed out-of-band (QR code, link, etc.). The other party joins by creating a reverse queue and completing the handshake.
- **Connection links**: the Agent supports connection links (long and short) for sharing connection invitations via URLs. Short links use a separate SMP queue to store the full invitation, allowing compact QR codes.
- **Queue rotation**: the Agent periodically rotates the underlying SMP queues, limiting the window for metadata correlation. Rotation is transparent to the application - the connection identity is stable while the underlying queues change.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

factually incorrect


After deployment (up to 5 minutes), get the server address from Linode tags or SSH: `smp://<fingerprint>@<fqdn>`.

### DigitalOcean 1-click
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it up to date?

@@ -0,0 +1,9 @@
# Agent — Duplex Connections
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

empty - don't forget to remove

Initialize: `smp-server init -n <fqdn>` (or `--ip <ip>`). This generates TLS certificates. The CA certificate fingerprint becomes part of the server address: `smp://<fingerprint>@<hostname>[:5223]`.

SMP server implements [SMP protocol](./protocol/simplex-messaging.md).
The server uses in-memory persistence with an optional append-only store log for queue persistence across restarts. Enable with `smp-server init -l` or in `smp-server.ini`. The log is compacted on every restart.
Copy link
Collaborator

@spaced4ndy spaced4ndy Mar 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Strange to specify in-memory persistence as main option at this point, and to not mention db option.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants