{"slug": "llm-chat-completions-server-0-1a0", "title": "llm-chat-completions-server 0.1a0", "summary": "Simon Willison released llm-chat-completions-server 0.1a0, a plugin that exposes LLM models via an OpenAI Chat Completions-compatible endpoint. The plugin leverages content-addressable logs in LLM 0.32rc1 to de-duplicate conversation messages using hashes. GPT-5.6 Sol wrote the entire plugin code.", "body_md": "**Release:** [llm-chat-completions-server 0.1a0](https://github.com/simonw/llm-chat-completions-server/releases/tag/0.1a0)\n\nA key goal of the new content-addressable logs [in LLM 0.32rc1](https://simonwillison.net/2026/Jul/30/llm-rc1/) was being able to support OpenAI Chat Completion style requests where each incoming message extends the previous conversation, like this:\n\n```\ncurl http://localhost:8002/v1/chat/completions \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"model\": \"qwen3.5-4b\",\n    \"messages\": [\n      {\"role\": \"user\", \"content\": \"Capital of France?\"},\n      {\"role\": \"assistant\", \"content\": \"Paris.\"},\n      {\"role\": \"user\", \"content\": \"Germany?\"}\n    ]\n  }'\n```\n\nHere the conversation state is tracked by the client, so each of these requests gets longer and longer. The new schema design in LLM is designed to de-duplicate these using hashes of the individual message parts.\n\nTo test that out, I built this plugin:\n\n```\nuv tool install llm --pre\nllm install llm-chat-completions-server\nllm chat-completions-server -p 9001\n```\n\nRunning this starts a localhost server on port 9001 that exposes your full collection of LLM models (from any plugins you have installed) using a ChatGPT Completions compatible endpoint.\n\nGPT-5.6 Sol [wrote the whole thing](https://gist.github.com/simonw/53be513c1bd4a29a7aa480d9bde9b4a5) - it turns out it knows the OpenAI Chat Completions API shape really well.", "url": "https://wpnews.pro/news/llm-chat-completions-server-0-1a0", "canonical_source": "https://simonwillison.net/2026/Jul/30/llm-chat-completions-server/#atom-everything", "published_at": "2026-07-30 15:43:16+00:00", "updated_at": "2026-07-31 00:27:24.260155+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "large-language-models"], "entities": ["Simon Willison", "llm-chat-completions-server", "LLM", "OpenAI", "GPT-5.6 Sol"], "alternates": {"html": "https://wpnews.pro/news/llm-chat-completions-server-0-1a0", "markdown": "https://wpnews.pro/news/llm-chat-completions-server-0-1a0.md", "text": "https://wpnews.pro/news/llm-chat-completions-server-0-1a0.txt", "jsonld": "https://wpnews.pro/news/llm-chat-completions-server-0-1a0.jsonld"}}