diff --git a/.github/workflows/deploy-site.yml b/.github/workflows/deploy-site.yml
index 82acaa6667d7..9b3e6426652c 100644
--- a/.github/workflows/deploy-site.yml
+++ b/.github/workflows/deploy-site.yml
@@ -59,12 +59,22 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
- # Always rebuild — the file isn't committed (gitignored), so a
- # fresh checkout starts without it and we want the freshest crawl
- # in every deploy. Failure is non-fatal: extract-skills.py will
- # fall back to the legacy snapshot cache and the Skills Hub page
- # still renders, just without the latest community catalog.
- python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)"
+ # Rebuild the unified catalog. The file is gitignored, so a fresh
+ # checkout starts without it and we want the freshest crawl in
+ # every deploy.
+ #
+ # This MUST be fatal. build_skills_index.py runs a health check and
+ # exits non-zero WITHOUT writing the output file when a source
+ # collapses (e.g. a GitHub API rate limit zeroes the github /
+ # claude-marketplace / well-known taps all at once). Letting the
+ # deploy continue would either (a) ship a degenerate index missing
+ # whole hubs — the June 2026 regression where OpenAI/Anthropic/
+ # HuggingFace/NVIDIA tabs vanished — or (b) fall through to a
+ # local-only catalog. Failing here keeps the last good deployment
+ # live (GitHub Pages serves the previous build) instead of
+ # publishing a broken catalog. Re-run the workflow once the
+ # transient rate limit clears.
+ python3 scripts/build_skills_index.py
- name: Extract skill metadata for dashboard
run: python3 website/scripts/extract-skills.py
diff --git a/.github/workflows/nix-lockfile-fix.yml b/.github/workflows/nix-lockfile-fix.yml
index ada0b79f23c6..b83b0ba3d3f4 100644
--- a/.github/workflows/nix-lockfile-fix.yml
+++ b/.github/workflows/nix-lockfile-fix.yml
@@ -75,9 +75,10 @@ jobs:
run: |
set -euo pipefail
- # Ensure only nix files were modified — prevents accidental
- # self-triggering if fix-lockfiles ever touches package files.
- unexpected="$(git diff --name-only | grep -Ev '^nix/(tui|web)\.nix$' || true)"
+ # Ensure only nix/lib.nix (home of the single npmDepsHash) was
+ # modified — prevents accidental self-triggering if fix-lockfiles
+ # ever touches package files.
+ unexpected="$(git diff --name-only | grep -Ev '^nix/lib\.nix$' || true)"
if [ -n "$unexpected" ]; then
echo "::error::Unexpected modified files: $unexpected"
exit 1
@@ -89,7 +90,7 @@ jobs:
git config user.name 'github-actions[bot]'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
- git add nix/tui.nix nix/web.nix
+ git add nix/lib.nix
git commit -m "fix(nix): auto-refresh npm lockfile hashes" \
-m "Source: $GITHUB_SHA" \
-m "Run: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"
@@ -216,7 +217,7 @@ jobs:
set -euo pipefail
git config user.name 'github-actions[bot]'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
- git add nix/tui.nix nix/web.nix
+ git add nix/lib.nix
git commit -m "fix(nix): refresh npm lockfile hashes"
git push
diff --git a/DEVLOG.md b/DEVLOG.md
index 567fca35f7ce..aa02b55a0a62 100644
--- a/DEVLOG.md
+++ b/DEVLOG.md
@@ -1,5 +1,46 @@
# Hermes Agent — Dev Log
+## 2026-06-08 — Sync Axiom fork with upstream and retire Discord multi-agent orchestration
+
+### Summary
+
+Merged current `upstream/main` into the Axiom integration branch in a non-live worktree before touching the deployed checkout, retired the unused Discord multi-agent orchestration feature surface, and strengthened Hermes-Relay/API compatibility regression coverage.
+
+### What changed
+
+- Resolved upstream merge conflicts in `/home/bailey/.hermes/worktrees/hermes-axiom-upstream-sync-20260608` on branch `chore/axiom-upstream-sync-20260608`; the live deploy checkout was not modified.
+- Removed the Discord multi-agent orchestration plugin, slash-command docs, env/config references, tests, and fork-contract protected-surface entries at operator direction.
+- Kept generic Discord safety behavior that still matters without the removed feature: explicit bot admission through `allow_bots`, `thread_require_mention`, safe allowed mentions, and reply-ping suppression for bot-authored Discord turns.
+- Removed duplicate `APIServerAdapter` handler definitions left by the merge so upstream/native session handlers cannot be silently shadowed.
+- Expanded API-server regression tests to require all Hermes-Relay compatibility routes, enforce no duplicate adapter handler methods, verify compatibility-route auth, and assert `/api/sessions/search` response shape.
+
+### Verification
+
+- `python3 -m pytest -q tests/gateway/test_api_server.py tests/gateway/test_discord_channel_controls.py tests/gateway/test_discord_send.py tests/test_tui_gateway_server.py tests/hermes_cli/test_update_check.py tests/hermes_cli/test_update_autostash.py` → 489 passed, 115 aiohttp AppKey warnings.
+- `python3 -m pytest -q tests/gateway/test_session_api.py tests/gateway/test_webhook_adapter.py tests/hermes_cli/test_webhook_cli.py tests/gateway/test_reasoning_command.py tests/gateway/test_discord_allowed_mentions.py tests/hermes_cli/test_proxy.py tests/agent/test_anthropic_adapter.py tests/hermes_cli/test_plugins.py tests/hermes_cli/test_subcommands_batch.py tests/hermes_cli/test_subcommands_followup.py` → 471 passed.
+- `python3 -m py_compile hermes_cli/main.py hermes_cli/config.py hermes_cli/subcommands/update.py gateway/run.py gateway/config.py gateway/platforms/api_server.py gateway/platforms/base.py plugins/platforms/discord/adapter.py agent/anthropic_adapter.py tui_gateway/server.py tests/gateway/test_api_server.py tests/gateway/test_discord_channel_controls.py tests/gateway/test_discord_send.py` → OK.
+- Legacy feature-name grep → no matches.
+- `git diff --cached --check` → OK after whitespace cleanup on merged upstream files.
+
+## 2026-06-08 — Create Axiom fork contract and pause daily sync
+
+### Summary
+
+Paused the Sentinel `Hermes Axiom Sync` cron job while the fork is hardened, then created `FORK.md` as the canonical contract for Axiom-specific Hermes behavior.
+
+### What changed
+
+- Paused cron job `44f7334c4efc` (`Hermes Axiom Sync`) so the daily upstream merge attempt stops paging on known unresolved fork conflicts.
+- Added `FORK.md` with the protected behavior contract for Hermes-Relay/API compatibility, Forge, Discord multi-agent orchestration safety, webhook route-level toolsets, proxy/provider routing, update/deploy behavior, TUI/plugin-command cards, and local memory/Lucid surfaces.
+- Inventoried the current fork-only commit surface: 95 non-merge fork-only commits, 107 changed files from the fork merge-base to `origin/axiom`, and major hotspots in `hermes_cli/main.py`, `gateway/platforms/api_server.py`, `gateway/run.py`, and `tui_gateway/server.py`.
+- Recorded required validation commands and open questions before resuming automated upstream sync.
+
+### Verification
+
+- `cronjob(action="list")` confirmed `44f7334c4efc` is paused.
+- `git cat-file -e origin/axiom:FORK.md` and `git cat-file -e upstream/main:FORK.md` confirmed neither remote branch already had `FORK.md`.
+- `git cherry -v upstream/main origin/axiom` showed 95 non-merge fork commits as not patch-equivalent to upstream.
+
## 2026-06-06 — Enforce Forge per-run host tool policy
### Summary
@@ -94,55 +135,55 @@ Restored trusted GitHub Actions remediation webhooks without undoing the safe de
- `python -m pytest tests/gateway/test_webhook_adapter.py::TestRouteToolsets tests/gateway/test_webhook_adapter.py::TestHTTPHandling::test_route_toolsets_attached_to_message_event tests/gateway/test_reasoning_command.py::TestReasoningCommand::test_run_agent_accepts_per_event_toolset_override tests/hermes_cli/test_webhook_cli.py::TestSubscribe::test_with_options -q -o 'addopts='` → 6 passed.
-## 2026-05-20 — Improve Discord roundtable call UX
+## 2026-05-20 — Improve Discord multi-agent orchestration call UX
### Summary
-Tightened `/roundtable call` so it actually admits the target agent's one reply while keeping the shared circuit breaker closed, and improved Discord roundtable usability/output.
+Tightened `/Discord multi-agent orchestration call` so it actually admits the target agent's one reply while keeping the shared circuit breaker closed, and improved Discord multi-agent orchestration usability/output.
### What changed
-- `/roundtable call` now writes a short-lived `pending_call` token after the controlled mention. The stopped gate admits exactly one matching bot-authored event from the caller bot, in the expected channel/thread, mentioning the target bot, then consumes the token.
-- `/roundtable stop` cancels any pending call along with active debates.
+- `/Discord multi-agent orchestration call` now writes a short-lived `pending_call` token after the controlled mention. The stopped gate admits exactly one matching bot-authored event from the caller bot, in the expected channel/thread, mentioning the target bot, then consumes the token.
+- `/Discord multi-agent orchestration stop` cancels any pending call along with active debates.
- Consensus/max-turn debate notices now post a cleaner result block with topic, turn count, final/last turn text, and the decision marker stripped.
-- Discord native `/roundtable` now has richer slash input: action choices plus separate `agent`, `participants`, `rounds`, and `message` fields instead of only one opaque args field.
+- Discord native `/Discord multi-agent orchestration` now has richer slash input: action choices plus separate `agent`, `participants`, `rounds`, and `message` fields instead of only one opaque args field.
- Debate defaults now allow a little more room: omitted `rounds` defaults to 3, and explicit rounds are capped at 5.
-- Updated roundtable plugin tests and the reusable Hermes skill reference.
+- Updated Discord multi-agent orchestration plugin tests and the reusable Hermes skill reference.
### Verification
-- `python -m py_compile gateway/platforms/discord.py plugins/roundtable_orchestrator/__init__.py` → OK
-- `python -m pytest tests/gateway/test_discord_roundtable.py tests/gateway/test_discord_allowed_mentions.py tests/plugins/test_roundtable_orchestrator_plugin.py -q -o 'addopts='` → 56 passed.
-- Hermetic Discord sweep with temp `HERMES_HOME`: `python -m pytest tests/gateway/test_discord*.py tests/plugins/test_roundtable_orchestrator_plugin.py -q -o 'addopts='` → 395 passed.
+- `python -m py_compile gateway/platforms/discord.py plugins/Discord multi-agent orchestration_orchestrator/__init__.py` → OK
+- `python -m pytest tests/gateway/test_discord_Discord multi-agent orchestration.py tests/gateway/test_discord_allowed_mentions.py tests/plugins/test_Discord multi-agent orchestration_orchestrator_plugin.py -q -o 'addopts='` → 56 passed.
+- Hermetic Discord sweep with temp `HERMES_HOME`: `python -m pytest tests/gateway/test_discord*.py tests/plugins/test_Discord multi-agent orchestration_orchestrator_plugin.py -q -o 'addopts='` → 395 passed.
-## 2026-05-20 — Stop Discord roundtable consensus loops
+## 2026-05-20 — Stop Discord multi-agent orchestration consensus loops
### Summary
-Fixed a live roundtable loop where consensus replies could keep re-triggering Victor/Mizu after debate completion.
+Fixed a live Discord multi-agent orchestration loop where consensus replies could keep re-triggering Victor/Mizu after debate completion.
### What changed
-- Debate consensus and max-turn stops now fail closed by setting the shared roundtable gate back to disabled with explicit stop reasons.
-- Discord responses to bot-authored roundtable turns now suppress reply-author pings so `allow_bots: mentions` does not treat reply metadata as a fresh bot mention.
+- Debate consensus and max-turn stops now fail closed by setting the shared Discord multi-agent orchestration gate back to disabled with explicit stop reasons.
+- Discord responses to bot-authored Discord multi-agent orchestration turns now suppress reply-author pings so `allow_bots: mentions` does not treat reply metadata as a fresh bot mention.
- Added regression coverage for fail-closed debate completion and reply-mention suppression.
### Verification
-- `python -m py_compile plugins/roundtable_orchestrator/__init__.py gateway/platforms/base.py gateway/platforms/discord.py gateway/run.py tests/plugins/test_roundtable_orchestrator_plugin.py tests/gateway/test_discord_allowed_mentions.py tests/gateway/test_roundtable_orchestrator_dispatch.py tests/gateway/test_discord_roundtable.py` → OK
-- `python -m pytest tests/plugins/test_roundtable_orchestrator_plugin.py tests/gateway/test_discord_roundtable.py tests/gateway/test_roundtable_orchestrator_dispatch.py tests/hermes_cli/test_plugins.py tests/gateway/test_discord_allowed_mentions.py -q -o 'addopts='` → 142 passed.
+- `python -m py_compile plugins/Discord multi-agent orchestration_orchestrator/__init__.py gateway/platforms/base.py gateway/platforms/discord.py gateway/run.py tests/plugins/test_Discord multi-agent orchestration_orchestrator_plugin.py tests/gateway/test_discord_allowed_mentions.py tests/gateway/test_Discord multi-agent orchestration_orchestrator_dispatch.py tests/gateway/test_discord_Discord multi-agent orchestration.py` → OK
+- `python -m pytest tests/plugins/test_Discord multi-agent orchestration_orchestrator_plugin.py tests/gateway/test_discord_Discord multi-agent orchestration.py tests/gateway/test_Discord multi-agent orchestration_orchestrator_dispatch.py tests/hermes_cli/test_plugins.py tests/gateway/test_discord_allowed_mentions.py -q -o 'addopts='` → 142 passed.
- `python -m pytest tests/gateway/test_telegram_thread_fallback.py tests/gateway/test_background_command.py tests/gateway/test_send_voice_reply_notify.py -q -o 'addopts='` → 64 passed.
-## 2026-05-20 — Add bounded Discord roundtable debate mode
+## 2026-05-20 — Add bounded Discord multi-agent orchestration debate mode
### Summary
-Added `/roundtable debate` as a supervised turn scheduler for Victor/Mizu/Sentinel-style Discord rooms. Normal roundtable remains safe shared-room behavior; debate mode is explicit, bounded, and auto-stops with a summary on consensus or max turns.
+Added `/Discord multi-agent orchestration debate` as a supervised turn scheduler for Victor/Mizu/Sentinel-style Discord rooms. Normal Discord multi-agent orchestration remains safe shared-room behavior; debate mode is explicit, bounded, and auto-stops with a summary on consensus or max turns.
### What changed
-- Added `/roundtable debate
+
+
+
| حقیقی ٹرمینل انٹرفیس | مکمل TUI جس میں ملٹی لائن ایڈیٹنگ، سلیش-کمانڈ آٹو کمپلیٹ، بات چیت کی ہسٹری، انٹرپٹ اور ری ڈائریکٹ، اور سٹریمنگ ٹول آؤٹ پٹ شامل ہے۔ |
| یہ وہاں موجود ہے جہاں آپ ہیں | ٹیلی گرام، ڈسکارڈ (Discord)، سلیک (Slack)، واٹس ایپ (WhatsApp)، سگنل (Signal)، اور CLI — سب ایک ہی گیٹ وے پروسیس سے کام کرتے ہیں۔ وائس میمو (Voice memo) ٹرانسکرپشن، کراس پلیٹ فارم بات چیت کا تسلسل۔ |
| سیکھنے کا ایک مکمل عمل | ایجنٹ کی اپنی ترتیب دی گئی میموری، جس میں وہ خود کو وقتاً فوقتاً یاد دہانی کرواتا ہے۔ پیچیدہ کاموں کے بعد خود کار طریقے سے مہارت (skill) کی تخلیق۔ استعمال کے دوران مہارتوں میں بہتری۔ LLM سمرائزیشن کے ساتھ FTS5 سیشن سرچ تاکہ پرانے سیشنز کی یاددہانی کی جا سکے۔ Honcho کے ذریعے صارف کی ماڈلنگ۔ agentskills.io اوپن سٹینڈرڈ کے ساتھ مکمل مطابقت۔ |
| شیڈول کی گئی خودکار کارروائیاں | بلٹ ان (Built-in) کرون (cron) شیڈیولر جو کسی بھی پلیٹ فارم پر ڈیلیوری کے لیے استعمال ہو سکتا ہے۔ روزانہ کی رپورٹس، رات کے بیک اپس، ہفتہ وار آڈٹس — یہ سب کچھ قدرتی زبان (natural language) میں اور بغیر کسی نگرانی کے کام کرتا ہے۔ |
| کام کی تقسیم اور متوازی عمل | متوازی (parallel) کاموں کے لیے الگ سے ذیلی ایجنٹس (subagents) بنائیں۔ پائتھون (Python) سکرپٹس لکھیں جو RPC کے ذریعے ٹولز کو استعمال کریں، تاکہ کئی مراحل پر مشتمل کاموں کو بغیر کسی سیاق و سباق (context) کے خرچ کے، ایک ہی باری میں انجام دیا جا سکے۔ |
| کہیں بھی چلائیں، صرف اپنے لیپ ٹاپ پر نہیں | چھ (Six) ٹرمینل بیک اینڈز — لوکل، Docker، SSH، Singularity، Modal، اور Daytona۔ ڈیٹونا (Daytona) اور موڈل (Modal) سرور لیس (serverless) فعالیت پیش کرتے ہیں — جب آپ کا ایجنٹ فارغ ہوتا ہے تو اس کا ماحول سلیپ (hibernate) ہو جاتا ہے اور ضرورت پڑنے پر خود بخود جاگ جاتا ہے، جس کی وجہ سے سیشنز کے درمیان لاگت تقریباً صفر رہتی ہے۔ اسے $5 والے VPS یا GPU کلسٹر پر چلائیں۔ |
| تحقیق کے لیے تیار | بیچ (Batch) ٹریجیکٹری (trajectory) جنریشن، اگلی نسل کے ٹول کالنگ ماڈلز کی تربیت کے لیے ٹریجیکٹری کمپریشن۔ |