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
- 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
- Covered
- Nov 2 edition
- Evidence
- 8 sources across 5 sites
- 1Release: datasette-llm 0.1a9 — Simon Willison's Weblogsimonwillison.net
- 2datasette-llm releases — GitHubgithub.com
- 3datasette-agent 0.1a0 — Simon Willison's Weblogsimonwillison.net
- 4datasette-agent 0.1a4 — Simon Willison's Weblogsimonwillison.net
- 5datasette-llm README — GitHubgithub.com
- 6Datasette Agentagent.datasette.io
Reach: not measured yet
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]
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
Datasette-llm first alpha
Version 0.1a0 started the plugin as a shared interface that lets Datasette plugins call models through the LLM library ().
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 ().Datasette Agent's silent alpha
Datasette-agent 0.1a0 shipped quietly as an LLM-powered agent for Datasette ().
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 ().
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-lunaas the built-in default, andllm models default <id>changes it (LLM setup docs). The release note's example of the old explicit setting usedgpt-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 globaldefault_modelindatasette.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_modelsandllm_default_modellet 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 globaldefault_modelindatasette.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_modelsandllm_default_modellet admins restrict or override models per user or per purpose.llm_prompt_contextwraps 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
uvxcommand give you a conversational analyst over your data. - Govern explicitly: In production, pin
default_model, use purposes andllm_filter_modelsto 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
uvxcommand give you a conversational analyst over your data. - Govern explicitly: In production, pin
default_model, use purposes andllm_filter_modelsto 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).