Powered by Claude · Self-hosted · Open source

Talk to your database.

Ask questions in plain English — or out loud. SayQuery writes the SQL, runs it read-only against your own database, and answers back with the data.

Read-only by design. Your data and keys never leave your server.
How it works

Say it. See it.

No SQL, no schema-hunting, no BI dashboards to configure. Just ask.

1

Ask in plain English

Type or speak your question. “Which invoices are overdue?” “Break down sales by region last month.”

2

Claude writes read-only SQL

It uses the schema notes you provide, generates a SELECT, and runs it — writes are refused in code.

3

Get the answer + the data

A plain-English summary, the result table, the exact SQL, and one-click export to Excel. Follow up to refine.

Features

Everything you need to just ask

A complete, self-hosted app — not a demo.

Conversational

Follow-ups keep context — “now only the unpaid ones, by region.” Every chat is saved to a per-user history sidebar.

Read-only & safe

Only SELECT/SHOW/DESCRIBE ever run; stacked statements are blocked. Pair with a read-only DB user for real least-privilege.

Teachable, instantly

Describe your schema and quirks in a plain-text file. It’s read on every question and takes effect immediately — no retraining.

Saved reports

Save any query as a named report and re-run it live anytime. Export any result straight to Excel.

Voice mode

Optional “Talk” button connects a voice agent to the same engine — ask out loud, see the table on screen.

Yours, self-hosted

Runs on any PHP + MySQL server. Your database, your API key, your rules. Pluggable auth or bring your own SSO.

Voice

Or just ask out loud.

Flip on voice and SayQuery answers by speech while showing the data on screen. It even understands “save this as a report.” Perfect for hands-free dispatch, ops floors, and driving.

  1. Create a free Vapi account
  2. Paste three values into config.php
  3. Click 🎙 Talk — live in about 5 minutes
Voice setup guide
“How many orders shipped late last week?”
“Forty-one orders shipped late last week — about 6% of the total. I’ve put the full list on your screen. Want me to break it down by carrier?”
Built to be trusted

Private by default

Read-only enforced

Non-SELECT queries are rejected in code — and again if you use a read-only DB user.

Self-hosted

Nothing runs on someone else’s servers. Deploy on your own box in minutes.

Your keys, your data

Your Anthropic key and DB credentials stay in a git-ignored config on your server.

Pricing

Start free. Upgrade when it earns its keep.

Self-host the open-source core for nothing. Go Pro when you want your own database, voice, and zero setup.

Free

$0
Self-hosted & open source. For tinkerers and internal tools.
  • Full text chat & SQL
  • Your server, your database
  • Bring your own Anthropic key
  • MIT licensed
Get it on GitHub
Most popular

Pro

$39/mo
Hosted for you. Connect your own database in minutes.
  • Everything in Free
  • Connect your own database
  • Claude tokens included — no API key needed
  • Voice mode built in
  • We host it & keep it updated
  • Priority support
Start Pro
Secure checkout · powered by Stripe

Voice Embed

Usage · per minute
Drop a voice button on any page — your customers talk to your data.
  • One-line embed script
  • Pure voice — no chat UI
  • Per-account key & metering
  • Billed by voice minutes
Talk to us
Get started

Up and running in minutes

PHP 8.1+, MySQL, an Anthropic API key. That’s it.

# clone, install, configure git clone https://github.com/gextam/sayquery.git cd sayquery && composer install mysql -u root -p your_db < schema.sql cp config.example.php config.php # add your DB + API key