Connect DuckDB to Remote Data with Arrow Flight
DuckDB, Arrow Flight, remote data, data access, SQL extension, Apache Arrow, gRPC, Data-as-a-Service, DaaS, remote queries

Connect DuckDB to Any Remote Data Source
Airport is a powerful DuckDB extension that brings Arrow Flight protocol support to DuckDB. Developed by Query.Farm, Airport transforms DuckDB into a client that can query, modify, and store data on remote Arrow Flight servers—opening up entirely new possibilities for data access and integration.
What Does Airport Enable?
Airport bridges the gap between DuckDB’s powerful local analytics and the world of remote data. With Airport, you can:
- Access Remote Data Sources: Query data stored on Arrow Flight servers as if they were local DuckDB tables
- Connect to External APIs: Transform any API into a SQL-queryable data source through custom Flight servers
- Add Custom SQL Functions: Extend DuckDB with server-provided scalar and table-valued functions
- Implement Data-as-a-Service: Build secure, multi-tenant data platforms with row and column-level access control
- Query Non-Standard Formats: Access data in formats DuckDB doesn’t natively support through Flight server adapters
Learn about the motivation behind Airport and how it enables new data-as-a-service architectures that weren’t possible before.
Quick Start: Install and Try Airport
Airport is an official DuckDB community extension, making installation effortless. Get started in seconds:
-- Install Airport from the DuckDB community repository
INSTALL airport FROM community;
-- Load the extension
LOAD airport;That’s it! Airport is now ready to use. Let’s see it in action with a live demo server.
Interactive Demo: Query Remote Data
Try this complete example using our live demo server. Copy and paste this into your DuckDB session:
-- Connect to a remote Arrow Flight server
ATTACH 'hello' (TYPE AIRPORT, location 'grpc+tls://hello-airport.query.farm');
-- Switch to the static schema
USE hello.static;
-- Query remote tables with standard SQL - notice the join across two remote tables!
SELECT greeting || ', ' || first_name || ' welcome to Airport.' AS greeting
FROM greetings
JOIN people ON people.language = greetings.language
LIMIT 3;Output:
┌──────────────────────────────────────────┐
│ greeting │
├──────────────────────────────────────────┤
│ Hello, James welcome to Airport. │
│ Hola, Carlos welcome to Airport. │
│ Bonjour, Émile welcome to Airport. │
└──────────────────────────────────────────┘
Try Something More Interactive
Our demo server also includes a live chat system demonstrating INSERT, UPDATE, and DELETE operations on remote tables:
-- Switch to the chat schema
USE hello.chat;
-- Get your auto-generated identity
SELECT * FROM identity;
-- Output: 'zesty-chick' (your identity will be different!)
-- Post a message to the 'airport' channel
INSERT INTO messages (channel, message)
VALUES ('airport', 'Hello from Airport!');
-- See all recent messages (including yours!)
SELECT sender, message, timestamp
FROM messages
WHERE channel = 'airport'
ORDER BY timestamp DESC
LIMIT 10;All of these operations happen on a remote server—Airport makes it feel local.
Advanced users can compile Airport from source. See the build instructions for details.
Powerful Capabilities Beyond Standard DuckDB
Airport unlocks capabilities that standard DuckDB simply can’t provide:
Remote Data Access
Query data sources that DuckDB can’t normally reach—proprietary databases, cloud services, real-time APIs, or custom data formats. If you can build a Flight server for it, Airport can query it.
Custom SQL Functions
Extend DuckDB with custom scalar functions and table-valued functions that execute on remote servers. Add domain-specific operations, machine learning models, or specialized transformations without modifying DuckDB itself.
Secure Multi-Tenant Data Serving
Build data platforms with enterprise-grade security: row-level and column-level filtering, user authentication, and fine-grained access control—all enforced server-side.
Data-as-a-Service (DaaS)
Transform your data into a queryable service. Airport enables complete Data-as-a-Service architectures where data providers expose curated datasets and consumers query them through the familiar SQL interface.
API Integration
Turn any REST API, GraphQL endpoint, or web service into a SQL-queryable data source by implementing an Arrow Flight server adapter. Your users query with SQL; your server translates to API calls.
See the complete list of Airport features or dive into the Extension API documentation to understand everything Airport can do.
Understanding Arrow Flight

Arrow Flight is a high-performance RPC framework designed specifically for data transfer. Built on Apache Arrow, gRPC, and Protocol Buffers, it’s optimized for streaming large datasets efficiently.
Think of Arrow Flight as a protocol that lets databases and applications talk to each other about data. Instead of downloading an entire file or making multiple API requests, Flight streams data in efficient columnar batches—the same format DuckDB uses internally.
What is a “Flight”?
In Arrow Flight terminology, a flight is a data stream with a defined schema, similar to: - A database table stored on a remote server - A collection of files that share the same structure - A view over data that can be queried
Arrow Flight servers typically expose multiple flights, each representing different data sources or views. Airport makes these flights accessible through standard SQL.
How Airport Integrates with DuckDB
Airport is a native C++ extension for DuckDB 1.3.0+ that seamlessly integrates the Apache Arrow Flight client library. When you query a remote table through Airport, DuckDB handles the SQL optimization while Airport manages the network communication and data streaming.
The result? Remote data that feels local, with all the power of DuckDB’s query engine.
Build Your Own Arrow Flight Server
Want to expose your data through Airport? Building an Arrow Flight server is straightforward:
- Quick Start: Arrow Flight Server Basics - Learn the fundamentals
- Catalog Integration: Connect with DuckDB’s Catalog - Make your data discoverable
- Advanced Features: Authentication, Row/Column Filtering, Predicate Pushdown
- Complete Reference: All RPC Actions - Comprehensive implementation guide
Start with the server basics guide to build your first Flight server in under an hour.
Watch Airport in Action
See Rusty Conover’s presentation from DuckCon #6: “Airport For DuckDB: Letting DuckDB take flight.”
This talk covers Airport’s architecture, real-world use cases, and live demonstrations of remote data queries.
Learn More
Ready to dive deeper? Here are your next steps:
- Features Overview - Complete list of Airport capabilities
- Extension API - Detailed API reference and SQL syntax
- Catalog Integration - How Airport integrates with DuckDB’s catalog
- Server Development - Build your own Arrow Flight servers
- Benchmarks - Performance comparisons and optimization tips
- FAQ - Frequently asked questions
Stay Updated with Airport Development
Get notified about new features, data source integrations, tutorials, and best practices. Join developers and data engineers using Airport in production.
We only send emails when there’s something valuable to share.