| Filename | Latest commit message | Latest commit date |
|---|---|---|
The gateway answered every non-page request without a session with a login redirect, which fetch and EventSource cannot follow across origins, so polls, forms and streams failed with errors that said nothing about the session. It now answers anything that does not ask for text/html with a 401 and a WWW-Authenticate header, and the swarm UI reloads on that 401, from a wrapped fetch (one place for every call) and from a probe after a stream dies. A second reload within ten seconds is skipped so a page that keeps answering 401 cannot loop. The proxy test and the docs follow. |
||
| .. | ||
| packages | ||
| .gitignore | ||
| npm-deps-hash | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
hyperhive frontend
npm workspaces project for the hyperhive browser-facing assets:
packages/shared/— shared modules used by every surface (terminal pane, Catppuccin palette + body typography).packages/dashboard/— the hive-c0re dashboard SPA.packages/agent/— the per-container web UI (default agent page, stats, screen).packages/swarm-ui/— the swarm-level operator UI shell (hives, agents, jobs, issue-report pages).
Build
npm install # one-off; uses the checked-in package-lock.json
npm run build # builds every workspace into packages/*/dist/
The Rust binaries serve packages/dashboard/dist/ and
packages/agent/dist/ via tower_http::ServeDir at runtime;
nix/packages/frontend.nix wires up the build derivation. The
services.hyperhive.agent.frontend.extraFiles option in agent.nix
layers per-agent additions on top of the default agent dist.
Why npm + esbuild
- Hermetic: dependencies vendored via the checked-in lockfile;
buildNpmPackagein nix uses it as the source-of-truth so the output is reproducible without network access at build time. - esbuild:
agentandswarm-uiare Preact apps;dashboardis a vanilla-JS + custom-element MPA with a few Preact-rendered pages (builds.js,agents.js, imported by the dashboard entry);sharedholds both kinds of module. No framework runtime beyond Preact where it's used. Each workspace'sbuild.mjsis a short esbuild script. - Single-PR migration: see the tracked design proposal and the four-commit shape (npm scaffold → nix derivations → container plumbing → Rust cutover).