Skip to content

ironflow sql

Execute a read-only SQL query against the Ironflow database.

Terminal window
ironflow sql <query> [flags]

Queries are automatically scoped to the current environment. Only SELECT statements are allowed. Mutation keywords (INSERT, UPDATE, DELETE, DROP, etc.) are rejected.

Arguments:

ArgumentRequiredDescription
queryYesSQL SELECT query to execute

Flags:

FlagShortTypeDefaultDescription
--formatstringtableOutput format: table, json, csv, jsonl
--timeoutint5000Query timeout in milliseconds
--max-rowsint1000Maximum rows to return
--server-sstringServer URL override

Available tables: events, runs, steps, functions, projection_registry, projection_state

Environment scoping: Queries are automatically filtered to the current environment via temporary views. The environment is determined by the IRONFLOW_ENV env var, or defaults to default.

Examples:

Terminal window
# Count events by name
ironflow sql "SELECT name, COUNT(*) AS total FROM events GROUP BY name"
# Find failed runs
ironflow sql "SELECT id, status FROM runs WHERE status = 'failed' LIMIT 10"
# Export events as JSON
ironflow sql "SELECT * FROM events WHERE entity_id = 'order-123'" --format json
# CSV output for spreadsheets
ironflow sql "SELECT id, name FROM functions" --format csv
# JSONL for streaming processing
ironflow sql "SELECT * FROM events" --format jsonl | jq '.name'

Output (table):

id name entity_id
evt_001 order.placed order-123
evt_002 order.paid order-123