Dust now ships a thin Python wrapper over the CLI.
The goal is to expose Dust to Python users without inventing a second protocol surface. The client shells out to the dust binary, uses --format json where appropriate, and keeps the source of truth in the CLI itself.
See sdk/python.
from dust_client import DustClient
client = DustClient(root=".")
rows = client.query("SELECT 1 AS ok")
print(rows)query()for row-returning SQL with JSON decodingexec()for DDL and DMLstatus()for raw project status output- branch helpers such as
branch_create()andbranch_switch()
- A long-lived RPC daemon
- Automatic server lifecycle management
- BI-driver abstractions
- A promise that the Python layer outruns the CLI surface
The sequence matters:
- Keep the CLI JSON output stable enough for thin wrappers.
- Use the Python client as the first proof that Dust can be embedded cleanly outside Rust and TypeScript.
- Add higher-level connector or BI affordances only after the compatibility and packaging policy is written down.
That keeps connector work downstream of stable contracts instead of creating a second unstable surface area too early.