{"slug": "zed-editor-docker-agent-acp-coding-with-a-local-agent-plugged-into-llmman", "title": "Zed Editor + Docker Agent + ACP: coding with a local agent plugged into llmman", "summary": "A developer walkthrough shows how to connect the Zed code editor to Docker Agent, a YAML-configurable code agent runtime, through the open Agent Client Protocol (ACP), with Docker Agent pointed at llmman, a local model server that exposes an OpenAI-compatible API and uses llama.cpp as its inference engine. The setup installs Docker Agent via `brew install docker-agent`, runs `llmman serve`, and pulls a model such as huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M, with Docker Model Runner, Ollama, or any other OpenAI-API-compatible server offered as alternatives to llmman.", "body_md": "# Zed Editor + Docker Agent + ACP: coding with a local agent plugged into llmman\n\n## [In two minutes](#in-two-minutes)\n\nToday I'm showing you how to plug **[Zed](https://zed.dev/)**, my code editor, into an agent that runs **locally**, thanks to the **[ACP](https://agentclientprotocol.com/get-started/introduction)** protocol.\n\nThe agent in question is **[Docker Agent](https://docker.github.io/docker-agent/)**. And for the language model, I'm not going to call a cloud API: I'm going to point Docker Agent at **[llmman](https://llmmanorg.github.io/)**, which serves my local model behind an OpenAI-compatible API.\n\nI wrote an article on how to use **llmman**: [k33g.org/p/20261001-llmman](https://k33g.org/p/20261001-llmman).\n\nHere's a summary of my setup for this article:\n\nOf course, you can use other LLM engines instead of **llmman**: **Docker Model Runner**, **Ollama**, or any other server that speaks the OpenAI API will work just fine. More on that at the end of the article.\n\n## [Quick reminder on the 4 building blocks used](#quick-reminder-on-the-4-building-blocks-used)\n\n### [Zed Editor](#zed-editor)\n\n**[Zed](https://zed.dev/)** is a code editor that supports the **ACP** (Agent Client Protocol) protocol. Concretely, that means you can plug any ACP-compatible agent directly into Zed's agent panel, and chat with it just like you would with a built-in agent (for example the Claude Code extension in VSCode).\n\nDocumentation: [zed.dev/acp/editor/zed](https://zed.dev/acp/editor/zed)\n\n### [ACP: Agent Client Protocol](#acp-agent-client-protocol)\n\n**[ACP](https://agentclientprotocol.com/get-started/introduction)** is an open protocol (on the same model as LSP, but for agents) that standardizes communication between a **code editor** (the ACP client) and a **code agent** (the ACP server). The agent runs as a separate process, \"speaks JSON-RPC\" over `stdin`/` stdout`, and since it's a standard, the editor doesn't need to know the \"inner workings\" of the agent to use it.\n\nDocumentation: [agentclientprotocol.com](https://agentclientprotocol.com/get-started/introduction) and [zed.dev/acp](https://zed.dev/acp)\n\n### [Docker Agent](#docker-agent)\n\n**[Docker Agent](https://docker.github.io/docker-agent/)** is a code agent runtime (even multi-agent) configurable via a simple YAML file: you describe your **providers** (how to connect to the model(s)), your **agents** (instructions, model used, allowed tools) and your **models**. It knows how to expose these agents through several interfaces, including... **ACP**. That's exactly what I need to bridge Zed and my local models.\n\n### [llmman](#llmman)\n\n**[llmman](https://llmmanorg.github.io/)** is the tool that serves my local models behind a single API compatible with OpenAI (but also Ollama and Anthropic). It relies on **[llama.cpp](https://github.com/ggml-org/llama.cpp)** as the inference engine and manages models as OCI images (Docker Hub, Hugging Face, private registry...). For this article, it'll be the server that **Docker Agent** queries to get the model's responses.\n\nI talked about it recently over here: [k33g.org/p/20261001-llmman](https://k33g.org/p/20261001-llmman), to explain how to install and use it (a kind of first contact).\n\n## [Setting up all the components](#setting-up-all-the-components)\n\n### [Install Docker Agent (on macOS)](#install-docker-agent-on-macos)\n\n```\nbrew install docker-agent\n```\n\nFor other platforms, check the documentation: [docker.github.io/docker-agent](https://docker.github.io/docker-agent/)\n\n### [Start llmman as an LLM server](#start-llmman-as-an-llm-server)\n\nIf it's not already done (see [my dedicated article](https://k33g.org/p/20261001-llmman) for the installation):\n\n```\nllmman serve\n```\n\nThen you download a model (from Hugging Face for example) and check that everything went well:\n\n```\nllmman pull huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M\nllmman list\n```\n\n### [Configure Docker Agent to talk to llmman](#configure-docker-agent-to-talk-to-llmman)\n\nHere's the configuration file I use, `llmman.docker-agent.yaml`:\n\n```\nproviders:\n  llmman:\n    api_type: openai_chatcompletions\n    base_url: http://127.0.0.1:17434/v1\n\nagents:\n\n  root:\n    model: mellum\n    description: A local code agent, powered by a small LLM.\n    instruction: |\n      Your name is Riker. You are a developer expert.\n      You act as a mentor and coding partner. \n\n      # Tool discipline\n\n      Built-in tools:\n      - shell: use the `shell` tool to explore the project, read files, or run commands.\n        Chain commands as long as it is useful, then give a clear final answer.\n\n      # Style\n\n      Be concise. Prefer a small, correct, compilable example over prose.\n\n    toolsets:\n      - type: shell\n\nmodels:\n  mellum:\n    provider: llmman\n    model: huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M\n```\n\nThe important bit is `base_url: http://127.0.0.1:17434/v1`: that's the address where **llmman** exposes its OpenAI-compatible API. Everything else (agent, instructions, tools) is standard **Docker Agent** configuration.\n\nNow that we have a model and a way to connect to it via an API and Docker Agent, let's make the connection with Zed.\n\n### [Declare the agent in Zed](#declare-the-agent-in-zed)\n\nIn Zed's settings (`settings.json`), we add an `agent_servers` section that contains a sub-section pointing to the `docker-agent serve acp` command with the path to our YAML file:\n\n```\n\"agent_servers\": {\n  \"🤖 Docker Agent (llmman)\": {\n    \"type\": \"custom\",\n    \"command\": \"docker-agent\",\n    \"args\": [\n      \"serve\",\n      \"acp\",\n      \"/Users/k33g/kDrive/Rickub/demo-docker-agent-acp/llmman.docker-agent.yaml\"\n    ],\n    \"env\": {}\n  }\n}\n```\n\nOf course, adapt the path to your own Docker Agent configuration file.\n\n### [Let's go](#lets-go)\n\nOpen Zed's agent panel, pick **\"🤖 Docker Agent (llmman)\"** from the list of available agents, and chat with it like with any code agent: it explores your project, reads files, runs shell commands, all while running entirely locally, on your own model:\n\nThe agent asks whether you want to run a command:\n\n## [What if I don't want to use llmman?](#what-if-i-dont-want-to-use-llmman)\n\nNothing forces you to. The only contract between **Docker Agent** and the model server is an **OpenAI-compatible API**. So in the `providers` file, you can replace `base_url` with any server that exposes this type of API:\n\n- **[Docker Model Runner](https://docs.docker.com/ai/model-runner/)** , which, like**llmman** , relies on`llama.cpp` internally.\n- **[Ollama](https://ollama.com/)** — with its OpenAI-compatible API.\n- ... or any other runtime that knows how to expose this same kind of endpoint.\n\n## [To sum up](#to-sum-up)\n\n- **Zed** speaks**ACP** to**Docker Agent** .\n- **Docker Agent** speaks**OpenAI API** to a model server, here**llmman** , which relies on**llama.cpp** .\n- Everything runs locally.\n\nThere you go, it's a simple setup to put in place, and it lets you keep full control over your model while enjoying Zed's developer/user experience. Feel free to ask questions 🙂\n\nWritten by\n\nKeep reading\n\n### Zed Editor + Docker Agent + ACP, but in a sandbox: running the agent with sbx\n\nRun Docker Agent inside a Docker sandbox (sbx) and connect Zed to it over ACP, keeping llmman local while isolating the agent from your machine.\n\nOct 4, 2026\n\n### Docker Agent + llama.cpp: a local code agent in 5 minutes 🤖💙🦙\n\nServe a GGUF model with llama.cpp, point Docker Agent at it with a short agent.yaml, and get a fully local code agent running in minutes.\n\nSep 15, 2026\n\n### A mini code agent with Docker Agent - Part 8: a local agent to learn Rust\n\nAssemble a local Rust learning companion with Docker Agent: a cookbook RAG, a rust-analyzer LSP toolset, and the context caps that keep a small model alive.\n\nAug 11, 2026\nFrom other blogs", "url": "https://wpnews.pro/news/zed-editor-docker-agent-acp-coding-with-a-local-agent-plugged-into-llmman", "canonical_source": "https://k33g.org/p/20261003-acp-zed-docker-agent", "published_at": "2026-10-03 00:00:00+00:00", "updated_at": "2026-10-10 00:28:14.185663+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "developer-tools", "large-language-models"], "entities": ["Zed", "Docker Agent", "Agent Client Protocol", "llmman", "llama.cpp", "Docker Model Runner", "Ollama", "Hugging Face"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/zed-editor-docker-agent-acp-coding-with-a-local-agent-plugged-into-llmman", "markdown": "https://wpnews.pro/news/zed-editor-docker-agent-acp-coding-with-a-local-agent-plugged-into-llmman.md", "text": "https://wpnews.pro/news/zed-editor-docker-agent-acp-coding-with-a-local-agent-plugged-into-llmman.txt", "jsonld": "https://wpnews.pro/news/zed-editor-docker-agent-acp-coding-with-a-local-agent-plugged-into-llmman.jsonld"}}