Helmdeck

io.github.tosin2013由 GitHub 帳號 tosin2013 發布v0.29.10更新於 Oct 27, 2026

Self-hosted MCP server: sandboxed browser, desktop, vision, code-edit packs for any agent.

概覽

AI 產生的概覽

自架式的 MCP 橋接服務,把 Helmdeck 能力包(瀏覽器、桌面、視覺、程式碼編輯、Git 與 GitHub 操作)以具型別的 JSON 工具提供給 MCP 用戶端。

可以做什麼
  • 執行瀏覽器能力包:對網址截圖、執行多步 CDP 互動、擷取網頁、執行自然語言瀏覽器測試,並進行多來源附引用研究
  • 使用文件與視覺能力包:解析 PDF 與圖片、渲染簡報、產生含旁白的影片,並透過視覺模型完成點擊或依標籤填表
  • 在複製的儲存庫中處理程式碼:取得與推送儲存庫、產生符號地圖、讀取寫入修補列出刪除檔案、執行指令,以及提交、檢視差異與紀錄
  • 管理 GitHub:建立與列出 issue、列出 PR、張貼留言、建立 release 與搜尋
  • 執行 Python 與 Node 語言側車,並使用保險庫佔位權杖發出 HTTP 請求
  • 進行路由、規劃與記憶:為意圖推薦能力包、把提示拆解為步驟計畫,並保存持久的使用者事實
適用情境
當你已自架 Helmdeck 控制平面,並希望本機代理透過單一具型別的工具介面驅動瀏覽器、桌面、文件、Git 與 GitHub 工作流程時值得加入,特別適合使用小型或本機開源模型的場景。它鎖定無法把憑證送往雲端 API 的團隊。
執行需求
需要可透過 HELMDECK_URL 存取的 Helmdeck 控制平面,以及由該控制平面簽發的 JWT 權杖 HELMDECK_TOKEN。伺服器以 npm 套件或 OCI 映像形式在本機透過 stdio 執行。完整平台安裝需要 Docker、Node 20 以上、Go、make、openssl 與 curl,並包含瀏覽器側車與物件儲存。
安裝前請注意
HELMDECK_TOKEN 是存取控制平面的持有者憑證,應避免出現在日誌與共用設定中。能力包可寫入、推送、提交、刪除檔案、在複製目錄中執行任意指令並向 GitHub 發布內容,代理可能改變遠端狀態。管理員密碼是需在外部輪替的共用密鑰,介面內沒有修改入口。擷取、研究與視覺能力包會把資料送往 Firecrawl、TTS 與模型供應商等外部服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Helmdeck,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

helmdeck

Today's helmdeck install ran a full 6-step code-edit loop (clone, read, patch, test, commit, push) on gpt-oss-120b for $0.07. The same loop on Cursor or Claude Code direct via Sonnet would have cost $0.30+. Same outcome, ~5× cheaper — and the "expensive" stack isn't even the most expensive option.

WorkflowFrontier-model approachHelmdeck (gpt-oss-120b)
Browser scrape + GitHub comment$0.25 (Anthropic Computer Use)$0.005
Code edit loop (6 steps)$0.35 (Cursor / Aider)$0.07
Multi-step browser test$0.20 (Browser-use NL)$0.03
PDF → structured Markdown$1.00 (naive Sonnet vision)$0.003

Most browser agents require GPT-4o or Claude Sonnet to work reliably. Helmdeck is built for the other 99% of deployments — local 7B models, air-gapped environments, and teams that can't send credentials to a cloud API. It wraps every browser, desktop, git, and code action into a single typed JSON call that even a small model can fill in correctly. The numbers above are the consequence: when packs absorb the work the LLM would otherwise burn tokens rediscovering, cheap or local models do agentic work that frontier-model APIs charge 10× more for.

