Skip to content

About

Protobuf models and wire-level limits for ArcRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

ArcRelay wire protocol

This repository owns the public ArcRelay v1 wire contract. The transport envelope is in proto/common.proto; feature messages are in proto/arcrelay.proto.

Compatibility policy

  • PROTOCOL_MAJOR, ALPN, the discovery protocol token, protobuf package, and cryptographic domain separators advance together only for an intentionally incompatible release.
  • Peers advertise an inclusive minor-version range and select the highest common minor. A connection is rejected when the ranges do not overlap.
  • Features negotiate their own version independently from the transport version. Adding an optional field or a new feature is a minor-compatible change; changing field meaning is not.
  • Published protobuf field numbers, enum numbers, stream-kind bytes, feature identifiers, and capability tokens are permanent. Removed values must be marked reserved and must never be reused.
  • Every decoder enforces a size limit before allocation. Bulk bytes use a dedicated stream with an exact length, digest, timeout, and one-time ticket.

Run buf lint in this repository for schema style checks. Once the v1 schema is tagged, run buf breaking --against <last-release-ref> for every protocol change. Rust and Dart generated sources must both be regenerated from these canonical schemas; generated files are never edited by hand.

v1 schema ownership

proto/arcrelay.proto exports capability-owned source files: control, input, clipboard, blob, transfer, files, print, system, media, device, windows, actions and notifications. status.proto holds shared failures; common.proto owns the authenticated transport envelope. The package and protocol major remain v1. This contract is unreleased: every peer must use the same integration revision.

File transfer uses raw file bytes followed by a SHA-256 trailer and FIN after the feature stream header, rather than per-chunk protobuf messages or a prehash. Regenerate Dart with the private mobile repository's generation script; Rust is generated by this crate's build script. Never edit generated client files.

About

Protobuf models and wire-level limits for ArcRelay

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages