Nov 2 edition/Reporting & analysis
AgentsCodingInfrastructure

AgentsAutonomy & tool use

datasette-llm 0.1a9 falls back to LLM's default model, so Datasette Agent runs without model configuration

The alpha release of datasette-llm, the shared layer Datasette plugins use to call language models, now falls back to the default model set in Willison's LLM tool, so Datasette Agent can launch with a single command and no model settings.

From the Simon Willison article of October 31, 2026 and cited sources: When a plugin asks for a model without naming one, datasette-llm now checks three places in order. [1] [2] [5]

SOURCES[1] Release: datasette-llm 0.1a9 — Simon Willison's Weblog simonwillison.net[2] datasette-llm releases — GitHub github.com[5] datasette-llm README — GitHub github.com

AI-assisted, not human-edited. Methodology Corrections Who owns this site

KEY FACTS
What happened
When a plugin asks for a model without naming one, datasette-llm now checks three places in order. [1] [2] [5]
Original source
Simon Willison article, independent perspective
Brief by
AT Pulse research desk AI-assisted; publisher and contact on the desk page
When
October 31, 2026 article published
Evidence
8 sources across 5 sites

Reach: not measured yet

THE CORE IDEAS3 TAKEAWAYS
01

When a plugin asks for a model without naming one, datasette-llm now checks three places in order. First it checks the purpose-specific setting. Next it checks the global default_model in datasette.yaml. Version 0.1a9 adds a third step: LLM's own configured default. Only if all three are empty does it raise an error. Before this, Datasette Agent needed the model passed as a launch flag. [1] [2] [5]

02

datasette-llm is the common way Datasette plugins reach LLMs, so this change cuts setup for every plugin built on it, not just the agent. Those plugins also get per-purpose model routing, layered API-key lookup and admin hooks for filtering or overriding models. [1] [5]

03

With the fallback, which model a server uses can depend on how LLM is configured on that machine. Repeatable or governed deployments should set default_model explicitly and use llm_filter_models to restrict which models are allowed. [5] [7]

WHY IT MATTERS

the release notes and README document the fallback and the one-command launch. Implication: SQLite pilots get simpler for existing LLM users. Production teams should pin a model so data doesn't silently go to whatever provider the host defaults to.

Executive brief

As of version 0.1a9, datasette-llm uses the default model you have already set in the LLM command-line tool, so Datasette Agent now runs with no model settings at all. Before this, users had to name one in the launch command (-s plugins.datasette-agent.default_model …). Now uvx --with datasette-agent datasette content.db --internal internal.db is enough, according to the author's release note. The release itself is small. It matters because datasette-llm is the shared layer that other Datasette plugins rely on to call LLMs, so the change cuts setup steps for all of them. The author says bigger Datasette Agent upgrades are coming.

What changed and event timeline

  1. Datasette-llm first alpha

    Version 0.1a0 started the plugin as a shared interface that lets Datasette plugins call models through the LLM library ().

  2. To 04-01: "Purposes" and per-purpose keys

    Alphas 0.1a1 to 0.1a6 added the register_llm_purposes() hook, separate model defaults and API keys for each purpose, and prompt tracking inside tool-call loops ().

  3. Datasette Agent's silent alpha

    Datasette-agent 0.1a0 shipped quietly as an LLM-powered agent for Datasette ().

  4. Agent added to Datasette's Jump menu

    Datasette-agent 0.1a4 added a "Start a new agent chat" entry point to Datasette's Jump menu, with a demo at agent.datasette.io ().

  5. Datasette-llm 0.1a9

    If nothing else sets a default, the plugin now uses LLM's own default model (;).

Capabilities and access

  • Version: datasette-llm 0.1a9, an alpha. It is used together with datasette-agent (GitHub).
  • What the agent does: It answers questions by writing and running SQL against SQLite and looks through tables for patterns.
  • Model: Whatever LLM's default is. The release note's example of the old explicit setting used gpt-6-astra.
Read the full section
  • Version: datasette-llm 0.1a9, an alpha. It is used together with datasette-agent (GitHub).
  • What the agent does: It answers questions by writing and running SQL against SQLite and looks through tables for patterns. Plugins such as datasette-agent-charts extend it (agent.datasette.io).
  • Model: Whatever LLM's default is. The current LLM docs name gpt-5.6-luna as the built-in default, and llm models default <id> changes it (LLM setup docs). The release note's example of the old explicit setting used gpt-6-astra.

