arcbox-vm-proto — the wire vocabulary between a sandbox host and the
vm-agent init inside the sandbox.
Three channels, three modules:
- [
boot] — what the host passes through the kernel command line (ip=) and the net-reconfigure command it sends after a snapshot restore. - [
exec] — the exec channel (guest vsock port [exec::AGENT_PORT]): frame opcodes, the session-start command, the listen-table wait request, and the readiness dial-out port. - [
mod@file] — the file channel (guest vsock port [file::FILE_PORT]): frame opcodes, request payloads, and the stat/event DTOs.
Every frame on both channels is [u8 type][u32 LE len][payload]; the
JSON payloads are the serde types here. This crate depends on serde
alone so the agent — a static musl binary staged into every sandbox
rootfs — links it without pulling in the manager, and the manager
(arcbox-computer-runtime) links it so both ends decode the same bytes.
Compatibility
A restored snapshot resumes whatever vm-agent it was checkpointed
with, so old agents stay in service indefinitely. Payloads are
therefore evolved additively: new JSON fields carry #[serde(default)],
new frame types are ignored by agents that predate them, and readers key
variable-length binary payloads on their length rather than on the
sender's version.