← Back to blog
Tanguy 4 min read 27 views

D1 Launched Without a Client. We Built One.

D1 Launched Without a Client. We Built One.

Cloudflare D1 is SQLite at the edge, globally replicated, with a free tier that makes most hosted databases look expensive. It shipped without a single desktop client. That’s not a complaint — it’s the opening of a story.

The Launch

When Cloudflare D1 went generally available, the developer reaction was immediate. An SQLite database that runs on Cloudflare’s edge network. Reads served from 330+ locations worldwide. Workers-native — your compute and your data in the same data center. Five gigabytes and five million reads per day on the free tier.

The excitement was real. This was a genuinely new category: an edge-native relational database, not a centralized server you query across the wire, but a database that moves with your traffic.

Then you opened the docs to see how to interact with it.

wrangler d1 execute my-database --command "SELECT * FROM users LIMIT 10"

That was it. A CLI command. JSON piped to stdout.

Why No Desktop Client Existed

This isn’t a criticism of Cloudflare. Building a breakthrough database and building the tooling ecosystem around it are two different problems. Cloudflare solved the hard one first.

But the reason no third-party client existed either is structural. Cloudflare D1 is accessible only through its REST API — there is no TCP port, no wire protocol, no socket to connect to. Every database client that predates D1 — TablePlus, DBeaver, DataGrip, Sequel Pro, pgAdmin, all of them — was built for the world of direct connections. You give it a host, a port, a username, a password. It opens a socket. Done.

That model is fundamentally incompatible with D1. There’s no port to give it. The database lives behind an HTTP endpoint, authenticated with an API token, accessed through Cloudflare’s global network. Every existing client looked at D1 and had no idea what to do with it.

!

This isn’t a missing feature in TablePlus or DBeaver. D1 uses an entirely different connection paradigm. Adding D1 support to an existing client isn’t a plugin — it’s a rewrite of the connection layer.

The Cloudflare Dashboard Isn’t a Client

The Cloudflare dashboard has a D1 section. You can run queries in a basic editor and see a list of your tables. For proving a concept or running a one-off migration, it works.

But it’s not a database client. There’s no sortable data grid. No inline cell editing. No query history. No schema visualization beyond a flat list. No export. No import. No way to compare two tables side by side. Every action requires navigating a web interface built for managing an entire cloud platform, not for doing deep work on a single database.

For developers who spend real time in their data — debugging, exploring, auditing, building features — the dashboard is a speed bump, not a workspace.

What a Real D1 Client Needs

The requirements aren’t exotic. Any developer who’s spent time with TablePlus or Sequel Pro knows exactly what they’re missing:

  • A table browser that shows rows in a sortable, filterable grid — not JSON in a terminal
  • Inline editing — click a cell, change the value, press enter
  • A real query editor with syntax highlighting, autocomplete against your schema, and history
  • Schema inspection — columns, types, indexes, foreign keys, all at a glance
  • Import and export — CSV in, JSON out, migrations applied
  • An AI agent that reads your schema and writes SQL from plain English — because it’s 2026

None of this is new. MySQL developers have had this since the early 2000s. Cloudflare D1 is one of the most forward-thinking databases available, and its management experience was stuck twenty years behind.

The Gap Was the Brief

The absence of a good D1 client wasn’t a niche complaint — it was a first-mover opportunity. Building a native macOS client with a proper REST adapter for D1 meant building the only tool of its kind. No competition, no feature parity to chase, no positioning against TablePlus. Just an obvious gap and the decision to close it.

That’s what MyD1 is. A native macOS application, pure SwiftUI, 50MB, with a REST adapter purpose-built for the D1 API. It does for Cloudflare D1 what TablePlus does for MySQL and PostgreSQL — gives you a real workspace instead of a terminal window.

What MyD1 Delivers for D1

Connect in three fields: Account ID, API token, done. Then:

  • Every database in your Cloudflare account appears in the sidebar instantly
  • Tables open as sortable, filterable grids — no JSON, no scrolling
  • The query editor knows your schema: column names autocomplete, types are visible, errors are caught before you run
  • The AI Agent turns plain English into runnable SQL against your actual schema — “show me users who signed up in the last 7 days but never made a purchase” just works
  • Query history persists across sessions — every query you’ve run is searchable
  • Inline editing, CSV export, schema inspection — all of it, in a 50MB app that launches in under a second

And because Cloudflare D1 is SQLite, MyD1 also opens local SQLite files. The same interface, the same AI Agent, for your local .db file or your edge-deployed D1 database. One tool for both.

The Bigger Picture

D1 launching without a client wasn’t a problem to complain about — it was a signal. Every great database platform eventually gets great tooling. MySQL took years. PostgreSQL took longer. D1 is newer and moving faster.

MyD1 is that tooling, available now. Download it and connect to your first D1 database in 30 seconds.

Related: The Best Databases of 2026 Have the Worst Tooling · I Spent 20 Years on PHP/MySQL. Then My Stack Broke. · Managing Cloudflare D1 Without the Terminal · Why Cloudflare D1 Needs a Real Desktop Client