homerail-shared
GitHub提供 HomeRail 本地源安装、配置及运行的共享规则,涵盖服务角色、环境变量、密钥管理及端口配置,确保 AI Agent 安全操作。
Trigger Scenarios
Install
npx skills add xiaotianfotos/homerail --skill homerail-shared -g -y
SKILL.md
Frontmatter
{
"name": "homerail-shared",
"description": "Shared HomeRail rules for AI agents operating the local-source release candidate: service roles, environment variables, secrets, provider boundaries, Docker callback networking, update expectations, and safe command behavior.\nUse whenever installing, configuring, upgrading, troubleshooting, or running HomeRail through other HomeRail skills."
}
HomeRail Shared
Core Rules
Use these rules with all HomeRail skills.
-
Treat this release as a local-source install. Do not assume npm packages or public GitHub URLs exist yet.
-
Prefer placeholders such as
<local-homerail-repo>and/path/to/HomeRailin user-facing instructions. -
Keep provider and integration secrets in the Manager encrypted secret store through CLI/UI configuration; never write API keys, tokens, or passwords into repo files, skill files, DAG templates, commits, or issue text.
-
Use one shared
HOMERAIL_HOMEfor Manager and Node. Default is$HOME/.homerail. -
Prefer
hr configfor local runtime settings andhr startto start Manager and Node together. -
Manager and Node run as local services. Manager is not expected to run inside the Worker Docker image.
-
Node provisions Worker containers. Workers for one run should share
${HOMERAIL_HOME}/workspace/<run_id>. -
Local service ports (use this table and the CLI before falling back to low-level process probes):
Port Role Default URL Notes 19191 Manager (HTTP + WS, what DAGs and the CLI talk to) http://localhost:19191This is the only port a DAG run / CLI hits. Bind via HOMERAIL_MANAGER_HOST/manager.host/hr start --host; public access viaHOMERAIL_MANAGER_PUBLIC_URL/hr start --public-url.19192 Agent UI (HTTPS, browser) https://localhost:19192Browser-only. Do NOT send DAG/CLI traffic here. Config via HOMERAIL_UI_HOST/HOMERAIL_UI_PORT/ui.host/ui.port.19193 Agent UI HTTP fallback http://localhost:19193Fallback when HTTPS port is taken. Config via HOMERAIL_UI_HTTP_PORT/ui.httpPort.The Manager port is 19191, not 19192. 19192 is the Agent UI. Mixing these up is the most common startup mistake.
-
For
hr start --ui --publicwithout explicit public URLs, Agent UI should bind and advertise the detected machine IP with HTTPS, and the browser should use same-origin Manager API/WS proxying for the HTTPS UI. UseHOMERAIL_PUBLIC_HOSTonly when automatic machine IP detection picks the wrong interface. -
For reverse-proxied public access, prefer explicit HTTPS/WSS public URLs through
HOMERAIL_MANAGER_PUBLIC_URL/HOMERAIL_UI_PUBLIC_URLor--public-url/--ui-public-url. -
Do not hardcode Docker bridge addresses. Use Docker
host.docker.internal/ host-gateway support or explicit operator-provided callback settings.
Provider Boundaries
For Coding Plan / Agent Plan accounts:
- Never use
direct-llmor Chat Completions as the worker runtime path. - Kimi plans should use the Kimi Code CLI harness (
kimi_code/kimi-code). - Other provider plans should use the Claude Code compatible harness (
claude-sdk) with an Anthropic-compatible endpoint. - If a plan does not expose an Anthropic-compatible endpoint, fail explicitly instead of falling back to the Chat Completions URL.
For MiMo:
- DAG worker LLM access uses the MiMo token-plan Anthropic-compatible endpoint.
- MiMo ASR/API-billing endpoints are a separate voice path and must not be mixed into DAG worker model configuration.
- If a user provides a provider key, configure it with
hr model configure --api-key-stdinor the interactive CLI/UI flow so Manager stores it encrypted. Plaintext env files are legacy import fallbacks only.
Local Source Layout
Expected source checkout:
<local-homerail-repo>/
homerail_manager/
homerail_node/
homerail_worker/
homerail_protocol/
homerail_cli/
agent-ui/
assets/
skills/
Use homerail_cli for the TypeScript CLI. Do not refer to the old homerail_cli_ts name.
Anti-Patterns (Don'ts)
These cause wasted investigation rounds during normal operation. The CLI already exposes everything below.
- Do not start service diagnosis with raw process probes or source spelunking. Run
hr doctor(readiness) andhr runtime status(live state) first; they report manager/node/worker/model state. Useps,lsof, directcurl, logs, or source reading only after the CLI output is insufficient or the user explicitly asks for low-level debugging. - Do not start a fixed host Worker process. DAG Workers are provisioned on demand by a Node into Docker containers; there is no standing worker to launch. Starting a bare
homerail_workernode process manually will not register correctly and bypasses the isolated-workspace contract every DAG depends on. - Do not hand-craft WebSocket URLs or reverse-engineer the worker connection protocol.
hr starthandles Manager↔Node↔Worker wiring. If a Worker cannot reach the Manager, set the Manager worker-WS callback host (seehomerail-install-opstroubleshooting), do not hardcode Docker bridge IPs. - Do not rebuild packages before every DAG run.
install:all/build/typecheck/testare only needed after changing source or on first install. A ready runtime runs DAGs directly viahr run. - Do not read
dag_runs/dag_handoffstables viasqlite3to get run output. Usehr dag handoffs <run_id>(with--content-limit 0for untruncated content). The CLI is the supported read path. - Do not treat an idle or
runningsnapshot as success. Terminal status (completed/failed/cancelled) plus non-empty handoffs is the only success signal.
Validation Ladder
When validating a local install or change, prefer this order:
npm run install:all
npm run build
npm run typecheck
npm test
npm run ci
For end-to-end readiness, also run hr config, hr start,
hr doctor, and one public smoke DAG through homerail-install-ops.
Version History
- 7f1ebb2 Current 2026-08-12 20:53


