从源码构建要求 Rust 最低版本 1.88.0;agent 需通过 --management-addr 指向 balancer 的管理端口才能加入集群;README 未说明模型文件如何获取,需参考官方文档配置模型。
paddler
intenteeApache-2.0活跃维护面向 ggml 生态的开源 LLM/VLM 负载均衡与推理服务平台,用更少组件和简单部署在 CPU/GPU 上自托管大模型,可替代 llm-d 等方案。
Open-source LLM/VLM load balancer and serving platform for self-hosting LLMs (and VLMs) at scale 🏓🦙 Alternative to projects like llm-d, Docker Model Runner, etc but with less moving parts and simple deployments built around ggml ecosystem. Runs on CPU and GPU.
paddler balancer --inference-addr 127.0.0.1:8061 --management-addr 127.0.0.1:8060 --web-admin-panel-addr 127.0.0.1:8062
paddler agent --management-addr 127.0.0.1:8060 --slots 4README 说明可在 CPU 和 GPU 上运行,但未给出具体显存或 GPU 型号要求;桌面版示例提到 RTX 5090 可作为 agent 接入。
自托管 LLM/VLM 负载均衡与推理服务平台,单二进制部署,替代 llm-d 等复杂方案
面向 ggml 生态的开源 LLM/VLM 负载均衡与推理服务平台,用更少组件和简单部署在 CPU/GPU 上自托管大模型,可替代 llm-d 等方案。
核心能力
- 内置 llama.cpp 引擎直接完成推理与嵌入生成
- 按 LLM 特性做负载均衡,请求分发到各 agent 的 slot
- agent 可动态加入,便于对接自动扩缩容工具
- 请求缓冲支持从零主机冷启动扩容
- 内置 Web 管理面板与可观测性指标
容易踩的坑
- v4.1.0v4.1.0 (OpenCode support) 最新正式版2026-07-19 · 2026-07-19 14:36 UTC
Features
- Add support for OpenCode - howto here: https://github.com/intentee/paddler/issues/253#issuecomment-4980764877
- Bump internal
llama.cppto b10068
Internals
- Thread
CancellationTokenthrough all the Paddler APIs, so everything can be canceled cleanly inpaddler_client
- v4.1.0-rc1v4.1.0-rc1 (OpenCode support)pre-release2026-07-11 · 2026-07-11 17:47 UTC
这个版本没有写更新说明。
- v4.0.12026-07-07 · 2026-07-07 08:29 UTC
查看更新说明
Bug fixes
- Embedding models without a chat template no longer fail to load
- Clear errors when generation is disabled: while a cluster is set to generate embeddings, all generation endpoints reject with a clear "token generation is disabled"
- Web admin panel: the prompt section is disabled while embeddings are enabled
- v4.0.02026-06-11 · 2026-06-11 02:44 UTC
查看更新说明
Features
- Load models from a direct URL: provide a direct URL to a .gguf model and Paddler downloads and caches it on the agent
- OpenAI Responses API: new
/v1/responsesendpoint - Token usage and classification: responses report per-kind token counts, and generated tokens are classified as content, reasoning, tool call, or undeterminable
- Structured tool-call parsing: set
parse_tool_callsto get parsed tool calls response - New endpoint: Get balancer applicable state
Breaking changes
- Inference parameters:
batch_n_tokensrenamed ton_batch - Inference parameters now requires
embedding_batch_size - Streamed tokens now arrive under kind-specific keys (
ContentToken,ReasoningToken,ToolCallToken,UndeterminableToken) instead ofToken, and the stream ends with aDoneevent carrying token usage - Minimum supported Rust version is now 1.95.0
- v3.1.22026-04-30 · 2026-04-30 20:41 UTC
查看更新说明
- Paddler GUI desktop app
- Continuous batching in the inference engine
- Performance and memory usage optimizations
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Paddler
Digital products and their users need privacy, reliability, cost control, and an option to be independent from closed-source model providers.
Paddler is an open-source LLM load balancer and serving platform. It allows you to run inference, deploy, and scale LLMs on your own infrastructure, providing a great developer experience along the way.
Key features
- Inference through a built-in llama.cpp engine
- LLM-specific load balancing
- Works through agents that can be added dynamically, allowing integration with autoscaling tools
- Request buffering, enabling scaling from zero hosts
- Dynamic model swapping
- Built-in web admin panel for management, monitoring, and testing
- Observability metrics
Who is Paddler for?
- Product teams that need LLM inference and embeddings in their features
- DevOps/LLMOps teams that need to run and deploy LLMs at scale
- Organizations handling sensitive data with high compliance and privacy requirements (medical, financial, etc.)
- Organizations wanting to achieve predictable LLM costs instead of being exposed to per-token pricing
- Product leaders who need reliable model performance to maintain a consistent user experience of their AI-based features
Community
- Discord https://discord.gg/92x3Z8a4gj
- Reddit (just started a subreddit, we will see how it goes :)) https://www.reddit.com/r/paddler/
Installation and Quickstart
Paddler is self-contained in a single binary file, so all you need to do to start using it is obtain the paddler binary and make it available in your system.
You can obtain the binary by:
- Option 1: Downloading the latest release from our GitHub releases
- Option 2: Or building Paddler from source (MSRV is 1.88.0)
Using Paddler
Once you have made the binary available in your system, you can start using Paddler. The entire Paddler functionality is available through the paddler command (running paddler --help will list all available commands).
There are only two deployable components, the balancer (which distributes the incoming requests), and the agent (which generates tokens and embeddings through slots).
To start the balancer, run:
paddler balancer --inference-addr 127.0.0.1:8061 --management-addr 127.0.0.1:8060 --web-admin-panel-addr 127.0.0.1:8062
The --web-admin-panel-addr flag is optional, but it will allow you to view your setup in a web browser.
And to start an agent with, for example, 4 slots, run:
paddler agent --management-addr 127.0.0.1:8060 --slots 4
Read more about the installation and setting up a basic cluster.
Documentation and resources
- Visit our documentation page to install Paddler and get started with it.
- API documentation is also available.
- Video overview
- FOSEDM 2026 talk - From Infrastructure to Production: A Year of Self-Hosted LLMs.
How does it work?
Paddler is built for an easy setup. It comes as a self-contained binary with only two deployable components, the balancer and the agents.
The balancer exposes the following:
- Inference service (used by applications that connect to it to obtain tokens or embeddings)
- Management service, which manages the Paddler's setup internally
- Web admin panel that lets you view and test your Paddler setup
Agents are usually deployed on separate instances. They further distribute the incoming requests to slots, which are responsible for generating tokens and embeddings.
Paddler uses a built-in llama.cpp engine for inference, but has its own implementation of llama.cpp slots, which keep their own context and KV cache.
Web admin panel
Paddler comes with a built-in web admin panel.
You can use it to monitor your Paddler fleet:
Add and update your model and customize the chat template and inference parameters:
And use a GUI to test the inference:
Desktop application (beta)
Paddler comes in two versions: a command-line interface for infrastructure use, and a desktop application for more casual use cases, like using multiple laptops and PCs in a local AI cluster or setting up an office-wide company second brain, without using a console.
You can also mix both; for example, you can set up a Paddler balancer on your server rack, and ask a colleague in the office with an RTX 5090 to plug in ad hoc as an agent if they do not need their entire compute.
The world is your oyster with this one. :)
See the desktop app docs to get started.
Starting out
- Setup a basic LLM cluster
- Use Paddler's web admin panel
- Generate tokens and embeddings
- Use function calling
- Use grammars
- Use multimodal models
- Create a multi agent fleet
- Go beyond a single device
Do you accept AI-Generated code?
All code in the project is human-reviewed, and most is handcrafted. We have been experimenting with using AI to generate some code, and so far, we had success with:
- coding and maintaining the HTTP client that connects to the core library
- creating an integration test harness for Paddler, where we were able to consolidate all the existing tests to use the new, improved harness almost automatically
If you successfully generate something, you can submit it. We will still need to review it, so make sure you understand what you are doing.
You can try, though. :) We have even added CLAUDE.md with some code style and other basic instructions.
Why the Name
We initially wanted to use Raft consensus algorithm (thus Paddler, because it paddles on a Raft), but eventually dropped that idea. The name stayed, though.
Later, people started sending us the "that's a paddlin'" clip from The Simpsons, and we just embraced it.