Workers in your language.
One wire protocol, multiple implementations. Every SDK interoperates over the same Apache Arrow IPC format.
Every implementation speaks the same wire protocol, so a DuckDB session can attach workers written in different languages in the same query. Pick the one your team already runs.
Python
Reference implementationBuild VGI workers in Python — the reference implementation, with full feature support: strict mypy typing, all transports, streaming, introspection, shared memory, and OpenTelemetry. The vgi package is the DuckDB worker framework; vgi-rpc is the transport layer underneath.
Install
pip install vgi-python # or: uv add vgi-python
TypeScript
Feature parityBuild VGI workers in TypeScript for Bun, Node.js, and Deno. HTTP server/client, OpenTelemetry, dispatch hooks, HTML pages, external storage with S3/GCS backends, and SHA-256 checksums.
Install
npm install @query-farm/vgi # or: bun add @query-farm/vgi
Go
Feature parityBuild VGI workers in Go, built on apache/arrow-go. HTTP server, OpenTelemetry, dispatch hooks, HTML pages, external storage with S3/GCS backends, and SHA-256 checksums.
Install
go get github.com/Query-farm/vgi-go/vgi
Rust
Feature parityBuild VGI workers in Rust, tracking the Python reference byte-for-byte on the wire — 452 / 452 conformance tests pass across pipe, subprocess, http, and unix transports. Optional features for HTTP, JWT, OAuth-PKCE, mTLS, OpenTelemetry, and Sentry.
Install
cargo add vgi
Java
Feature parityBuild VGI workers in Java 21+ with the farm.query:vgi package. Annotation-driven scalar/table/aggregate functions, catalogs with pushdown and statistics, stdio / Unix-socket / HTTP transports, and a shared-memory side-channel on JDK 22+. Wire-compatible with the Python reference and Go port — all three pass the same integration suite.
Install
# Gradle (Kotlin DSL), Java 21+:
implementation("farm.query:vgi:0.1.0")
VGI is a protocol — anyone can implement it
The wire format is Apache Arrow IPC over a pluggable transport. If your language has Arrow bindings (R, Julia, …) it can speak VGI. The full byte-level wire-protocol spec documents the exact format.
Working on a port? Get in touch — we're happy to help, and to list it here.
Need a custom worker built?
We build VGI workers and DuckDB extensions for clients across stacks — pick the language, we'll ship the worker.