Read-only SQL CLI for agentic workflows
Project description
sql-agent-cli
sql-agent-cli is a read-only SQL CLI for agentic workflows.
It is designed to run safe, single-statement queries against configured database targets and return deterministic output that tools like Codex CLI and Claude Code can consume reliably.
V1 targets:
- MySQL
- MariaDB
- PostgreSQL
- SQLite
Status
This repo is currently under active development.
The current behavior target is defined in spec.md.
Install and run
Local development:
uv run ./sql_agent_cli.py --help
uv run ./sql_agent_cli.py "SELECT 1"
Packaged command target:
uvx sql-agent-cli --help
sql-agent-cli "SELECT 1"
Primary usage
Default target:
sql-agent-cli "SELECT id, name FROM users LIMIT 10"
Named target:
sql-agent-cli --target reporting "SELECT COUNT(*) AS total FROM users"
Explicit query flag:
sql-agent-cli --target reporting --query "SELECT NOW()"
SQL file:
sql-agent-cli --target reporting --sql-file query.sql
Stdin:
Get-Content query.sql | sql-agent-cli --target reporting
One-off SQLite query without config:
sql-agent-cli --engine sqlite --path C:\data\app.db "SELECT * FROM customers LIMIT 5"
Auth
sql-agent-cli is designed to prefer native client credential mechanisms over password arguments.
Supported v1 auth patterns:
- PostgreSQL:
PG*environment variables and.pgpass - MySQL/MariaDB: option files such as
~/.my.cnf - Generic fallback:
--password-stdin - Optional human fallback:
--prompt-password
sql-agent-cli does not document or guarantee MYSQL_PWD as a public credential source.
Bootstrap native auth files
Seed a PostgreSQL template:
sql-agent-cli config init-native-auth --engine postgres
sql-agent-cli config init-native-auth --engine postgres --target reporting
Seed a MySQL template:
sql-agent-cli config init-native-auth --engine mysql
sql-agent-cli config init-native-auth --engine mysql --target dev
When --target NAME is provided, the tool pre-fills non-secret fields such as host, port, database, and user where possible, while leaving the password blank.
Config
User config path:
~/.sql-agent-cli/config.toml
Example:
[defaults]
target = "dev"
format = "json"
max_rows = 200
connect_timeout_seconds = 8
query_timeout_seconds = 15
[targets.dev]
engine = "mysql"
host = "az-mysql-pub-sona-asia1-dev.mysql.database.azure.com"
port = 3306
database = "asiadev_2794"
user = "paul"
ssl_mode = "required"
[targets.reporting]
engine = "postgres"
host = "db.example.com"
port = 5432
database = "app"
user = "report_reader"
ssl_mode = "required"
[targets.local_sqlite]
engine = "sqlite"
path = "C:/data/app.db"
Config commands:
sql-agent-cli config show
sql-agent-cli config set-default-target NAME
sql-agent-cli config add-target NAME [options]
sql-agent-cli config remove-target NAME
sql-agent-cli config init-native-auth --engine postgres [--target NAME]
sql-agent-cli config init-native-auth --engine mysql [--target NAME]
sql-agent-cli targets
config show displays effective target settings and credential-source hints without revealing secrets.
Output
Supported formats:
jsonmarkdowntablecsv
Default format:
json
Stdout is reserved for payload output. Diagnostics and errors go to stderr.
Read-only guarantee
V1 is read-only by design.
Intended allowed statement classes include:
SELECTWITH ... SELECTSHOWDESCRIBE/DESCEXPLAIN
The tool rejects mutating or administrative statements before execution and executes exactly one statement per invocation.
SSL
Secure defaults are required by default for network databases.
Supported model:
--ssl-mode required--ssl-mode preferred--ssl-mode disabled--insecureas shorthand for--ssl-mode preferred
Development direction
Implementation choices currently targeted by the spec:
PyMySQL[rsa]for MySQL and MariaDBpsycopg[binary]for PostgreSQL- stdlib
sqlite3for SQLite sqlglotfor parser-backed SQL validation
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sql_agent_cli-0.9.1.tar.gz.
File metadata
- Download URL: sql_agent_cli-0.9.1.tar.gz
- Upload date:
- Size: 42.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
027694348ad345340526b51566f2a7bb76db454864556f299599680e3e1af4cb
|
|
| MD5 |
ff77c2a3ede02fc4ea68364ec95e2434
|
|
| BLAKE2b-256 |
87f9ebb20f9bbdea79cdb8f5eaa5b417e8538924714b8a910dd7e86e5d64572f
|
Provenance
The following attestation bundles were made for sql_agent_cli-0.9.1.tar.gz:
Publisher:
publish.yml on pseudosavant/sql-agent-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sql_agent_cli-0.9.1.tar.gz -
Subject digest:
027694348ad345340526b51566f2a7bb76db454864556f299599680e3e1af4cb - Sigstore transparency entry: 1088049558
- Sigstore integration time:
-
Permalink:
pseudosavant/sql-agent-cli@03d58959b426ea3b95064e407e7c12195830d9c4 -
Branch / Tag:
refs/tags/v0.9.1 - Owner: https://github.com/pseudosavant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03d58959b426ea3b95064e407e7c12195830d9c4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sql_agent_cli-0.9.1-py3-none-any.whl.
File metadata
- Download URL: sql_agent_cli-0.9.1-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b23daec97fd3a2402dbbe8aab075718863e187d7de8650e413a78edd4f2c02ba
|
|
| MD5 |
433ed6aa817141b19e0b5b0b8e5de930
|
|
| BLAKE2b-256 |
89cb360b38b4b1b3a896622117fe18433d1da1b08123a509ff0103e994bb32e0
|
Provenance
The following attestation bundles were made for sql_agent_cli-0.9.1-py3-none-any.whl:
Publisher:
publish.yml on pseudosavant/sql-agent-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sql_agent_cli-0.9.1-py3-none-any.whl -
Subject digest:
b23daec97fd3a2402dbbe8aab075718863e187d7de8650e413a78edd4f2c02ba - Sigstore transparency entry: 1088049633
- Sigstore integration time:
-
Permalink:
pseudosavant/sql-agent-cli@03d58959b426ea3b95064e407e7c12195830d9c4 -
Branch / Tag:
refs/tags/v0.9.1 - Owner: https://github.com/pseudosavant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@03d58959b426ea3b95064e407e7c12195830d9c4 -
Trigger Event:
push
-
Statement type: