Fleet map
Now
Fleet of four lanes plus a built-in caretaker, all on Dwayne's MacBook Pro, coordinating via
bridge + shared memory, human-visible output in the One.ai Telegram group ([redacted-id],
owner user [redacted-id], hard cap 4 bot messages/min across the fleet).
Lanes (authority: ~/.hermes/FLEET-LAYER.md, observed 2026-07-09):
- Hermes / Zappo, supervisor: home automation, gateway health, cron (150 jobs), kanban
dispatch, routine ops. Runtime: NousResearch hermes-agent, config
~/.hermes/config.yaml. - MAI (OpenClaw agent
main), primary assistant, scheduled reporting, knowledge graph, One.ai group orchestration. Workspace~/.openclaw/workspace. - X (OpenClaw agent
x), public/X-channel content; nothing posts publicly without Dwayne's approval. Workspace~/.openclaw/workspace-x(ai-swe-os layout +.ai/doctrine). - Codex, code/design/debug/second opinions, via OpenClaw codex plugin + CLI harness.
- crestodian, OpenClaw built-in caretaker agent (do not archive; source: docs.openclaw.ai/cli/crestodian).
Models (re-verified 2026-09-20; earlier 2026-09-13 and 2026-08-03 values kept in the Log):
-
Hermes agents and profiles: the config default in
~/.hermes/config.yamlisdeepseek-v4.1-flash:cloudon providerollama-launch(base_url http://127.0.0.1:11434/v1,api_keyreads the literalollama), withfallback_providersa single entry pointing at the same model onollama-launch. This supersedes the 2026-09-13 entry that namedglm-5.3-flash:cloudas the Hermes side. All 15 auxiliary roles readdeepseek-v4.1-flash:cloudexcept vision, which staysminimax-m3:cloud.Profile model mismatch FIXED 2026-10-02. The four sub-profiles forge, oracle, sage and scribe had shipped with
glm-5.3-flash:cloudon provideropenai-codex(base_urlhttps://chatgpt.com/backend-api/codex). That backend cannot serve GLM, so the route was dead, not merely off-standard: a live probe returnedHTTP 400: The 'glm-5.3-flash:cloud' model is not supported when using Codex with a ChatGPT account.All four were repointed to the main config's working route and now answer a livehermes -p <profile> -zprobe. Backups:~/.hermes/backups/profile-model-repair-20261002-224650.Also worth knowing:
fallback_providersis a no-op, not a fallback. It names the same model as the primary, so no failover exists. The older openrouterdeepseek-v4-flash-0731fallback is retired (HTTP 410 since 2026-09-25), so the previous note was stale in both directions. Source:~/.hermes/config.yamland~/.hermes/profiles/*/config.yaml, live provider probes, read 2026-10-02. -
OpenClaw:
agents.defaults.model.primaryisollama/deepseek-v4.1-flash:cloudwithfallbacks: [](empty by design to prevent alternate-provider fallback).agents.defaults.modelPolicy.allowcarries 19 entries:openai/gpt-6-astra,xai/grok-4.3,ollama/deepseek-v4-flash:0731-cloud,openrouter/deepseek/deepseek-v4-flash-0731,ollama/kimi-k3:cloud,xai/grok-4.6,openrouter/x-ai/grok-4.6,ollama/kimi-k2.7-code:cloud,ollama/glm-5.2:cloud,ollama/minimax-m3:cloud,ollama/gemini-3-flash-preview:cloud,ollama/llama3.2:3b,ollama/llama3.1:8b,ollama/glm-5.1:cloud,ollama/kimi-k2.5:cloud,ollama/minimax-m2.7:cloud,ollama/llava:latest,openrouter/stealth/ox-alpha,ollama/deepseek-v4.1-flash:cloud. The Astra entry is writtenopenai/gpt-6-astra, notcodex/gpt-6-astra. The codex plugin is enabled and pinsappServer.commandto/Users/dwayne/.npm-global/bin/codex.meta.lastTouchedVersionis2026.9.4and amodelPolicyAllowlistmigration has run. Source:~/.openclaw/openclaw.json, read 2026-09-20. Note the file no longer carries a top-levelmodelPolicykey; the allowlist now lives underagents.defaults. -
x_search:
grok-4.20-reasoning(xai).
Communication:
- Hermes → OpenClaw:
~/.hermes/bin/openclaw-bridge <agent> "<msg>" [topic](sessionsagent:<id>:hermes-<topic>). - OpenClaw → Hermes:
~/.openclaw/workspace/scripts/ask_hermes.sh "<q>"(loopback API :8642). - Bridge sessions are fleet-internal, [SILENT]/group caps do not apply.
- Group chat: bot-authored messages are read-only context; never reply to them (see FLEET-LAYER).
- House style (2026-08-19):
google-developer-stylethenhumanizer. Telegram compact and title-first still win. Seedecisions/2026-08-19-google-developer-style.md.
Retired: agent vanilla + workspace-pro-vanilla (archived 2026-07-09 to
~/.openclaw/backups/stale-agents-20260709/; was not in agents.list).
fleet-ask routes (second bridge, repo tools)
~/.local/bin/fleet ask <route> "<task>", provenance via FLEET_ACTOR/KL_AGENT, every dispatch
logged to the kg ledger. Routes: main, vanilla, x-agent, coding, crestodian (OpenClaw via
openclaw agent --json); nexus/hermes (hermes -z); oracle, sage, forge, scribe (hermes -p <profile> -z).
Coexists with ~/.hermes/bin/openclaw-bridge (topic-scoped sessions); prefer whichever the
calling runtime already has allowlisted. Shared-memory CLIs: ~/.local/bin/{kl,kg}.
Current incidents (observed 2026-07-08 … 2026-08-29, source: kg query):
fleet-healthrecovered, waswarningson 2026-08-03 07:30 UTC; has reportedall greenon every daily run since 2026-08-25 (observed 08-25, 08-26, 08-27, 08-28). The 2026-08-03 warning is superseded; no active fleet-health incident.cron-health-observerrecovered, was 3 erroring on 2026-08-03; has reported0 erroring, 3 stale, 10 transitionson every run since 2026-08-25. The erroring count dropped to 0; the 3 stale jobs are the known low-cadence set (ai-home-stack-upgrade-maintenance, autonomous-improvement-loops, improvement-loop-closer, incident-observer, notify:cron perkg stale). No active erroring incident.pergolux-realm-snapshotblocked, BLE realm scan runs on MacBook Pro but the downstreamha_webrtc_snapshot.jsexporter needs/Volumes/FATTY/src/claw-proj-pergolux-bridge/realm_snapshot.pyor a remote/stale alert producer. Hermes patched the Playwright driver lookup and recovered WebRTC stills fromcurrent=0tocurrent=2; stale_real=5 remains. Root cause: missing path / stale producer, not the BLE scan. Seehome/pergolux.md.cron-approval-mode-alias-triage, Hermes patched the approval-mode parser so legacyapprovals.mode=allowresolves tooff(matches intent of old configs); tests passed. Gateway restart deferred. Seedecisions/2026-07-11-approval-mode-alias.md.- Exec-allowlist gaps, OpenClaw agents hit
exec denied: allowlist missforha_entity_guard.pyand the birdclaw scout, blocking fresh HA bad-state checks and birdclaw reports. Not yet resolved; config owner is OpenClaw gateway (~/.openclaw/openclaw.jsontools.exec/agents.defaults.toolPolicy). - OpenRouter key missing, OpenClaw gateway configured with
openrouter/openai/gpt-5as primary model, butOPENROUTER_API_KEYis not set. Gateway crash-loop breaker tripped after 23 failed starts. Resolution requires either adding the key or switching primary to a provider with existing auth. Source: live config audit, 2026-08-01.
Memory search (verified 2026-07-15, source: OpenClaw CLI/config and live search probe):
- Agent defaults use local Ollama embeddings:
all-minilm:latest, fallbacknone, chunking 64 tokens / 8 overlap. This replaced the unauthenticated implicit OpenAI default. - Main index: 48/48 files, 1,384 chunks, 384-dimensional vectors; CLI semantic search passed.
- A long-lived agent process may retain the old provider until its next process/session start.
Log
-
2026-10-02 22:46 AEST (repair, live probes): Repaired the four Hermes sub-profiles. forge, oracle, sage and scribe each carried
model.default: glm-5.3-flash:cloudwithprovider: openai-codexandbase_url: https://chatgpt.com/backend-api/codex, plus every auxiliary role and delegation set the same way, and an emptyfallback_providers. A livehermes -p scribe -zprobe returnedHTTP 400: The 'glm-5.3-flash:cloud' model is not supported when using Codex with a ChatGPT account.so the route was dead end to end, not a cosmetic naming drift. Repointed all model, provider, base_url and auxiliary entries to the main config's working route (deepseek-v4.1-flash:cloudonollama-launch,http://127.0.0.1:11434/v1), kept the vision auxiliary onminimax-m3:cloudbecause deepseek-v4.1-flash is text-only, and added the missingproviders.ollama-launchblock each profile needed. Verified: all four now answer a livehermes -p <profile> -zprobe with PROBE_OK. Backups~/.hermes/backups/profile-model-repair-20261002-224650. The profiles have nosessionsrows past 2026-05-02 and no cron jobs reference them, so this restored capability rather than fixing a live outage. Separately confirmedfallback_providersin the main config is a no-op (same model as primary, so no failover) and the old openrouterdeepseek-v4-flash-0731fallback is retired (HTTP 410 since 2026-09-25). Sources:~/.hermes/profiles/*/config.yaml,~/.hermes/config.yaml, livehermes -pprobes and provider probes, read 2026-10-02. - hermes-zappo. -
2026-09-20 (weekly synthesis): Re-verified the model block against live configs. Corrected the Hermes side:
~/.hermes/config.yamldefault isdeepseek-v4.1-flash:cloudonollama-launchwith a single same-model fallback, so the 2026-09-13 claim that Hermes ranglm-5.3-flash:cloudis superseded; the four sub-profiles still pinglm-5.3-flash:cloudonopenai-codex. Corrected the OpenClaw allowlist location (nowagents.defaults.modelPolicy.allow, no top-levelmodelPolicy) and the Astra entry spelling (openai/gpt-6-astra). Skill-corpus audit numbers from 2026-09-13 have drifted: a live count on 2026-09-20 finds 88 liveSKILL.mdfiles outside.archive/and 142 including it, against the audit's 92 and 139, and the longest description is nowwebwrightat 418 chars whilehumanizerhas dropped out of the top 12. Any plan built on the audit's "13 rewrites, 3,526 to 1,105 chars" figures needs re-measuring first. Sources:~/.hermes/config.yaml,~/.hermes/profiles/*/config.yaml,~/.openclaw/openclaw.json,find ~/.hermes/skills -name SKILL.md, read 2026-09-20 06:06 AEST. - hermes. -
2026-09-13, Audited the skill corpus and
~/.hermes/AGENTS.mdagainst OpenAI's "Rethinking skills and prompts for GPT-6 Astra" guidance. Artifact:~/.hermes/artifacts/skills-agents-audit-2026-09-13.md. Read-only; no skill file modified. Measured: 139 skills on disk (92 live, 47 archived), 91 loaded; description length median 86, max 435; 38 descriptions over 140 chars; 9,894 chars of description text (~2,473 tokens) loaded into every session; 30 of 92 live skills have no supporting files; body median 7,399 chars withhermes-operationsat 58,693c.AGENTS.mdis 17,438 chars (~4,359 tokens) and is largely clean against the article: zero unconditional "read docs before every edit" lines, one mandatory pre-work gate (the KG query, which is live and should stay), and 22 lines of never/always/must boundary language. Duplicate pairs found and still live:tailscale-first-host-resolution/tailscale-host-resolution,multi-agent-channel-discipline/multi-agent-coordination,macos-computer-use/computer-use,github/github-workflows,home-assistant/home-assistant-troubleshooting.sdlc-reviewis the one live skill absent from the loaded set because it declaresenvironments: [kanban]; that is correct scoping, not a fault, so disk and loaded counts will differ by environment-scoped skills. Applicability caveat: the article is written for GPT-6 Astra, and Hermes runsglm-5.3-flash:cloud. Skill-description slimming is model-neutral and safe to apply to Hermes. The sections on relaxing boundary language and dropping test-running instructions are Astra-specific and must not be applied to Hermes or OpenClaw without testing, because those models have not been shown to self-test or self-limit the way the article describes. 13 concrete description rewrites prepared (3,526 to 1,105 chars total) but not applied. Sources:~/.hermes/skills,~/.hermes/AGENTS.md,~/.hermes/config.yaml, read 2026-09-13. - hermes. -
2026-09-13 (weekly synthesis): Superseded the 2026-08-03 model block. Hermes side is now
glm-5.3-flash:cloudonollama-launchacross agents, profiles and auxiliaries, with the config default reportingdeepseek-v4.1-flash:cloudand a singleglm-5.3-flash:cloudfallback provider; vision auxiliary changed fromgemini-3-flash-preview:cloudtominimax-m3:cloud. OpenClaw default isollama/deepseek-v4.1-flash:cloudwith an intentionally empty fallback list and a 19-entrymodelPolicy.allow. Sources:~/.hermes/config.yaml,~/.hermes/profiles/*/config.yaml,~/.openclaw/openclaw.json, read 2026-09-13., hermes. -
2026-08-30 (weekly synthesis): Superseded the 2026-08-03 fleet-health and cron-health-observer blockers. Both recovered: fleet-health
all greendaily since 2026-08-25; cron-health-observer0 erroring, 3 stalesince 2026-08-25. Sources:kg query --limit 50,kg stale., hermes. -
2026-08-19 09:07 GMT+10: Dwayne replied
apply. Live skill is~/.openclaw/workspace/skills/google-developer-style/SKILL.md., mai. -
2026-08-19: House style is now
google-developer-stylethenhumanizer. Telegram compact and title-first still win. Source: Telegram 2026-08-19 07:17 GMT+10,decisions/2026-08-19-google-developer-style.md., mai. -
2026-08-03 (weekly synthesis): Updated model routing, primary is now
deepseek-v4-flash:cloud, fallbackskimi-k3:cloud→grok-4.3. Added fleet-health blocked (2026-08-03), cron-health-observer 3 erroring, and OpenRouter key gap to current incidents. Sources:kg query --limit 50,~/.openclaw/openclaw.json,~/.hermes/config.yaml., hermes. -
2026-07-09: merged
brain/entities/agent-fleet.md(fleet-ask route table, repo-tools bridge), claude-cowork. -
2026-07-09: File created from fleet-upgrade session (configs read directly; bridge added same day - see
decisions/2026-07-09-fleet-upgrade.md). -
2026-07-12 (weekly synthesis): Added Pergolux blocker, approval-mode alias fix, exec-allowlist gaps. Sources:
kg query --limit 502026-07-08..2026-07-11,kg stale, session snippets. -
2026-07-15: Repaired OpenClaw memory search provider/index mismatch by moving embeddings to installed local Ollama
all-minilm:latest, forcing a clean rebuild, and verifying CLI recall.