Get desktop application:
View/edit binary Protocol Buffers messages
BackrestSyncService provides methods to sync data between backrest instances. This service provides its own authentication and authorization.
note: mostly deprecated, sent through headers rather than stream.
request a list of available resources. Only used by the server.
receiving a list of available resources.
BackrestSyncStateService provides methods to query the sync state of known hosts and clients. This service should be served behind authentication and authorization.
If true, the stream will continue to send updates until cancelled.
List of plan IDs that the peer has.
List of repo IDs that the peer has.
The remote config of the peer, if available.
The last time the peer sent a heartbeat, in milliseconds since epoch.
SetRemoteClientConfig pushes a config change to a connected authorized client peer.
The key ID of the connected peer to push config to.
Repos to create or update on the peer.
Plans to create or update on the peer.
Repo IDs to delete on the peer.
Plan IDs to delete on the peer.
(message has no fields)
The ID of the peer instance.
The ID of the peer instance.
Used in:
The IDs of the operations.
The modnos of the operations.
The ID of the log, only used for the first message in a log data stream.
The operation ID of the operation that owns this log data.
Unix timestamp in seconds when the log data expires.
The log data chunk, can be sent repeatedly, must be terminated by a packet with size = 0.
Used in: , ,
Used in: ,
The modno of the config.
The storage version of the config.
Used in: , ,
The repos that are available.
The plans that are available.
The plans to set.
The repos to set.
The repo IDs to delete.
The plan IDs to delete.
queried, response not yet received.
SyncActionEncrypted wraps an encrypted SyncStreamItem. After the post-quantum KEM handshake, all subsequent messages are sent inside this envelope.
Used in:
12-byte GCM nonce
AES-256-GCM(serialized SyncStreamItem)
SyncActionHandshake is the first message sent by each peer over the post-quantum encrypted channel. It carries the sender's long-term ed25519 identity, its instance ID, and a single signature that binds the identity to *this* transport session. The signature covers a domain-separated hash of: "backrest-sync-handshake/v1\x00" || protocol_version (8 bytes BE) || LP(instance_id) || LP(pairing_secret) || LP(transport transcript) where LP(x) = 4-byte BE length prefix || x, and the transport transcript is cryptoutil.TransportSession.Transcript() — a hash that commits to the ephemeral KEM messages of this connection. The transcript binding is what defeats a MITM that completes a separate KEM with each side: each leg has a different transcript, and the legitimate peer's signature only commits to its own transcript, so the attacker cannot forward a usable signature to either side. Receivers MUST recompute the transcript locally from their TransportSession and reject the handshake if the signature does not verify against public_key. There is no timestamp because freshness is provided by the ephemeral KEM, not by clock comparison.
Used in:
sender's long-term ed25519 identity
covered by signature below
optional pairing token; covered by signature below
ed25519(public_key, H(handshake bind input))
SyncActionHeartbeat is sent periodically to keep the connection alive.
Used in:
(message has no fields)
Used in:
Used in:
Used in:
Required only for first message in a log data stream.
The operation ID of the operation that owns this log data.
Unix timestamp in seconds when the log data expires.
Can be sent repeatedly, must be terminated by a packet with size = 0.
If set, indicates an error occurred while fetching the log data.
Used in:
Used in:
Used in:
Used in:
Used in:
(message has no fields)
Used in:
Used in:
SyncEstablishSharedSecret is exchanged immediately after the connection is opened. The initiator (client) sends kem_public_key. The responder (server) replies with kem_encapsulation. Both sides then derive a shared AES-256-GCM session key via the HPKE Export interface. All subsequent messages must be wrapped in SyncActionEncrypted. The KEM is the post-quantum hybrid ML-KEM-1024 + ECDH-P384 (HPKE ciphersuite ML-KEM-1024-P384 / KEM ID 0x0050, RFC 9180 + the IETF hybrid KEM drafts). KDF is HKDF-SHA256, AEAD is AES-256-GCM. Peers must use protocol_version=1; mismatched versions abort the connection.
Used in:
current: 1
set by initiator
set by responder