vgi-rpc is an RPC framework that carries method calls and results as Apache Arrow record batches: chunks of tabular data stored as typed columns with the same number of rows. Define application services in your language and exchange columnar data across process and network boundaries.
In Python, a Protocol class is the contract: type annotations become Arrow schemas. Other SDKs use native interfaces, service macros, or explicit schema declarations. There are no separate .proto files to maintain. The wire protocol supports pipes, subprocesses, Unix and TCP sockets, HTTP, and authenticated Iroh/QUIC, with a shared-memory side channel for local batches. Transport support varies by SDK.
Calls are unary, producer streams (the server pushes batches), or exchange streams, where each turn can process a vector of inputs in one batch instead of requiring a separate RPC per item. Errors, logs, and OpenTelemetry traces travel with them.