mara on #2: the canonical upstream now lives at
`forge.darkest.space/hyperhive/website.git`. Added a `git clone`
line to the Build section so the README walks a fresh contributor
from clone → build with no detour through the issue tracker to
find the URL.
mara on PR #1: \"add AI generated note to README (in vibec0re
style)\".
Block-glyph banner in the same `░▒▓█▓▒░` rendering as the
dashboard chrome + agent terminals (\`hyperhive/branding/...\`
fingerprint), plus a short prose disclosure noting that copy /
theme / layout / flake here are AI-authored by an agent in the
swarm itself, reviewed by the operator before merge. Hex motif
art stays attributed upstream (hand-drawn).
Visual rhyme is intentional — the website's identity is the
swarm rendering its own door, and the disclosure should read in
that voice instead of legalese.
mara on PR #1: "remove issue link from readme, that does not
matter once project is up".
Dropped:
- The `Tracks [hyperhive#502](...)` line at the top — the
project is the project, the tracking issue's relevance
expires once it's live.
- The `## Repo provenance` section at the bottom — entirely
workaround context (iris/website → hyperhive/website org
transfer) that becomes stale as soon as the move happens.
Cleaner to delete than to keep a paragraph that ages out
of accuracy in a few hours.
argus 🟡 follow-up — the README still pointed at
`localhost:3000` for the issue cross-reference. Same fix as the
templates: use the future-canonical `forge.darkest.space` URL so
nothing changes when the mirror goes live.
mara on PR #1: \"never use flake utils - look at hyperhive flake\".
Rewrote the flake to mirror hyperhive's pattern:
- Single `nixpkgs` input (no `flake-utils`, no `treefmt-nix`,
no `naersk` — none apply to a static-site dist).
- Hand-rolled `forAllSystems` over `[aarch64-linux, x86_64-linux]`
via `lib.genAttrs`. Same shape as `hyperhive/hyperhive`'s flake
so contributors see consistent ceremony across both repos.
- `packages.<system>.website` builds the dist; `packages.<system>.default`
points at it. `devShells.<system>.default` exposes `zola` for the
`zola serve` dev loop.
- Dropped the `apps.default` shortcut — `zola serve` is more usefully
spelled `nix develop -c zola serve` since dev needs the whole shell
anyway.
Also dropped the auto-generated flake.lock that the old
flake-utils tree had written; nix will regenerate it on first
`nix build` against the new inputs.
mara on PR #1: "you can hard code upstream repo URL with
forge.darkest.space - that does not exist _yet_, but will have
hyperhive/hyperhive at some point". Hardcoding the future URL
now means no template / config churn when the mirror goes live —
only DNS + web wiring on the operator's side.
Addresses two review notes on PR #1:
**argus 🔴**: hardcoded `http://localhost:3000/hyperhive/hyperhive`
is meaningless to a public visitor at hyperhive.darkest.space.
Moved to `[extra] forge_url` in config.toml so it's swappable
without touching templates. Both consumer sites now reference
`{{ config.extra.forge_url }}`:
- `templates/base.html` — footer "code on the forge" link
- `templates/index.html` — hero CTA button
Default value points at the operator's current public mirror
(`git.berlin.ccc.de/vinzenz/hyperhive`); update when a canonical
hyperhive/hyperhive mirror lands.
**mara**: README now has a Deploy section with a minimal nginx
virtual-server example for serving the dist at
hyperhive.darkest.space, plus a one-liner NixOS module variant
for operators using the nginx module. Both stay self-contained
(no TLS termination boilerplate, no rewrites, no proxy_pass).
mara nit on #1: the three SVGs in static/ were identical copies
(md5 1108d7bd79ca…). Dropped favicon.svg + hex-mark.svg; kept
hyperhive.svg as the single source. Both consumers now point at
it: `<link rel="icon">` and the hero's `load_data(path="static/
hyperhive.svg", format="plain")`.
Also fixed: the original `load_data(path="hex-mark.svg")` would
have failed at build time anyway — Zola's `load_data` resolves
from project root, so files in `static/` need the full prefix
+ `format="plain"` to come back as raw markup. Build was never
validated locally (remote-builder unreachable from agent), so the
typo would have surfaced on the operator's first `nix build`.
Caught it during the dedupe pass.
If a future visual divergence is wanted (simpler favicon,
titled og:image), can split back into named copies then.
Tracks hyperhive#502 — landing-only first cut. Static site
generator: Zola (Rust, fits the swarm's stack and the operator's
"sounds exciting" go-ahead on the issue thread).
## Structure
- `flake.nix` — `nix build .#website` produces the dist; `nix
develop` drops into a shell with zola for `zola serve` live
reload. No CI runner; the flake is the validation contract.
- `config.toml` — Zola config; base URL `hyperhive.darkest.space`
per #502. Single-page landing — feeds / search index off.
- `content/_index.md` — landing copy. Editable without touching
templates so non-engineers can refresh prose.
- `templates/base.html` + `templates/index.html` — base layout +
landing-specific extension. og:tags + favicon wired through.
- `sass/main.scss` — theme. Catppuccin Mocha palette + the amber
accent from the swarm's identity hex mark. Self-contained
(no @import) so the file is reviewable in one place.
- `static/{favicon,hex-mark,hyperhive}.svg` — copies of the
dashboard's `branding/hyperhive.svg` (hex motif). Used as
favicon, hero inline, and og:image respectively.
## Theme
Monospace identity throughout — matches dashboard / agent
terminals so the website reads as part of the same family
rather than a separate marketing artifact. Banner glyphs
(`░▒▓█▓▒░`) on the title, dashed dividers, cyan/mauve/amber
accents, glow text-shadow on the hero. Subtle CSS-only pulse
on the hex motif (slow `rotate` on the SVG; speeds up on hover
for a small "noticed" cue).
## Three-column "what's inside"
`the swarm` / `the dashboard` / `the boundary` — quick
orientation for visitors who clicked through from a link
without context. Copy intentionally short; deep dives belong
in /docs (future, not in this MVP).
## Scope drop
Per mara on #502:
- no nav / blog / docs yet — landing only
- no screenshots in MVP, follow via issues in this repo
- public visibility
## Provenance
Scaffolded under `iris/website` because my agent forge token
doesn't carry org-admin to create repos under `hyperhive/`.
Manager confirmed their token doesn't either; mara will do the
org transfer once she gets to it. README documents this.