About

A data API should be as careful as the DBA who wrote the grants.

QueryAPIGate began as SQL2API: a way to turn a SQL query into an endpoint without writing the same controller for the fortieth time. It grew into a governance layer because every team that exposed data also needed to say who could ask, what they could see, and prove it afterwards. Then AI agents arrived with the same questions.

Author and maintainerAnantha Raju C@AnanthaRajuC on GitHub ↗
Current release
{{ relText }}
Licence
Apache-2.0
Runtime
Python 3.11 to 3.14
Status
Beta, versioned schema, compatibility promise for stable features
{{ since }}first commit
{{ rel }}latest release
62how-to guides, each run against a real server
{{ stars }}stars on GitHub
Principles

How it is built

Read-only until told otherwise

Writes are opt-in per connection or key, narrowed to specific operations, and for agents gated by a person. The default is the safe one.

Stable means stable

Features under the compatibility promise do not break in a minor release. Experimental ones are labelled in the product and the changelog, and may change.

Tested against the real thing

CI runs against real PostgreSQL, MySQL, ClickHouse, S3 and Keycloak, upgrades from the previous release, and checks the oldest supported dependencies. Every system it connects to, and how each is tested, is on Integrations.

Decisions written down

Architecture decision records, a threat model, a prioritised backlog and 65 how-to guides live in the repository next to the code. The components are on Built with.

The road so far

From a query helper to a governed gate

  1. 0.1 · March 2024

    First commit, as SQL2API

    A SQL query becomes an endpoint, without writing the controller. Released under MIT up to 0.6.1.

  2. 0.7

    Source-available

    Releases from 0.7.0 move to FSL-1.1-MIT.

  3. 0.21 · October 2026

    Agents can write, a person approves

    MCP write tools queue in the Console for an administrator to approve or reject.

  4. 0.23 – 0.29 · October 2026

    Seen, fair and sealed

    Tracing, per-key limits and quotas, a tamper-evident audit log, a Helm chart, configuration as code.

  5. 0.30 – 0.34 · October 2026

    Ready to freeze

    Eight features graduate, releases are signed from 0.31, live events are stable from 0.34.

  6. 0.39 · October 2026

    Open source under Apache-2.0

    The code is unchanged; only the licence is.

Licence

The licence

Open source under Apache-2.0, since 0.39. The code is unchanged; only the licence is.

Use, modify and redistributeFor any purpose, commercial or not, including offering it as a service. A NOTICE file carries the copyright notice.
Signed releases, same codeThe relicensing changed the licence and its metadata only: the LICENSE and NOTICE files, the package's licence expression, the image label and the README.
Earlier versions0.7.0 through 0.38.0 were released under FSL-1.1-MIT, and versions up to 0.6.1 under MIT. A copy already obtained keeps the licence it came with.
Explore

Where to go next

Contribute

Issues, discussions and pull requests are on GitHub. The contributing guide covers the test suite, ruff, mypy and how integration tests against real databases are switched on.

{{ issues }} open issues{{ forks }} forks