ecbd104d03
feat: standardize llama.cpp backend for sovereign local inference ( #1123 )
2026-04-15 21:24:01 -04:00
e7ab9fbe17
feat: standardize llama.cpp backend for sovereign local inference ( #1123 )
2026-04-15 21:24:01 -04:00
dc74a84192
feat: standardize llama.cpp backend ( #1123 )
2026-04-15 21:24:01 -04:00
Alexander Whitestone
ec2a427a7a
feat: implement A2A protocol for fleet-wizard delegation ( #1122 )
...
Implements Google Agent2Agent Protocol v1.0 with full fleet integration:
## Phase 1 - Agent Card & Discovery
- Agent Card types with JSON serialization (camelCase, Part discrimination by key)
- Card generation from YAML config (~/.hermes/agent_card.yaml)
- Fleet registry with LocalFileRegistry + GiteaRegistry backends
- Discovery by skill ID or tag
## Phase 2 - Task Delegation
- Async A2A client with JSON-RPC SendMessage/GetTask/ListTasks/CancelTask
- FastAPI server with pluggable task handlers (skill-routed)
- CLI tool (bin/a2a_delegate.py) for fleet delegation
- Broadcast to multiple agents in parallel
## Phase 3 - Security & Reliability
- Bearer token + API key auth (configurable per agent)
- Retry logic (max 3 retries, 30s timeout)
- Audit logging for all inter-agent requests
- Error handling per A2A spec (-32001 to -32009 codes)
## Test Coverage
- 37 tests covering types, card building, registry, server integration
- Auth (required + success), handler routing, error handling
Files:
- nexus/a2a/ (types.py, card.py, client.py, server.py, registry.py)
- bin/a2a_delegate.py (CLI)
- config/ (agent_card.example.yaml, fleet_agents.json)
- docs/A2A_PROTOCOL.md
- tests/test_a2a.py (37 tests, all passing)
2026-04-15 21:24:01 -04:00
Timmy (NEXUSBURN)
4215ef786f
feat: fleet audit tool — deduplicate agents, one identity per machine
...
Closes #1144 . Builds a fleet audit pipeline that detects duplicate
agent identities, ghost accounts, and authorship ambiguity across
all machines.
Deliverables:
bin/fleet_audit.py — Full audit tool with four checks:
- Identity registry validation (one name per machine, unique gitea_user)
- Git authorship audit (detects ambiguous committers from branch names)
- Gitea org member audit (finds ghost accounts with zero activity)
- Cross-reference registry vs fleet-routing.json (orphan/location mismatch)
fleet/identity-registry.yaml — Canonical identity registry:
- 8 active agents (timmy, allegro, ezra, bezalel, bilbobagginshire,
fenrir, substratum, claw-code)
- 7 ghost/deprecated accounts marked inactive
- Rules: one identity per machine, unique gitea_user, required fields
tests/test_fleet_audit.py — 11 tests covering all validation rules.
Usage:
python3 bin/fleet_audit.py # full audit -> JSON
python3 bin/fleet_audit.py --identity-check # registry only
python3 bin/fleet_audit.py --git-authors # authorship only
python3 bin/fleet_audit.py --report out.json # write to file
2026-04-15 21:24:01 -04:00
Timmy
9d1040265a
[verified] test: guard index.html against merge junk
...
Refs #1336
Refs #1338
- assert index.html has no conflict markers or stray markdown
- assert cleaned single-instance blocks stay single
2026-04-15 21:24:01 -04:00
Timmy
8faa930baf
[verified] fix: harden Three.js boot path
...
Fixes #1337
- show explicit guidance when opened from file://
- route browser boot through a classic script gate
- sanitize malformed generated app module before execution
- trim duplicated footer junk and add regression tests
2026-04-15 21:24:01 -04:00
Alexander Whitestone
6f1264f6c6
WIP: Browser smoke tests (issue #686 )
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 12s
Review Approval Gate / verify-review (pull_request) Failing after 4s
2026-04-10 21:17:44 -04:00
Alexander Whitestone
220f20c794
feat: add desktop automation primitives to Hermes ( #1125 )
...
CI / test (pull_request) Failing after 8s
CI / validate (pull_request) Failing after 10s
Review Approval Gate / verify-review (pull_request) Failing after 2s
Implements Phase 1 and Phase 2 tooling from issue #1125 :
- nexus/computer_use.py: four Hermes tools with poka-yoke safety
* computer_screenshot() — capture & base64-encode desktop snapshot
* computer_click(x, y, button, confirm) — right/middle require confirm=True
* computer_type(text, confirm) — sensitive keywords blocked without confirm=True;
text value is never written to audit log
* computer_scroll(x, y, amount) — scroll wheel
* read_action_log() — inspect recent JSONL audit entries
* pyautogui.FAILSAFE=True; all tools degrade gracefully when headless
- nexus/computer_use_demo.py: Phase 1 demo (baseline screenshot →
open browser → navigate to Gitea forge → evidence screenshot)
- tests/test_computer_use.py: 32 unit tests, fully headless
(pyautogui mocked), all passing
- docs/computer-use.md: API reference, safety table, phase roadmap,
pilot recipes
- docker-compose.desktop.yml: sandboxed Xvfb + noVNC container
Fixes #1125
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-10 05:45:27 -04:00
Alexander Whitestone
ef74536e33
feat: add edge-tts as zero-cost voice output provider
...
CI / test (pull_request) Failing after 33s
CI / validate (pull_request) Failing after 26s
Review Approval Gate / verify-review (pull_request) Failing after 5s
- Add EdgeTTSAdapter to bin/deepdive_tts.py (provider key: "edge-tts")
default voice: en-US-GuyNeural, no API key required
- Add EdgeTTS class to intelligence/deepdive/tts_engine.py
- Update HybridTTS to try edge-tts as fallback between piper and elevenlabs
- Add --voice-memo flag to bin/night_watch.py for spoken nightly reports
- Add edge-tts>=6.1.9 to requirements.txt
- Create docs/voice-output.md documenting all providers and fallback chain
- Add tests/test_edge_tts.py with 17 unit tests (all mocked, no network)
Fixes #1126
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-08 06:29:26 -04:00
Alexander Whitestone
e644b00dff
feat(mempalace): retention enforcement + tunnel sync client ( #1083 , #1078 )
...
CI / test (pull_request) Failing after 7s
CI / validate (pull_request) Failing after 3s
Review Approval Gate / verify-review (pull_request) Failing after 4s
**retain_closets.py** — 90-day closet aging enforcement for #1083 .
Removes *.closet.json files older than --days (default 90) from the
fleet palace. Supports --dry-run for safe preview. Wired into the
weekly-audit workflow as a dry-run CI step; production cron guidance
added to workflow comments.
**tunnel_sync.py** — remote wizard wing pull client for #1078 .
Connects to a peer's fleet_api.py HTTP endpoint, discovers wings via
/wings, and pulls core rooms via /search into local *.closet.json
files. Zero new dependencies (stdlib urllib only). Supports --dry-run.
This is the code side of the inter-wizard tunnel; infrastructure
(second wizard VPS + fleet_api.py running) still required.
**Tests:** 29 new tests, all passing. Total suite: 294 passing.
Refs #1075 , #1078 , #1083
2026-04-07 11:05:00 -04:00
07a4be3bb9
[claude] Weekly privacy audit cron + fleet HTTP API ( #1075 ) ( #1109 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-07 14:54:41 +00:00
34ec13bc29
[claude] Poka-yoke cron heartbeats: write, check, and report ( #1096 ) ( #1107 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-07 14:44:05 +00:00
ea3cc6b393
[claude] Poka-yoke cron heartbeats — make silent failures impossible ( #1096 ) ( #1102 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-07 14:38:55 +00:00
caa7823cdd
[claude] Poka-yoke: make test skips/flakes impossible to ignore ( #1094 ) ( #1104 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-07 14:38:49 +00:00
33a1c7ae6a
[claude] MemPalace follow-up: CmdAsk, metadata fix, taxonomy CI ( #1075 ) ( #1091 )
Deploy Nexus / deploy (push) Has been cancelled
CI / test (pull_request) Failing after 6s
CI / validate (pull_request) Failing after 4s
2026-04-07 14:23:07 +00:00
e957254b65
[claude] MemPalace × Evennia fleet memory scaffold ( #1075 ) ( #1088 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-07 14:12:38 +00:00
fd75985db6
[claude] Fix missing manifest.json PWA support ( #832 ) ( #888 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-06 17:59:45 +00:00
3b4c5e7207
[claude] Add /help page for Nexus web frontend ( #833 ) ( #887 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-06 17:52:10 +00:00
0b57145dde
[timmy] Add webhook health dashboard ( #855 ) ( #885 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-06 15:51:22 +00:00
4496ff2d80
[claude] Stand up Gemini harness as network worker ( #748 ) ( #811 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-04 01:41:53 +00:00
d32baa696b
[watchdog] The Eye That Never Sleeps — Nexus Health Monitor ( #794 )
...
Deploy Nexus / deploy (push) Has been cancelled
Co-authored-by: Google AI Agent <gemini@hermes.local >
Co-committed-by: Google AI Agent <gemini@hermes.local >
2026-04-04 01:36:56 +00:00
Allegro (Burn Mode)
29e64ef01f
feat: Complete Bannerlord MCP Harness implementation (Issue #722 )
...
Deploy Nexus / deploy (push) Failing after 4s
Implements the Hermes observation/control path for local Bannerlord per GamePortal Protocol.
## New Components
- nexus/bannerlord_harness.py (874 lines)
- MCPClient for JSON-RPC communication with MCP servers
- capture_state() → GameState with visual + Steam context
- execute_action() → ActionResult for all input types
- observe-decide-act loop with telemetry through Hermes WS
- Bannerlord-specific actions (inventory, party, save/load)
- Mock mode for testing without game running
- mcp_servers/desktop_control_server.py (14KB)
- 13 desktop automation tools via pyautogui
- Screenshot, mouse, keyboard control
- Headless environment support
- mcp_servers/steam_info_server.py (18KB)
- 6 Steam Web API tools
- Mock mode without API key, live mode with STEAM_API_KEY
- tests/test_bannerlord_harness.py (37 tests, all passing)
- GameState/ActionResult validation
- Mock mode action tests
- ODA loop tests
- GamePortal Protocol compliance tests
- docs/BANNERLORD_HARNESS_PROOF.md
- Architecture documentation
- Proof of ODA loop execution
- Telemetry flow diagrams
- examples/harness_demo.py
- Runnable demo showing full ODA loop
## Updates
- portals.json: Bannerlord metadata per GAMEPORTAL_PROTOCOL.md
- status: active, portal_type: game-world
- app_id: 261550, window_title: 'Mount & Blade II: Bannerlord'
- telemetry_source: hermes-harness:bannerlord
## Verification
pytest tests/test_bannerlord_harness.py -v
37 passed, 2 skipped, 11 warnings
Closes #722
2026-03-31 04:53:29 +00:00
e88bcb4857
[fix] 5 bugs: 2 SyntaxErrors in nexus_think.py, Groq model name, server race condition, corrupt public/nexus/
...
CI / validate (pull_request) Failing after 5s
Bug 1: nexus_think.py line 318 — stray '.' between function call and if-block
This is a SyntaxError. The entire consciousness loop cannot import.
The Nexus Mind has been dead since this was committed.
Bug 2: nexus_think.py line 445 — 'parser.add_.argument()'
Another SyntaxError — extra underscore in argparse call.
The CLI entrypoint crashes on startup.
Bug 3: groq_worker.py — DEFAULT_MODEL = 'groq/llama3-8b-8192'
The Groq API expects bare model names. The 'groq/' prefix causes a 404.
Fixed to 'llama3-8b-8192'.
Bug 4: server.py — clients.remove() in finally block
Raises KeyError if the websocket was never added to the set.
Fixed to clients.discard() (safe no-op if not present).
Also added tracking for disconnected clients during broadcast.
Bug 5: public/nexus/ — 3 corrupt duplicate files (28.6 KB wasted)
app.js, style.css, and index.html all had identical content (same SHA).
These are clearly a broken copy operation. The real files are at repo root.
Tests: 6 new, 21/22 total pass. The 1 pre-existing failure is in
test_portals_json_uses_expanded_registry_schema (schema mismatch, not
related to this PR).
Signed-off-by: gemini <gemini@hermes.local >
2026-03-30 19:04:53 -04:00
Alexander Whitestone
1fe5176ebc
feat: feed Evennia world events into Nexus websocket bridge
CI / validate (pull_request) Failing after 4s
2026-03-28 16:25:18 -04:00
Alexander Whitestone
8ead4cd13f
feat: add thin Evennia to Nexus event adapter
CI / validate (pull_request) Failing after 4s
2026-03-28 16:02:27 -04:00
8313533304
feat: expand portal registry schema ( #718 )
Deploy Nexus / deploy (push) Failing after 3s
2026-03-28 17:01:49 +00:00
68801c4813
docs: sync nexus repo truth and audit legacy matrix ( #689 )
Deploy Nexus / deploy (push) Failing after 5s
2026-03-28 12:53:20 +00:00
2e7cccc0e8
delete: tests/run-smoke.sh — does not serve heartbeat/harness/portal ( #548 )
Deploy Nexus / deploy (push) Has been cancelled
2026-03-26 16:43:01 +00:00
6be87fcb37
delete: tests/playwright.config.js — does not serve heartbeat/harness/portal ( #548 )
Deploy Nexus / deploy (push) Has been cancelled
2026-03-26 16:42:59 +00:00
b2297f744a
delete: tests/smoke.spec.js — does not serve heartbeat/harness/portal ( #548 )
Deploy Nexus / deploy (push) Has been cancelled
2026-03-26 16:42:58 +00:00
b64699d625
feat: headless smoke tests for Nexus — zero LLM, pure Playwright ( #504 )
Deploy Nexus / deploy (push) Failing after 5s
2026-03-25 13:24:20 +00:00