Commercial seats at beta pricing See pricing →

The database client built for agent queries.

A data workspace purpose-built for agents. File-based, with policies that keep every query safe.

Download for macOS See pricing
acme / Cancellation spike
why did cancellations spike this week?
Search resources orders, subscriptions
Query SELECT day, count(*) FROM cancellations…

The spike is the legacy Starter plan. 31 of 38 cancellations hit the new 5 seat cap this week. Dashboard for the last 7 days:

Claude Sonnet 4.5
dashboard Live

This week

38 +245%

Last week

11

Cancellations by day

Mon
Tue
Wed
Thu
Fri
Sat
Sun
daycancellations
Mon2
Tue2
Wed3
Thu2
Fri2
Sat10
Sun17

Works with

PostgreSQL MySQL SQLite ClickHouse MCP

Ask in plain language. The agent writes the SQL, runs it, and cites every query behind the answer.

which plan churns the most?
SELECT plan, count(*) FROM cancellations… 3 rows

Starter, by a wide margin:

Starter
62
Pro
19
Business
7
churn.html

Bring the agent you already run. Claude Code, Codex, Cursor, opencode, or Grok, on your own subscription.

AI provider

Claude Code Active
Codex Detected
Cursor Detected
opencode Detected
Grok Detected

Uses your subscription. No API keys.

Teach it your schema once. It remembers your tables, joins, and what each KPI means to you.

Save to memory?

mrr counts active subscriptions only, trials excluded Save
orders joins customers on customer_id, not email Saved
Memory updated context-billing.md

Share the work with your team. Queries, dashboards, and memory sync through a git repo you own.

Updated churn.sql you · 1h ago Added revenue.html anna · just now Pulled team changes revenue.html · synced

When SQL runs out, it writes code. Sandboxed runs join and export millions of rows without sending them to the model.

Run code Cancel
const orders = await query("shop", ordersSql);
const subs = await query("billing", subsSql);
const ltv = joinOnCustomer(orders, subs);
await writeFile("ltv.csv", toCsv(ltv));
ltv.csv 48,102 rows · 1 run

A real database client underneath. Browse schemas, open live tables, and write SQL yourself.

mrr.sql Run ⌘⏎
SELECT plan, sum(amount) AS mrr
FROM subscriptions
WHERE status = 'active'
GROUP BY plan
ORDER BY mrr DESC;
planmrr
Enterprise$31,300
Pro$12,400
Business$4,700

3 rows · 0.4s

The agent queries on your terms. Credentials stay in your keychain, and hidden columns never reach the agent.

production Keychain

postgres://•••••••@db.internal:5432/prod

AI access

orders Full access
subscriptions Full access
customers.email Hidden
payments.card_number Hidden

Free for personal use.

Every feature included, no license needed. Using Valv at work needs a seat, still at beta pricing.