Skip to content
VGI — Vector Gateway Interface
Built by your coding agent

Connect anything
to your database.

Bring APIs, data services, local files, and your own code into DuckDB. Your coding agent can build and test the integration—with the VGI skill, in the language you choose.

How VGI works

From an API to a SQL catalog with tables.

You ATTACH a VGI worker as a database in your DuckDB session. Its catalog exposes schemas, tables, and functions backed by your APIs, files, or code.

Your coding agent builds the worker
CodexClaude CodeCursorCopilotOpenCode
Builds + tests
DuckDB sessionVGI extension

Databases

memorylocal
githubattached
mainschema
releases(…)
table function → rows
Your worker’s catalog appears here.
VGI worker Your VGI worker

Your data & code

  • GitHubExample shown
  • APIsYour external endpoints
  • Data servicesSupport, analytics, finance
  • Local filesPhotos, documents, logs
  • Your librariesThe code you already use
Attach a databaseATTACH 'github' AS github
(TYPE vgi, LOCATION '<worker command>');
Query its catalogSELECT * FROM github.main.releases('duckdb', 'duckdb');

GitHub is the example here. Your agent supplies the catalog and worker command for your integration.

Describe the connection you need.

Your coding agent uses the VGI skill to write a worker and test it with real SQL. You choose the language; you keep the code.

Bring a database into your session.

ATTACH connects to the worker and registers its catalog—named github in this example. DuckDB can discover its schemas, tables, and functions alongside your other databases.

Query the catalog you just attached.

GitHub releases live behind an API, but now github.main.releases(...) is a table function in your attached catalog. Your SQL calls the worker through VGI.

Your worker connects to what you need.

This example calls GitHub. Your worker can connect to other APIs and data services, read local files, or use your own libraries. The coding agent’s job is already done.

Now the data is part of your query.

The worker returns typed rows in Arrow batches through VGI. Therefore DuckDB can filter, aggregate, and join those rows with your local project inventory.

Give your database a new ability. An extension adds capabilities to DuckDB. VGI lets it call a separate program—a worker—that fetches data or runs your code. Your coding agent can build that program, so your next query can reach an API, a service, or data on your computer.

What would you ask your agent to build?

Start with one of these ideas, or bring your own. Your agent will ask which language you want to use.

Your starting point

Tell your agent what you want to connect.

The VGI skill starts your agent with a tested starter kit in your chosen language. It builds your connection and tests it in DuckDB. You bring the idea.

Give your agent the VGI skill

Your coding agent
Run in your project’s terminal
npx skills add Query-farm/vgi-skills --skill vgi-worker --agent codex

Install once per project. After installation, open your agent in that project and use a request below.

Installation help & compatibility

The installer uses Node.js. The skill’s SQL verifier uses uv and stock DuckDB. Your worker also needs the runtime for the language you choose.

For a manual install, copy the complete vgi-worker skill folder into .agents/skills/. Installation guide →

If a running agent doesn’t find the new skill, restart or reload it. Cloud agents need the skill and tools installed in their own environment.

Live builds have been tested with Codex and Claude Code. Cursor, Copilot, and OpenCode have installation checks. Compatibility details →

Ask for the connection you need

Copy a request into your agent and make it your own. Name your language, or let the agent ask before it writes code.

  • C#
  • Go
  • Java
  • Python
  • Rust
  • TypeScript

An API or data service

GitHub releases, support tickets, CRM records…

Use the vgi-worker skill to connect an API or data service to DuckDB as a SQL catalog, so I can join its records to a local CSV. Ask me which source and language to use, then build and test the worker and show me how to ATTACH and query it.

Data on your computer

Photo metadata you can filter and group.

Use the vgi-worker skill to make my photo metadata queryable in DuckDB: file paths, camera models, dates, and GPS coordinates where available. Ask me which folder and language to use. Keep the files unchanged and the data local. Build and test the worker, then show me how to ATTACH and query it.

Follow a worked example →

Code you already use

Your application’s rules, available in SQL.

Use the vgi-worker skill to wrap our validation library so I can find invalid records in DuckDB. Ask me which library and language to use, and for examples of valid and invalid inputs. Build and test the worker, then show me how to ATTACH it and query a local CSV.

Describe your own integration

Tell your agent what you want to bring into SQL and what a useful result would look like. Start a conversation with this request:

Use the vgi-worker skill to build a DuckDB integration. Ask me what I want to connect, which language to use, and what results I need. Build and test the worker, then show me how to ATTACH and query it.

Ask your agent to leave you with

  • Worker source
  • Passing SQL tests
  • ATTACH + a query to run

Start with the connection your project needs.

A support system you want to join to customer data. Metadata hidden in local files. A calculation your application already owns. Describe the source, the rows or functions you want in SQL, and the results that would prove it works.

Your agent builds a VGI worker in the language you choose. VGI—the Vector Gateway Interface—is the installed DuckDB extension that connects to it. DuckDB calls the finished worker without a coding agent in the query’s runtime path.

But each integration brings its own edge cases. The skill guides the agent through SDK setup and SQL verification. Your tests should cover empty results, multiple batches, and the source’s error behavior. Explore worker functions, tables, and catalogs →