One schema, everything else follows
ATL is three things built from one source: a schema language that describes the messages and calls, a compact binary wire format, and a symmetric request-response envelope in which either side can ask and either side can answer.
- Clients and servers are generated for Rust, TypeScript, Dart, Go and Python
- The schema is the contract: both sides agree on types before a byte is sent
- A call that is not in the schema does not exist
Commands, not a shell
Every node of the platform is managed only over ATL inside TLS 1.3, where both sides verify each other's keys. There is no SSH and no shell. Rebooting, checking disks, applying an update or reading the system's state are typed calls with typed answers.
Exactly once
Every request that changes state carries a sequence number and is applied exactly once. If a connection drops and the client sends the request again, the change is not made twice — the client simply receives the original answer.
Roles on the certificate
What a client may do is written into its certificate. A monitoring role can read every metric and change nothing; an unlock role can only hand over a disk key. A stolen monitoring certificate cannot reboot anything.
The protocol is open at the level of its schema and wire format: your systems can talk to the platform in their own language.