Technical analysis for researchers and developers

  • How a model gets picked: When await llm.model() is called with no arguments, the plugin checks in this order: the purpose-specific setting, then the global default_model in datasette.yaml, then LLM's own default, and raises an error if none is found.
  • Where API keys come from: datasette-secrets first, then LLM's keys.json, then LLM's environment variables (README).
  • Hooks for admins: llm_filter_models and llm_default_model let admins restrict or override models per user or per purpose.
Read the full section
  • How a model gets picked: When await llm.model() is called with no arguments, the plugin checks in this order: the purpose-specific setting, then the global default_model in datasette.yaml, then LLM's own default, and raises an error if none is found. Version 0.1a9 added the LLM step (README).
  • Where API keys come from: datasette-secrets first, then LLM's keys.json, then LLM's environment variables (README).
  • Hooks for admins: llm_filter_models and llm_default_model let admins restrict or override models per user or per purpose. llm_prompt_context wraps prompts for logging or budgets (README).
  • Side effect: Which model a server uses can now depend on that machine's LLM settings. For repeatable deployments, set the model explicitly.

Claims and evidence

  • The default-model fallback: The release note and the GitHub release notes agree. No independent coverage of 0.1a9 turned up.
  • Production gaps: A third-party blog says Datasette Agent truncates results over about 500 rows without warning, has no per-user isolation, and is read-only. Treat them as anecdotal.
Read the full section
  • The default-model fallback: The release note and the GitHub release notes agree. Both come from the maintainer. No independent coverage of 0.1a9 turned up.
  • Production gaps: A third-party blog says Datasette Agent truncates results over about 500 rows without warning, has no per-user isolation, and is read-only. It also cites a cost of about $0.003 per query (devaitools). These claims are unreproduced, and the cost figure is tied to an older model. Treat them as anecdotal.

Context and prior work

  • LLM is Willison's command-line tool and Python library.
  • datasette-llm puts model access in one place so each plugin doesn't build its own.
  • One third-party article dates Datasette Agent's release to 21 May 2026 (devaitools).
Read the full section
  • LLM is Willison's command-line tool and Python library. It reaches many providers through plugins, and its default model is set from the command line (LLM docs).
  • datasette-llm puts model access in one place so each plugin doesn't build its own. "Purposes" let an admin send, for example, an "enrichments" task and a "sql-assistant" task to different models (README).
  • One third-party article dates Datasette Agent's release to 21 May 2026 (devaitools). The author's own posts show alphas on 12 and 24 May (May 12, May 24).

Limitations, safety and contested findings

  • Both plugins are alpha releases, so their APIs and behaviour may change (GitHub releases).
  • The official pages reviewed don't document safety measures for agent-written SQL, such as sandboxing or defences against prompt injection (agent.datasette.io).
  • The read-only behaviour, the truncation and the multi-tenancy gaps come only from the unverified devaitools post.
Read the full section
  • Both plugins are alpha releases, so their APIs and behaviour may change (GitHub releases).
  • The official pages reviewed don't document safety measures for agent-written SQL, such as sandboxing or defences against prompt injection (agent.datasette.io).
  • The read-only behaviour, the truncation and the multi-tenancy gaps come only from the unverified devaitools post.
  • An implicit default can quietly send data to whichever provider the host's LLM install points at. That matters for data-governance reviews.

Business and practitioner implications

  • Pilots get easier: If LLM is already set up, a SQLite file and one uvx command give you a conversational analyst over your data.
  • Govern explicitly: In production, pin default_model, use purposes and llm_filter_models to control which models are allowed and what they cost, and manage keys through datasette-secrets (README).
  • Plugin authors: Building on datasette-llm gets you model choice, key handling and admin controls without writing them yourself.
Read the full section
  • Pilots get easier: If LLM is already set up, a SQLite file and one uvx command give you a conversational analyst over your data.
  • Govern explicitly: In production, pin default_model, use purposes and llm_filter_models to control which models are allowed and what they cost, and manage keys through datasette-secrets (README).
  • Plugin authors: Building on datasette-llm gets you model choice, key handling and admin controls without writing them yourself.
  • Watch: The author says larger Datasette Agent upgrades are "in the pipeline" (release note).
FOLLOW THE EVIDENCE

The source trail.

Sources (8)
A LITTLE LESS NOISE. A LOT MORE CONTEXT.

Stay curious.
Follow the evidence.

Independent perspectives, the original sources, and room for the questions that don't have easy answers.

How we build the brief
Connect with us

Find us where you already read.