
Myrmex Hive
io.github.olafkfreund由 GitHub 账号 olafkfreund 发布v1.0.3更新于 Oct 24, 2026
Zero-inbound-port MCP gateway for managing distributed edge servers over reverse SSH tunnels
概览
一个 MCP 网关,让助手通过仅出站的 SSH 隧道监控和管理分布式边缘服务器、Docker 主机和 Kubernetes 节点。
- 可以做什么
- Myrmex Hive 运行一个中心网关,边缘代理通过出站 SSH 隧道连接,因此目标系统不暴露任何入站管理端口。助手可通过网关列出已连接的代理及其工具、调用指标采集和允许列表命令等工具,并运行由 LLM 编排的提示来检查输出并采取行动。它还支持跨多个代理的集群编排、计划(试运行)模式、定时健康检查和签名审计日志。
- 适用场景
- 当你需要观察或操作无法接受入站连接的边缘、Docker 或 Kubernetes 主机集群,并希望助手在其中运行允许列表内的诊断或服务操作时,值得添加。它适合希望获得可审计、需审批的远程管理而非直接 SSH 访问的运维人员。
- 运行要求
- 作为本地进程运行,通常通过 Docker 运行网关容器镜像,并需要部署网关和代理。需要 SSH 密钥对(带 agent-id 注释的代理 Ed25519 密钥、持久化的网关主机密钥)、authorized_keys 允许列表,以及包含 bearer 令牌或 OIDC 设置的网关配置。编排使用本地 Ollama 端点和模型;不需要公网访问。
安装
在 SourceWeft 中
- 打开 控制台中的 Myrmex Hive,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Myrmex Hive: Secure Agent Orchestrator & Gateway
Myrmex Hive is a decentralized, secure, and geeky agent orchestration framework built on top of the Model Context Protocol (MCP). It is designed to securely monitor, query, and manage distributed edge servers, Docker hosts, and Kubernetes nodes without exposing any ingress ports on your target systems.
1. Architecture & Security Model
Myrmex Hive is designed for zero-trust environments where target edge systems (agents) must remain completely isolated from direct inbound network traffic.
Security Principles (Why We Made These Choices)
- Zero Inbound Ports: Instead of running an SSH daemon or exposing management ports (like HTTP/gRPC) on your target servers, the Myrmex Agent initiates a secure, outbound connection to the Myrmex Gateway. This eliminates the primary attack vector of public scanner discovery and automated brute-force attacks.
- OS-Grade Encryption: Outbound tunnels utilize standard SSH protocol channels managed via Go's native
crypto/sshpackage, enforcing secure Ed25519 signature validation and high-grade ciphers (ChaCha20-Poly1305, AES-GCM). - Defense-in-Depth Allowlist: The Agent executes binaries directly via OS process forks (
os/exec) rather than invoking a shell (like/bin/shorbash). This completely bypasses shell expansion, neutralizing shell injection vulnerabilities. Arguments are strictly validated against developer-defined regular expressions inconfig.json. - Central Token Authorization: Access to the Gateway's control API is guarded via secure bearer token authentication.
2. Quickstart & Installation
Myrmex Hive supports Go, Nix, Linux, macOS, and Windows environments.
Nix / NixOS (Declarative Flake)
Add Myrmex Hive to your flake.nix inputs:
You can then run the CLI tool directly:
To deploy a Myrmex Agent or Gateway as a declarative systemd service on NixOS, enable the module in your configuration.nix:
macOS (Homebrew)
Installs all three binaries: myrmex (operator CLI), myrmex-gateway, and myrmex-agent.
macOS only — Homebrew casks are not supported on Linuxbrew. On Linux use the deb/rpm packages from the releases page, the Nix flake, install.sh, or the container images.
Linux & macOS (Direct Install)
To download, compile, and configure the Agent as a background daemon (systemd on Linux, LaunchDaemon on macOS):
The installer automatically compiles the agent binary, generates secure Ed25519 keys, writes the config.json, and boots the service.
Windows (PowerShell Script)
To install the Agent on Windows Server or Windows 10/11, launch PowerShell as Administrator and run:
The PowerShell script compiles the binary, registers the agent configuration under C:\ProgramData\mcp-agent\, generates OpenSSH keys, and schedules a background task to launch the agent at system startup.
Kubernetes (Helm)
Versioned container images and a Helm chart are published to GHCR on every release:
--version pins the chart and the images together (v1.0.1+; v1.0.0 predates
image/chart publishing). See
docs/DEPLOYMENT.md for the image list, a working install
with agent keys, and the TLS/Service/agent_id caveats.
3. Configuration
Agent Configuration (agent_config.json)
Allows you to define a single gateway or a list of multiple gateway addresses for High Availability (HA) failover cycling:
Gateway Configuration (gateway_config.json)
Configures the receiver, TLS certs, OIDC/Tokens RBAC role mapping (admin, operator, read-only), and signed audit log path:
Note: If audit_log_path is set, Myrmex Gateway records all /api/call and /api/chat executions alongside a cryptographic signature generated using the Gateway's private SSH host key.
Note: oidc_issuer enables native OIDC/JWKS validation of real SSO tokens (opt-in; static tokens keep working alongside). See docs/SECRETS.md.
Note: metrics_enabled exposes a Prometheus endpoint at /metrics (opt-in; behind the same bearer-token auth as the rest of the API). Myrmex Gateway can also route threshold alerts to a webhook/Alertmanager and export OpenTelemetry traces over OTLP — all opt-in. See docs/OBSERVABILITY.md for the metric reference, a scrape_config, the Grafana dashboard, alert routing and tracing.
Governance & scheduling (all opt-in, backward-compatible — empty/unset means off):
risk_tiersclassifies each tool (read/write/admin). Built-in mutating tools (service_control,run_command) now default to a non-readtier even when unlisted, so they can't slip past gating unclassified; your explicit entries still override.require_approval_tiersmakes calls in those tiers wait for a second operator (myrmex approvals), and a new pending approval also pages your configured alert targets so it can't expire unnoticed. 15-minute TTL.rate_limit_per_minutecaps tool calls in a sliding 60-second window.scheduled_tasksperiodically run an LLM orchestration prompt against an agent and route the summary through the alerting subsystem — unattended fleet health checks.interval_secondsonly (no cron).
See Golden Path for how these six gates fit together and a staged rollout.
Fail-closed defaults
Myrmex Gateway fails closed: it refuses to start (or rejects a connection) rather than run in an insecure state. When preparing configs and keys, three rules are enforced:
-
authorized_keyscomment = agent-id (identity binding). The Gateway takes each connected agent's identity from the comment on itsauthorized_keysentry, and rejects any key whose comment is empty or does not match theagent_idthe agent presents. Generate every agent key with its agent-id as the comment:Then the public line in
authorized_keysmust keep that comment (ssh-ed25519 AAAA... agent-nginx). -
Persistent
host_key_pathrequired whenaudit_log_pathis set. Audit entries are signed with the Gateway's SSH host key, so a transient (regenerated-on-restart) key would make past signatures unverifiable. The Gateway refuses to start ifaudit_log_pathis set buthost_key_pathis empty. Generate a stable host key once and pointhost_key_pathat it:The Gateway also refuses to start without
authorized_keys_path(no agent allowlist). -
Agents verify the Gateway host key. By default agents use trust-on-first-use (TOFU): on first connect they learn and persist the Gateway host key to
<private_key_path>.gateway_hostkey(override withknown_host_key_path) and require a matching key thereafter — no config change needed. To pin explicitly instead, setgateway_host_keyinagent_config.jsonto the Gateway host public-key line:
The local test fixtures (generate_keys.sh, setup_test_env.sh) already satisfy all three: agent keys are commented with their agent-ids, a persistent test_env/gateway/host_key is generated and mounted, and agents rely on TOFU.
4. Local LLM Setup (Ollama & Gemma 4)
Myrmex Hive orchestrates actions and interprets output using local LLMs.
Option A: Running as Docker Side-Services (Recommended)
An optional Docker setup is available via profiles in docker-compose.test.yml preloaded with the gemma4:e4b model (offline-ready):
- CPU-only mode:
- GPU-accelerated mode (requires NVIDIA Container Toolkit):
Option B: Manual Host Setup
- Install Ollama on your Gateway server.
- Pull the desired model (Gemma 4):
- Ensure Ollama is running and accessible (default
http://localhost:11434). Link it ingateway_config.json.
5. Using the Myrmex CLI (myrmex)
The Go-based Myrmex CLI allows operators to interact with the gateway, view agents, invoke tools, and launch the assistant directly from the terminal.
Global Options
--url: Gateway API base URL (default:https://localhost:8080)--token: Gateway token (orMYRMEX_TOKENenvironment variable)-o,--output: Output format (textorjson)
CLI Command Reference
- Status: View connected edge agents and configured upstream servers:
- Agents: List detailed specifications of all connected agents:
- Tools: List all available tools across the swarm:
- Call: Execute a tool on a specific agent. Automatically unmasks and un-escapes payloads:
- Call with JSON output: Outputs a clean, raw JSON payload directly to stdout (perfect for piping to
jq): - Ask: Prompt the Myrmex AI assistant to analyze and perform actions. Terminal output is beautifully styled in monospace markdown:
- Ask with JSON output: Forward the final AI response directly to other automated tools or agents:
- Ask in plan (dry-run) mode: The model is still consulted at every step, but no tool is executed — the response lists the calls it would have made. Use it to preview an action before trusting the loop:
- Fleet-wide orchestration: Run the same orchestration across many agents and aggregate the per-agent summaries. Use
--allfor every connected agent or--agentsfor a subset (combine with--planto preview fleet-wide):
6. Real-Life Orchestration Scenarios
Scenario A: Automated Cluster Recovery
An operator issues a query:
myrmex ask "Check load average on agent-db. If it's over 4.0, run diagnostic logs and let me know what process is consuming CPU."
- The orchestrator calls
agent-db__get_metrics. - The orchestrator parses the returned metrics JSON.
- If the load is over
4.0, the local Gemma model identifies thatagent-db__run_commandwith argument{"cmd":"top"}(or an allowed diagnostics script) is available in the allowlist. - The orchestrator executes the tool, parses the logs, and presents a clean, formatted report directly to the terminal.
Scenario B: Integration with Antigravity SDK
You can easily drive Myrmex Hive programmatically from other automated AI systems, such as Antigravity SDK agents.
The gateway exposes standard endpoints (/api/chat and /api/call) protected by the secure bearer token. Your Antigravity agents can query the endpoint, receive structured tool list payloads, and trigger actions over the SSH tunnel.
Scenario C: Airgapped Gemma 4 Setup & Cryptographic Auditing
An enterprise administrator configures a secure, fully compliance-audited local assistant using the offline-ready Ollama side-service:
- Launch Ollama: The administrator starts the preloaded CPU-only Gemma 4 side-service in Docker:
- Configure Gateway: In
gateway_config.json, the gateway is linked to the Ollama endpoint: - Execute Operator Request: An operator executes a compliance-audited CLI query:
- Log & Verify Audit Event: Since the request has write-like evaluation steps, the gateway logs a cryptographically signed entry in
audit.logshowing the timestamp, token role (operator), API route (/api/chat), and base64 signature. The security auditor verifies the log authenticity using the gateway's public SSH host key.
Scenario D: Testing and chaos-testing your own service
A developer wants to run, break, observe and restart a service on a real host without SSHing in.
- Allowlist the harness, don't build a feature. Copy the entries from
examples/service-test-harness/: achaos.shwith a fixed verb set (cpu,mem,latency,loss,kill), probes pinned to hosts you name, and an apply script for config variants. - Verify recovery before breaking anything. Restart the service through the Gateway first — if the restart path doesn't work, you have no business injecting a fault.
- Inject and observe. Faults are time-bounded and self-reverting, and return immediately so you can watch the effect while it happens:
- Get a record. Every injection lands in the signed audit log, so a chaos run leaves tamper-evident evidence of which fault hit which host and when.
Full guide: docs/SERVICE_TESTING.md.
7. GCP Best Practices
For cloud deployments on Google Cloud Platform:
- VM Isolation: Deploy the Myrmex Gateway on a secure Compute Engine VM inside a private VPC. Expose the Gateway's control interface (
:8080) only through Identity-Aware Proxy (IAP) to enforce IAM roles. - Kubernetes Agents: Deploy Myrmex Agents on Google Kubernetes Engine (GKE) as a DaemonSet to automatically monitor and manage GKE node resources.
- Secret Security: Avoid storing the Gateway auth token in config files. Fetch the token dynamically at startup from Google Secret Manager.
8. Airgapped Datacenters
In highly secure, airgapped systems:
- Myrmex Hive requires no public DNS or external internet access.
- Deploy Ollama locally on the Gateway server. Since Ollama and the Myrmex Gateway run in the same local network, LLM inference occurs entirely within the airgapped perimeter.
- Agents establish SSH tunnels internally over local subnets, maintaining a completely airgapped, auditable management plane.
来源:README.md,提交 4416378
工具
0版本历史
1- v1.0.3最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分