sql-harness
A thin, single-process SQL CLI for LLM agents. Mirrors browser-harness's structure but targets relational databases (Postgres, MySQL, Redis-soon).
Connection file format, env vars, and driver list: see install.md.
Quickstart
# 1. Install deps (one-time)
uv sync
# 2. Scaffold a starter connections.toml
uv run sql-harness init
# 3. Add a connection
uv run sql-harness add local_pg --driver postgres --url 'postgresql://postgres:postgres@localhost:5432/postgres'
# 4. Test it
uv run sql-harness test local_pg
# 5. Use it
uv run sql-harness <<'PY'
use_workspace("local_pg")
print(query("SELECT version()"))
print(list_tables())
print(describe("pg_class"))
PY
Architecture (~1k lines across 8 core files)
install.md— first-time install + first connectionSKILL.md— day-to-day usagelab/sql_harness/src/sql_harness/— protected core package${XDG_CONFIG_HOME:-~/.config}/sql-harness/connections.toml— plaintext credentials in ONE place${XDG_CONFIG_HOME:-~/.config}/sql-harness/agent-workspace/agent_helpers.py— task-specific helpers${XDG_CONFIG_HOME:-~/.config}/sql-harness/agent-workspace/zones/<conn>/skills/— per-DSN skills (one zone per connection)${XDG_CONFIG_HOME:-~/.config}/sql-harness/agent-workspace/zones/meta/skills/— cross-DSN strategy skills (passive fallback forapply_skill)
Why mirror browser-harness?
- Same operational ergonomics for agents: heredoc CLI with auto-imported helpers.
- Same agent-workspace pattern (helpers + skills stay editable per-project).
- Same path/state layout (XDG-style state directory).
- Same doc layering:
SKILL.mdbody +interaction-skills/*.mdfor stuck points.
What this is NOT
- Not a database migration framework.
- Not an ORM.
- Not a connection-string parser (
pgcli/myclialready exist for interactive REPL use; this is for agents). - Not a long-running daemon. SQL connections don't need one.
Contributing
PRs and improvements welcome. See AGENTS.md for code priorities.
- Skills are written by the harness, not by you. When you figure out a non-obvious SQL flow (a weird schema, a slow query, a JSON column trick), file a skill in
agent-workspace/zones/<conn>/skills/<name>.mdfor that DSN, oragent-workspace/zones/meta/skills/<name>.mdif it generalizes. Future sessions will read it before re-discovering it. - Bug fixes, new drivers, helper additions all welcome.
License
MIT.
Metadata
Release files for sql-harness 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sql_harness-0.3.1.tar.gz | 132.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sql_harness-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 227.6 kB
Release files / sql_harness-0.3.1.tar.gz
| Download URL | sql_harness-0.3.1.tar.gz |
|---|---|
| Size | 132.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e3acd7cf721083ef514d7db3f71183237ba03f3627751456f4308bff68923269
|
|
BLAKE2b-256 checksum How to use checksums |
321628f8838a38ae12f6da7f0d843fd00e8c12208e16b59ab6392c0ad47075bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / sql_harness-0.3.1-py3-none-any.whl
| Download URL | sql_harness-0.3.1-py3-none-any.whl |
|---|---|
| Size | 95.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
509755fe0fb22882e07c87264d077adaae8e7f6e76670d4a510e25525be47001
|
|
BLAKE2b-256 checksum How to use checksums |
19b433221d49b5f3452fa924e3287eff67bf045520d66ed7066d2218790fbe41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|