Skip to content
trending

AI Tools

Simon Willison builds browser chat tool for CORS-compatible OpenAI API

Developer Simon Willison released CORS Chat on 15 August 2026, a browser-based interface for chatting with any OpenAI Responses-compatible API endpoint that supports CORS headers, built in a single day using GPT-5.6-Sol at xhigh reasoning.

By 4 min read
Simon Willison builds browser chat tool for CORS-compatible OpenAI API

👁 113 reads

Developer Simon Willison published CORS Chat on 15 August 2026, a browser-only chat interface that connects directly to any OpenAI Responses-compatible API endpoint, provided that endpoint serves the correct CORS headers. Willison says he built the tool in a single day, using GPT-5.6-Sol at xhigh reasoning to help write it, with the immediate practical goal of testing Qwen 3.8 27B running locally in LM Studio on two different machines: an M5 MacBook Pro and an NVIDIA DGX Spark.

// in brief
  • CORS Chat lets users connect directly to any CORS-enabled OpenAI Responses-compatible endpoint - including LM Studio and OpenRouter - entirely within the browser, with no server required.
  • Conversations are saved locally in the browser and can be exported as JSON; the tool also progressively renders SVG images as tokens stream in.
  • Willison built the tool to test Qwen 3.8 27B running in LM Studio on an M5 MacBook Pro and an NVIDIA DGX Spark, using GPT-5.6-Sol at xhigh reasoning to assist construction.

What it does

CORS Chat operates entirely inside the browser - no proxy, no backend, no account required. Users point it at any compatible endpoint, supply custom headers if the service requires authentication tokens, and begin chatting. Multiple sessions can be open simultaneously, each configured with different models and reasoning settings. Conversations are persisted in the browser’s own storage and can be exported by copying and pasting raw JSON, which makes archiving or sharing a session straightforward.

Willison confirms he has tested the tool against two distinct services: LM Studio, when launched with the --cors flag that enables cross-origin requests, and OpenRouter, the API aggregator that routes requests to dozens of hosted models. Both worked without issues, he says. The practical implication is that anyone running a local model server - or anyone with an OpenRouter API key - gets a lightweight web UI for that endpoint without installing additional software.

One feature Willison singles out as a “fun detail” is progressive SVG rendering. When a model streams tokens that form an SVG image, the interface detects this mid-stream and begins drawing the graphic in the chat window before the generation is complete. For models that produce structured visual output, this gives immediate feedback on what is being constructed rather than waiting for the full response to arrive.

The local-model testing context

The tool’s origin story is grounded in a very specific hardware comparison. Willison wanted a convenient way to send prompts to Qwen 3.8 27B running on two different local setups - an Apple Silicon laptop and an NVIDIA DGX Spark - and compare responses without switching between native applications. CORS Chat was the answer he built for himself, and then released publicly the same day.

That workflow illustrates a recurring pattern in local AI inference: the model-serving layer (LM Studio in this case) has matured to the point where it can expose an OpenAI-compatible HTTP endpoint with a single flag, but browser-based tooling to exercise those endpoints has lagged. Most existing chat UIs either bundle their own model runtime, require a cloud connection, or assume a specific hosted service. A generic browser client that works with any CORS-enabled endpoint fills a gap that affects developers testing local models, researchers switching between providers, and small teams that self-host inference.

OpenRouter occupies the other end of the spectrum: a cloud aggregator that already speaks the OpenAI Responses format and already allows browser-origin requests. The fact that CORS Chat works against both a localhost LM Studio instance and OpenRouter without code changes underlines how useful a single, format-agnostic interface can be once the API surface is standardised.

Google · Your sourcesQuantslant higher in your Google - one clickAdd to preferred sources →

What this changes for practical AI users

For developers and small-business owners who self-host models, the immediate value is a zero-installation debugging and evaluation tool. Spinning up LM Studio with --cors, opening CORS Chat in a browser tab, and beginning a conversation is a substantially shorter path than configuring a full open-source chat interface or writing curl commands. The JSON export means evaluation results are not locked inside a proprietary interface.

The multiple-session and per-session model configuration design also has implications for anyone who needs to compare outputs across models systematically. Running two sessions side by side - one pointed at a local Qwen instance, another at a hosted model via OpenRouter - requires nothing beyond two browser tabs.

The SVG streaming feature, while narrow in its current application, points toward a broader design principle: a good streaming UI should handle structured sub-content types, not just plain text. As models increasingly produce code, diagrams, and formatted data mid-stream, interfaces that can parse and render those fragments progressively will be meaningfully more useful than those that wait for a complete response before displaying anything.

Willison built CORS Chat on 15 August 2026 and posted it the same afternoon. The source and full description are available on his weblog. For a tool written and shipped in a single day, it covers a surprising amount of ground - local inference, cloud API aggregation, multi-session management, local persistence, and format-aware streaming rendering - which itself says something about how capable AI-assisted development has become for experienced practitioners working on focused, well-defined problems.

Kinetyra

// read next

More on this from QUANTSLANT

Piotr Olszewski

Editor and publisher · Quantslant

I edit and publish Quantslant. AI tools help with research, drafts and translation; choosing topics, running the tests, checking facts and the decision to publish are mine, and so is the responsibility for what appears here.

read nextSpaceX closes $60B Cursor acquisition, promising GPU fleet accessmagazineSpaceX closes $60B Cursor acquisition, promising GPU fleet accessAI coding tool Cursor is now officially part of SpaceX after the two companies closed their previously announced $60 billion acquisition deal on August 15, 2026.

Most read

  1. 1Best AI Video Generator Apps for Your Phone (2026)
  2. 2Claude Opus 5.5 Motion Graphics: 60s Showreel from One Prompt
  3. 3Wan 2.2 on RTX 4090: timings, VRAM and four test clips
// site map
Quantslant in numbers 1,427posts in archive26news from the last 7 days18video models in the observatory
🎬 AI Video Benchmarks: Higgsfield DoP vs OpenAI Sora • Higgsfield vs Runway Gen-3 • AI Video Credit Calculator
× ‹ enlarge ›