Beta

One workspace for your database, your agents, and your team.

Download for macOS Book a demo
acme / Cancellation spike
why did cancellations spike this week?
Read schema · orders, subscriptions
SELECT day, count(*) FROM cancellations… 38 rows

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 Code
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

A file based database viewer. Agents work on your queries, sheets and visualizations.

Ask in plain language or open a table. Everything lands as a file in your workspace, and your agent works on the same files you do.

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 your own agent. Claude Code, Codex, Cursor, and more, running locally.

Valv Desktop detects the coding agents on your machine and drives them — Claude Code, Codex, Cursor, opencode, or Grok. No new subscription, no API keys. Your model, your billing.

AI provider

Claude Code Active
Codex Detected
Cursor Detected
opencode Detected
Grok Detected

Uses your subscription. No API keys.

Memory means explaining your data once. Every session after starts smarter.

The agent proposes facts as it learns, you approve them with a click. Memory lives as plain markdown in your workspace, yours to read and edit.

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 your workspace with your team. Synced through a git repo you own.

Publish a workspace to a repo on your own git host. Teammates connect with the URL and shared queries, dashboards, and memory sync from there on. A live dashboard on their machine, not a screenshot in Slack. Chats and credentials stay on yours.

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

Codemode does the heavy lifting. A million rows never touch the model.

The agent writes sandboxed code to join, aggregate, and export across your datasources, and the result lands as a file in your workspace. One run instead of twenty tool calls.

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 viewer underneath. Browse schemas, open tables, write SQL.

Tables open live with a click and stay in sync with the database. Filter, sort, write SQL. Dashboards are ephemeral: built in a minute, always live, gone when you no longer need them.

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

Fully local. You own your connection and your data.

Credentials live in your OS keychain and queries run straight from your machine. Workspaces are plain folders on disk. Hide PII fields and your coding agent never sees them.

production Keychain

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

AI access

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

Get the beta for free.