A self-hosted, containerized platform for AI agents, exposed as Capability Packs — schema-validated, one-shot JSON tools — and native MCP. The defining metric is ≥90% pack success on 7B–30B-class open-weight models, something no frontier-targeting competitor is optimizing for.

📊 Full per-task comparison with reproduction recipe at https://helmdeck.dev/explanation/why-helmdeck. These are one maintainer's findings; we welcome community reproductions.

Why this exists

Smart models thrive on bash and a README. Weak models stall on open-ended interfaces. Helmdeck closes that gap by hiding browser sessions, desktop actions, credentials, and multi-step workflows behind single typed REST / MCP calls.

Three audiences specifically:

  • Self-hosted AI teams who can't leave their VPC and need MCP-native infra that doesn't phone home.
  • The LocalLLaMA / Ollama crowd running 7B–30B models — pack contracts keep small models reliable where open-ended tool surfaces fail.
  • Security-sensitive orgs who need agents to log into SaaS apps without the model ever seeing a credential (vault-backed placeholder tokens + MCP-level audit).

Status

v0.22.0 shipped — agents that work on free models, with memory. The release closes ADRs 047–050:

  • Pipeline routing + routing memory (ADR 047) — the helmdeck.route meta-pack recommends the best pack/pipeline for an intent (with structured gap warnings when nothing fits), backed by per-caller learned defaults surfaced through the helmdeck://routing-guide and helmdeck://my-defaults MCP resources and a Routing Memory management UI.
  • Memory write surface + OpenClaw bridge (ADR 048) — helmdeck.memory_store persists durable user facts (read back via helmdeck://my-memory), an optional embedding sidecar powers OpenClaw's memory_search, and a QMD corpus bridge exposes helmdeck memory to OpenClaw.
  • Intent decomposition (ADR 049) — helmdeck.plan turns a multi-action prompt into an ordered, pipeline-aware step plan plus a rewritten_prompt.
  • LLM context manager (ADR 050) — internal/llmcontext compacts catalog-heavy prompts to fit small-model context budgets (tiered per-model budgets, cascading select + lexical rank, optional two-pass filter), surfaced through helmdeck://context-budgets and helmdeck://my-plans.

57 capability packs ship in the control-plane binary (47 without an AI gateway configured), alongside 21 built-in pipelines, a community pack marketplace (helmdeck pack install <name>), and operator-supplied cmd.* subprocess packs. Earlier headline features remain: end-to-end content chaining (image.generate auto-feeds podcast/slides/blog covers), the helmdeck://image-models MCP resource, image-mode install (./scripts/install.sh --image-mode), and the Pack Test Runner UI. Helmdeck is published to the official MCP Registry as io.github.tosin2013/helmdeck for one-line install in registry-aware clients. Phases 1–6.5 are complete; the current milestone is v1.0 — Kubernetes & GA (Phase 7), with backlog materialised as GitHub issues tagged good first issue and help wanted.

  • 49 ADRs in docs/adrs/ — every architectural decision with PRD back-references
  • Task breakdown in docs/TASKS.md — ~85 tasks across 8 phases with critical path
  • GitHub milestones in docs/MILESTONES.md — drop-in issue checklists with current ship state
  • Pack reference in docs/PACKS.md — every shipped pack's input/output contract

Quick start

sh
git clone https://github.com/tosin2013/helmdeckcd helmdeck./scripts/install.sh

That's it. The script runs preflight checks (docker, node ≥20, go ≥1.26, make, openssl, curl) with platform-aware install hints, generates fresh secrets into deploy/compose/.env.local (chmod 600), builds the Management UI bundle, the Go binaries, and the browser sidecar image, brings the Compose stack up, and prints the URL plus a freshly generated admin password.

text
✓ helmdeck is up
  URL:       http://localhost:3000  Username:  admin  Password:  <generated; printed once — save it now>

Useful flags:

  • ./scripts/install.sh --reset — tear down, regenerate secrets, reinstall (new admin password)
  • ./scripts/install.sh --no-build — skip build steps, just bring the stack up
  • ./scripts/install.sh --help — full flag reference

Or via make: make install.

Connect a client

A running stack is just the platform — the value is packs called by an agent. Wire one of the supported MCP clients to your fresh install:

ClientStatusSetup guide
OpenClaw✅ validated end-to-enddocs/integrations/openclaw.md
Claude Code🟡 documenteddocs/integrations/claude-code.md
Claude Desktop🟡 documenteddocs/integrations/claude-desktop.md
Gemini CLI🟡 documenteddocs/integrations/gemini-cli.md
Hermes Agent🟡 documenteddocs/integrations/hermes-agent.md

Once a client is connected, work through the pack-demo-playbook.md — 20+ copy-pasteable prompts that exercise every pack. The per-pack reference covers each pack's contract, error codes, and chained workflows.

Advanced: manual setup

If you'd rather drive each step yourself instead of running the install script:

sh
# 1. Build the Management UI bundle (needs Node 20+)make web-deps && make web-build
# 2. Build the control-plane binary with the UI embeddedmake build
# 3. Run the control plane with admin credentialsHELMDECK_JWT_SECRET=$(openssl rand -hex 32) \HELMDECK_VAULT_KEY=$(openssl rand -hex 32) \HELMDECK_ADMIN_PASSWORD=changeme \./bin/control-plane

Or use the Compose stack directly (control plane + Garage object store + bundled init):

sh
cp deploy/compose/.env.example deploy/compose/.env.local# …edit deploy/compose/.env.local and fill in real secrets…docker compose -f deploy/compose/compose.yaml --env-file deploy/compose/.env.local up -d

Logging in to the Management UI

The login endpoint accepts a static admin password set via the HELMDECK_ADMIN_PASSWORD env var on the control plane process. Suitable for the dev / single-node Compose tier; OIDC SSO for production deployments lands in a later phase.

SettingDefaultOverride
UsernameadminHELMDECK_ADMIN_USERNAME env var
Password(none — UI login disabled)HELMDECK_ADMIN_PASSWORD env var (required)
Session length12 hoursHardcoded in internal/api/auth_login.go

To change the password: stop the control plane, set HELMDECK_ADMIN_PASSWORD to the new value, and restart. There is no in-UI "change password" flow today — the password is managed out-of-band by whichever orchestrator runs the control plane (Compose, systemd, Kubernetes Secret, etc.).

If HELMDECK_ADMIN_PASSWORD is unset, the login endpoint returns 503 login_disabled. The control plane still runs and the API still works — operators can mint a JWT directly via the CLI:

sh
./bin/control-plane -mint-token=alice -mint-token-scopes=admin -mint-token-ttl=12h

The minted token can be pasted into any tool that speaks Authorization: Bearer <token>.

Production note: the static-password path uses constant-time comparison so it's safe against timing attacks, but it's still a shared secret that has to be rotated by hand. For production deployments with multiple operators, OIDC SSO via your existing identity provider is the right answer — see the Phase 6 follow-up roadmap.

Architecture at a glance

  • Sidecar pattern — browser runs in its own container, never embedded in the agent (ADR 001)
  • Golang control plane — single static binary, distroless image, embeds the React UI (ADR 002)
  • Capability Packs — the primary product surface; user-authorable via Go or WASM (ADRs 003, 012, 024)
  • OpenAI-compatible AI gateway — Anthropic, Gemini, OpenAI, Ollama, Deepseek with encrypted keys + fallback routing (ADR 005)
  • MCP server registry — stdio/SSE/WebSocket transports; built-in MCP server auto-derived from the pack catalog (ADR 006)
  • Credential vault — AES-256-GCM with placeholder-token injection; agents never see secrets (ADR 007)
  • Dual-tier deployment — Docker Compose for dev/single-node, Helm chart for Kubernetes production (ADRs 009, 010, 011)
  • First-class MCP clients — Claude Code, Claude Desktop, OpenClaw, Gemini CLI via a single shared helmdeck-mcp bridge binary (ADRs 025, 030)
  • Bundled object store — Garage ships in the Compose stack as the default artifact backend; pluggable to any S3-compatible endpoint (AWS S3, R2, B2, SeaweedFS) for production (ADR 031)

Built-in Capability Packs

57 packs ship in the box (47 without an AI gateway configured). Each one hides a multi-step workflow behind a single typed JSON-Schema call so weak open-weight models can drive it as reliably as frontier models. The full input/output contract for every pack lives in docs/PACKS.md. The highlights:

PackWhat it hides
Browser & web
browser.screenshot_urlSession lifecycle, navigation, render wait, cleanup
browser.interactDeterministic multi-step CDP (navigate, click, type, scroll, screenshot, assert_text) — no LLM needed
web.scrape / web.scrape_spaFirecrawl-backed markdown scrape OR schema-driven SPA extraction
web.testNatural-language browser tests via Playwright MCP + LLM loop
research.deepMulti-source Firecrawl search + per-source scrape + LLM synthesis with inline citations
content.groundParses a markdown file for claims, finds authoritative sources, inserts real [link](url) citations in place
Document & vision
slides.renderMarp + Chromium + format flags
slides.narrateNarrated MP4 video (ElevenLabs TTS per slide) + YouTube engagement metadata + sidecar SRT captions + structured validation field (default-on post-step)
av.validateStructured AV-artifact validation (faststart, codec pin, packet contiguity, RMS sweep, LUFS, duration parity, SRT format) — default-on as a post-step on slides.narrate/podcast.generate; standalone for ad-hoc checks
doc.parseDocling layout-aware parse — PDF tables, multi-format, OCR fallback
doc.ocrTesseract fallback for simple images
desktop.run_app_and_screenshotXvfb + xdotool + scrot + window focus
vision.click_anywhereNative computer-use routing (Anthropic/OpenAI/Gemini schemas) with JSON-prompt fallback for Ollama/Deepseek
vision.extract_visible_text / vision.fill_form_by_labelScreenshot → vision model → action loop
Code edit loop
repo.fetch / repo.pushSSH key selection from vault, known_hosts, key shred-on-exit; envelope returns tree/readme/entrypoints/signals so agents orient on the first turn
repo.mapAider-style structural symbol map under a token budget
fs.read / fs.write / fs.patch / fs.list / fs.deletePath-safe file ops inside a clone
cmd.runRun an arbitrary command in a clone path
git.commit / git.diff / git.logStage + commit + review changes attributed to helmdeck-agent
GitHub
github.create_issue / github.list_issues / github.list_prs / github.post_comment / github.create_release / github.searchVault-stored PAT, never visible to the agent
Language sidecars
python.runCPython 3 + pytest + ruff + mypy in a Python sidecar image
node.runNode 20 LTS + npm + pnpm + yarn + tsc in a Node sidecar image
HTTP & credentials
http.fetchPlaceholder-token egress: ${vault:NAME} substitution in URL/headers/body

See ADRs 014–036 for per-pack contracts and docs/SIDECAR-LANGUAGES.md for the runbook on adding new language sidecars (Rust, Go, Ruby, etc.). The contribution guide in CONTRIBUTING.md walks through writing your own pack — the most useful contributions right now are SaaS API wrappers (Slack, Linear, Stripe, Notion, etc.).

License

Licensed under the Apache License, Version 2.0. See NOTICE for attribution to bundled and depended-upon projects, and CONTRIBUTING.md for the contribution guide and the SPDX header convention.

By submitting a pull request you agree to license your contribution under the same terms (Apache 2.0 Section 5 covers the contribution grant — there's no separate CLA).

Author

Tosin Akinosho (@tosin2013)

來源:README.md,提交 03f61a6

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.29.10最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分