ZeroHour

Source: Simon Willison

15 stories in the last 30d

So you want to use OpenRouter?

Simon Willison highlights OpenRouter pitfalls: provider routing makes the same model endpoint behave inconsistently across backends.

Simon Willison discusses problems, raised by Mohamed Moustafa, with relying on OpenRouter's single API endpoint that automatically routes to the most cost-effective provider. Different backend providers run different serving software with different optimizations and settings, so requests to the same endpoint can behave in different ways. Some providers lack vision capability for vision models, and the reasoning effort option can be processed differently across providers.

Simon Willison · 5d agoAI tools & infra

Quoting Boris Cherny

Anthropic's Boris Cherny says AI-generated production code needs a higher quality bar enforced with tests, fuzzers, and automated reviews.

In remarks quoted by Simon Willison, Anthropic's Boris Cherny argued that production code written by Claude should meet a higher quality bar than human-written code. He described guardrails at Anthropic including lint rules, extensive tests, Claude-driven end-to-end tests, daily Claude-powered fuzzers, and automated code and security reviews. He warned that without such controls AI-generated code can become hard to maintain.

Simon Willison · 5d agoAI tools & infra2

.blend URL Viewer

Simon Willison demos a .blend URL viewer built with GPT-6 Astra in Codex and ChatGPT Images 2.5 generating Blender models.

Simon Willison used ChatGPT Images 2.5 to generate a Faberge egg concept image themed after the TV show Pluribus, then had Codex running GPT-6 Astra (high) execute a Blender local skill to build a 3D model from it. He published the result as a .blend URL viewer tool and continues experimenting with agentic Blender workflows. The post is a hands-on demo of AI-driven creative tooling rather than a security or release announcement.

Simon Willison · 6d agoAI tools & infra

llm 0.35

llm CLI tool version 0.35 adds support for OpenAI's new GPT-6 Astra model exposed as gpt-6-astra.

Simon Willison released llm 0.35, which adds an OpenAI model definition for GPT-6 Astra under the model ID gpt-6-astra. No other release details were provided in the post.

Simon Willison · 8d agoAI tools & infra

Video compressor

Simon Willison built a browser-based video compressor using the WebAssembly FFmpeg build, generated by Claude Fable 5.1 in Claude Code for web.

Willison recorded a demo video of his Equal Earth animation and wanted an optimized web-publishable version. He had Claude Fable 5.1 running in Claude Code for web build a compressor around the WebAssembly port of FFmpeg. The post is a short vibe-coding demonstration, not a model release or security event.

Simon Willison · 9d agoAI tools & infra

Mercator ↔ Equal Earth

Simon Willison used GPT-6 Astra (medium) in ChatGPT Work to build an animated D3 transition between Mercator and Equal Earth map projections.

Willison built an animated transition between the Mercator and Equal Earth map projections using D3. The tool was generated by GPT-6 Astra (medium) in ChatGPT Work. Equal Earth is a projection recently voted on at the UN. The post is a vibe-coding demonstration rather than a security or major model event.

Simon Willison · 9d agoAI tools & infra1

Using Blender with coding agents on macOS

Simon Willison demonstrates driving the Blender macOS app with ChatGPT Codex coding agents to render scenes via Python, costing roughly $4.24 at API rates.

Willison documents installing the full Blender application from blender.org and using ChatGPT Codex on macOS to render a pelican-riding-a-bicycle scene through Blender's Python API. He refined the output with follow-up prompts. AgentsView estimated the equivalent API cost at $4.24 for gpt-6-astra.

Simon Willison · 11d agoAI tools & infra1

llm-openrouter 0.7.1

Simon Willison released llm-openrouter 0.7.1, a performance fix for loading OpenRouter models in his LLM CLI plugin.

Version 0.7.1 of the llm-openrouter plugin addresses a performance problem when loading OpenRouter models in the LLM command-line tool. The fix was contributed by GitHub user waveplate. It is a minor maintenance release with no security implications noted.

