What Happened

Simon Willison released datasette-ports 0.1, a small utility plugin for Datasette that solves a very real local development problem: losing track of which Datasette instances are running on which ports. If you regularly spin up multiple Datasette instances — each pointing at different databases or testing different plugins — your terminal windows multiply fast and it becomes genuinely hard to remember what's where.

The fix is two commands:

datasette install datasette-ports datasette ports

Running datasette ports scans your local machine and returns a clean list of every active Datasette instance, including the URL, version number, loaded databases, and active plugins. No more hunting through terminal tabs or trying to remember whether your LLM enrichment test was on port 8001 or 8333. The plugin is described as "README-driven development" — Willison wrote the docs first, then built it. It's a tiny tool, but it's a good example of scratching your own itch and shipping immediately.

The Solo Builder Playbook

Who This Is For

If you use Datasette to explore data, build internal tools, or prototype AI-powered data pipelines, this plugin saves real friction. Datasette is free and open source. The datasette-ports plugin is also free.

Setting Up a Multi-Instance Datasette Workflow

Here's a practical local development setup for a one-person data or AI project:

  • Install Datasette (if not already): pip install datasette. Free.
  • Install the ports plugin: datasette install datasette-ports. Takes under 30 seconds.
  • Spin up instances for different projects: Run datasette mydata.db -p 8001 in one terminal, datasette logs.db -p 8002 in another, and so on.
  • Check what's running anytime: datasette ports gives you the full picture instantly.

Pairing With AI Plugins

Datasette has a growing ecosystem of LLM plugins worth knowing:

  • datasette-llm — run LLM queries against your database rows directly
  • datasette-enrichments-llm — batch-enrich rows using an LLM (OpenAI, Claude via API key)
  • datasette-extract — extract structured data from unstructured text into tables

A practical workflow: keep one Datasette instance running your production-like data on port 8001, and a second on port 8900 for experimental enrichment with datasette-enrichments-llm. When you forget which is which after a coffee break, datasette ports tells you immediately — including which plugins are loaded on each.

Time and Cost Estimate

  • Setup: 5 minutes total
  • Daily usage: 10 seconds per check
  • Cost: $0 (plugin is free; LLM plugins require your own API keys — OpenAI or Anthropic, pay-per-use)

Alternative

If you're not using Datasette, you could track running local servers with lsof -i :8000-9000 in the terminal, but you get no metadata about what's actually running. datasette ports is strictly better for Datasette-specific workflows.

Why This Changes the Game for Indie Builders

Solo builders running AI-augmented data workflows often end up with a sprawl of local services. Unlike a funded team with shared infrastructure and dashboards, you're managing everything yourself across terminal windows, notebooks, and browser tabs.

Small friction compounds. Spending 90 seconds hunting for the right local URL five times a day is 7+ minutes gone — and more importantly, it breaks your flow. Tools that eliminate micro-friction have an outsized impact on solo productivity.

More broadly, the datasette-ports release is a reminder of a useful development philosophy: README-driven development. Write what the tool should do first, then build it. This approach forces clarity before you write a line of code and makes it easier to ship something small and complete rather than over-engineering. For solopreneurs, shipping a focused v0.1 that solves one problem cleanly beats a sprawling v1.0 that ships six months later.

Datasette itself is underused by indie builders. It turns any SQLite database into a browsable, queryable web app in seconds — useful for personal CRMs, content pipelines, log analysis, or sharing data with clients without building a custom UI. Adding LLM enrichment plugins means you can build lightweight AI data tools without a backend framework.

Your Move This Week

If you have any local data project — even a single SQLite file — install Datasette and datasette-ports this week. Run datasette install datasette-ports && datasette install datasette-llm, point it at a database you already have (datasette yourfile.db), and spend 20 minutes exploring what queries you can run. Then add a second instance on a different port and confirm datasette ports shows both. Expected outcome: a reusable local data exploration setup you can extend with AI enrichment plugins for any future project, with zero ongoing cost.