FederIQ
Federated SQL over any source, in a single Rust binary.
FederIQ is an open-source federated query engine built on top of DuckDB. One command attaches a Postgres database, a Parquet directory on S3, a CSV on disk, and an HTTP JSON API — and lets you join them in plain SQL.
SELECT u.name, SUM(o.total) AS revenue
FROM postgres_users.public.users u
JOIN events.orders o ON o.user_id = u.id
GROUP BY u.name
ORDER BY revenue DESC;
Why not Trino?
Trino is the incumbent. It's also ~4 GB of JVM, a cluster to deploy, and a DBA to operate. FederIQ is a single ~20 MB binary:
| Trino | FederIQ | |
|---|---|---|
| Deploy unit | JVM cluster | Static binary |
| Minimum memory | ~4 GB | ~100 MB |
| First query latency | ~30s (cluster warm) | ~200 ms (cold) |
| Embed in Python/Node | No | Yes (pip/npm) |
| Policy engine | Add-on (Ranger) | Built-in |
| License | Apache 2.0 | Apache 2.0 |
Why not DuckDB alone?
DuckDB is incredible but single-node and single-process. FederIQ adds:
- Catalog-driven federation — declare sources in YAML, query from any client.
- Policy engine — column masking, row filters, region pinning enforced at query-rewrite time.
- HTTP service mode —
federiq servewith bearer auth + TLS + Prometheus metrics. - Cache layer — memory, disk, and Redis backends with hooks for a predictive prefetcher.
- First-party Python and TypeScript clients.
License
Apache 2.0. The core will always be Apache 2.0 — hosted and enterprise features may be licensed separately in the future.