NeXuS Hydra — Action Report¶
2026-03-15 — Initial consolidation & Command Center build¶
What: Consolidated scattered NeXuS command center code into single clean repo at ~/git/nexus-hydra/. Built merged UI with WebSocket live traffic. Fixed config paths. Created host-side launcher.
Why: nexus-start.py is a container entrypoint (not a host launcher) and was always failing. The ultimate.html UI was 100% fake data. The real working FastAPI backend existed in Projects/nexus-network-stack/configs/command-center/command-center/ but had wrong data_dir path and no proper launch script.
How:
- Backed up Projects/nexus-network-stack to ~/backups/nexus-network-stack-<ts>/
- Copied entire FastAPI backend (main.py, config.py, models/, routers/, services/) to backend/
- Fixed config.py: data_dir now points to ~/git/nexus-hydra/configs; updated I2P containers to include nexus-i2p-http, nexus-i2p-udp; added nexus-ipfs-head1
- Built web/index.html — single-file UI, dark terminal theme, zero fake data:
- Dashboard with real network cards, failover chain visualization, auto-failover toggle
- Services tab with real container status from podman
- Routing tab with bypass rule CRUD (add/toggle/delete) + routing test
- Traffic tab with WebSocket live stream (/api/traffic/ws), HAProxy backend table
- API Docs tab with quick reference + Swagger/ReDoc links
- Created nexus-launch.sh — checks deps, starts podman socket, kills stale ports, starts FastAPI, health polls until ready, prints access URLs
- Created configs/bypass-rules.json with default routing rules (.onion→Tor, .i2p→I2P, Yggdrasil CIDR)
Files:
- backend/ — complete FastAPI app
- backend/config.py — fixed data_dir
- web/index.html — merged UI
- configs/bypass-rules.json — default rules
- nexus-launch.sh — host launcher
- docs/action_report.md — this file
Dependencies:
Install:pip3 install -r backend/requirements.txt
Known status at build time:
- nexus-tor and nexus-i2p containers: Up 23 minutes (starting) — bootstrap in progress
- All other containers: Exited (stopped)
- HAProxy: not running on host — traffic stats will show "No HAProxy data"
- Medusa containers (medusa-world, medusa-us, medusa-noeyes): managed separately via ~/scripts/nexus-medusa.sh
NeXuS Hydra Command Center — Initial Build (2026-03-15 00:01)¶
What: Consolidated scattered command center code into ~/git/nexus-hydra/. Working FastAPI backend + honest single-file UI with WebSocket live traffic. Why: nexus-start.py was failing (container entrypoint, not host launcher). ultimate.html was 100% fake data. Real backend existed but had wrong paths and no launcher. How: Copied FastAPI backend from Projects/nexus-network-stack/configs/command-center/command-center/, fixed config.py data_dir to ~/git/nexus-hydra/configs, built web/index.html (dark terminal theme, real API calls only, WebSocket /api/traffic/ws), created nexus-launch.sh host launcher. Files: backend/ (full FastAPI app), backend/config.py (fixed), web/index.html (merged UI), configs/bypass-rules.json (defaults), nexus-launch.sh, docs/action_report.md Dependencies: pip3 install -r backend/requirements.txt
Tor Exit Policy selector + collapsible sections + port display (2026-03-15 01:16)¶
What: Added Tor exit policy selector (World/US/No-Eyes), collapsible sections on all tabs, and port info on all network cards.
Why: Medusa profiles are really one service with three policies, not three separate networks. Users need to see which ports a service uses without digging into config.
How:
- Replaced 3 separate medusa-world/us/noeyes network entries with 1 'medusa' entry with a 'profiles' sub-dict and 'min_healthy: 1' (1-of-3 running = healthy)
- Added tor_exit_policy field to RoutingConfig model + load/save in rules_manager
- Added GET /api/routing/tor-policy and PUT /api/routing/tor-policy endpoints; PUT stops old container, calls nexus-medusa.sh
Files modified: - backend/config.py (medusa profiles, cleaned port annotations) - backend/models/rule.py (tor_exit_policy field) - backend/services/rules_manager.py (load/save/set tor_exit_policy) - backend/services/health_checker.py (_check_tcp, min_healthy, fixed container count) - backend/routers/routing.py (GET+PUT /tor-policy endpoints) - backend/routers/networks.py (pass ports in config field) - web/index.html (collapsible sections, policy selector, port display in cards)