Simon Willison · 14d agoAI tools & infra

llm 0.34

Version 0.34 of Simon Willison's llm CLI adds response-duration metrics to log output, plus bug fixes and faster log querying.

The open-source llm command-line tool for interacting with large language models released version 0.34. The headline change adds response duration in milliseconds and human-readable form to llm logs --usage Markdown output, plus a new duration_ms field in llm logs --short. The release includes several contributed bug fixes and a significant performance improvement to llm logs, alongside the related llm-openrouter 0.7.1 release.

Simon Willison · 14d agoAI tools & infra1

llm-anthropic 0.28

llm-anthropic 0.28 released with Claude Fable 5.1 support, default reasoning traces and a new ClaudeRefusal exception.

Developer Simon Willison released version 0.28 of the llm-anthropic Python plugin, adding support for Claude Fable 5.1. Reasoning traces are now displayed by default for models that support them, and a new llm_anthropic.ClaudeRefusal exception is raised when Claude returns a refusal.

Simon Willison · 14d agoAI tools & infra2

llm-gemini 0.34

llm-gemini 0.34 adds support for Google's new Gemini 3.8 Flash model with configurable low, medium and high thinking levels.

Simon Willison released llm-gemini 0.34, a plugin for the LLM CLI that adds the gemini-3.8-flash model, including low, medium and high thinking levels, and fixes an issue where async responses failed to record the resolved model version. The release coincided with Google's launch of Gemini 3.8 Flash, plus a Gemini 3.8 Flash Cyber variant restricted to trusted defenders. Willison noted the Flash tier's speed, low cost and competence at HTML and JavaScript generation tasks.

Simon Willison · 14d agoAI tools & infra

Quoting Rick Brewster

Paint.NET added a clean-room Direct2D rewrite for WINE, largely written by Anthropic's Claude and described as unreviewed 'vibe coded' code.

Rick Brewster says Paint.NET now ships a from-scratch, reverse-engineered Direct2D implementation (PaintDotNet.Windows.Direct2D1.Managed.dll) used under WINE via a /wine flag, since Direct2D was never completed well enough there. He credits the Claude coding assistant with writing most of the code, calling it largely 'vibe coded' and not thoroughly reviewed. Simon Willison shared the quote as an example of shipping AI-assisted systems code in production software.

Simon Willison · 14d agoAI tools & infra1

Codex bundles LibreOffice

OpenAI's Codex desktop app bundles 1.7GB of runtimes including full Python, Node.js, Poppler, git, and LibreOffice binaries.

Blogger Simon Willison found that the OpenAI Codex desktop app (since rebranded to ChatGPT) keeps about 1.7GB in a ~/.cache/codex-runtimes/codex-primary-runtime folder, including full Python and Node.js installations plus native binaries for Poppler, git, and the LibreOffice office suite. Bundled skills in the plugins directory instruct Codex on how to find and use these binaries. The observation highlights the heavyweight local runtime stack shipped with agentic coding tools.

Simon Willison · 15d agoAI tools & infra1

GeoJSON Map Viewer

Simon Willison built a GeoJSON map viewer with PNG export using GPT-5.6-Sol, Claude Code for web, and Fable 5.1.

Simon Willison describes building a GeoJSON map viewer that displays boundary files and exports maps as PNGs. GPT-5.6-Sol proactively offered to create the tool, and iterations used Claude Code for web and Fable 5.1. He also notes ChatGPT Work will assemble boundary polygons from government data sources when asked.

Simon Willison · 15d agoAI tools & infra

datasette-mcp 0.2

Simon Willison released datasette-mcp 0.2, changing MCP SQL results to object arrays for better small-model usability.

Datasette-mcp 0.2 changes the execute_sql 'rows' output from an array of arrays to an array of objects, helping weaker models avoid losing track of positional column mappings. The plugin now depends on mcp>=2.1.1. This is the first non-alpha release, and the author reports using it extensively.

Simon Willison · 15d agoAI tools & infra