Skip to content

C11 · NANOARROW · ARROW IPC

vgi-rpc for C

Build services around Arrow arrays. Call them from any vgi-rpc implementation.

Get started Explore the API

vgi-rpc-c implements the shared Arrow IPC RPC protocol with C11 and nanoarrow. Its public API accepts Arrow C Data arrays and schemas. Application code owns its schema declarations and builds batches against them; the runtime owns RPC framing, transport I/O, continuation tokens, and error/log envelopes.

From build to first call

git clone https://github.com/Query-farm/vgi-rpc-c.git
cd vgi-rpc-c
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
./build/vgi-rpc-example-client ./build/vgi-rpc-calculator
# 2 + 3 = 5

Install the native dependencies first. The runtime and its Arrow dependencies compile as C; Python is used only for development tooling and interoperability tests.

Choose your next step

Task Guide Public header
Build, install, or embed the library Building CMake vgi_rpc::vgi_rpc
Register a unary or streaming service Server vgi_rpc/rpc.h
Make calls or consume streams Client vgi_rpc/client.h
Transfer batches through shared memory Shared memory vgi_rpc/shm.h
Reuse bounded subprocess workers Pooling vgi_rpc/pool.h
Export traces and metrics OpenTelemetry vgi_rpc/telemetry.h
Configure HTTP and identity Hosting vgi_rpc/http.h, identity.h, proof.h
Publish or fetch external batches Hosting vgi_rpc/external.h
Read and write Arrow IPC Ownership vgi_rpc/ipc.h, stream.h, batch.h
Reproduce compatibility checks Conformance Shared Python test harness

Start with the compiled calculator server and client, or browse the public API reference. For the canonical protocol, use the wire specification. The framework's general documentation is at vgi-rpc.query.farm.

What the library provides

Unary calls, producer streams, and bidirectional exchanges run over subprocess pipes, Unix sockets, TCP, and HTTP. HTTPS clients verify certificates through libcurl. Local callers can use negotiated shared memory and bounded worker pools; HTTP services can use authenticated continuations, identity, external payloads, and response limits. OpenTelemetry exports client/server traces and metrics.

See conformance and scope for tested behavior and current gaps, including native Iroh connectors and bundled OAuth/cloud credential-provider SDKs.

The separate vgi-c SDK adds the VGI application protocol. Catalogs, DuckDB function execution, COPY, pruning, and attach tickets belong there rather than in this RPC library.

Built by Query.Farm. Available under the Query Farm Source-Available License, Version 1.0.