Bead: Stephenguerin.live Router Bead

**Bead** `82bd6fa4-4d5a-435b-9deb-ca930a82aa89` · [canonical URI](https://redfish.acequia.io/guerin/.agents/82bd6fa4-4d5a-435b-9deb-ca930a82aa89/) · discussion: Talk: Stephenguerin.live Router Bead This page is the wiki facet of a [bead](https://redfish.acequia.io/guerin/.agents/); the bead is the source of truth.

## Identity - **URI:** https://redfish.acequia.io/guerin/.agents/82bd6fa4-4d5a-435b-9deb-ca930a82aa89/ - **Local origin:** `sites/redfish.acequia.io/guerin/.agents/82bd6fa4-4d5a-435b-9deb-ca930a82aa89/` - **GUID:** `82bd6fa4-4d5a-435b-9deb-ca930a82aa89` - **Slug:** `stephenguerin-live-router` - **Created:** 2026-06-13 - **Birth-parent bead:** [`7049c694-e45b-4116-a887-49e64885ac8e`](https://redfish.acequia.io/guerin/.agents/7049c694-e45b-4116-a887-49e64885ac8e/about.md) (home-port-forward hosting) — this bead was hatched out of that one's stage-1 work. - **Animated by:** CE (Claude Code extension), invoked by Stephen.

## Motivation (Why a GUID) A **design-task / live-agent bead**: it *is* the purpose-built router/handler served at `https://stephenguerin.live/` (`:3500` behind Caddy). Separate from its birth-parent because the parent (`7049c694`) **documents the hosting infrastructure**, whereas this bead **is the served agent** — its own identity, `handler.mjs`, and agent-face. Bead-first by design: the bead is the config + logic (source of truth, portable); the node runtime is a thin generic harness that binds to it ("the bead is config; the animator is runtime"). It is the concrete instance of the [bead-as-webdav-handler §8-Q7 router-as-bead](https://redfish.acequia.io/guerin/.agents/fe7fbaf5-4c47-43b6-be1b-2f6ca15e8bfa/2026-06-11/notes/bead-as-webdav-handler.md).

## Mechanism (What this bead does) Carries the agent-face: `agent.md` (operative self), `agent.json` (machine twin + handler block), `handler.mjs` (deterministic rung-0 dispatcher), `names.json` (mount table / router seed). The generic node runtime [`server.js`](2026-06-13/artifacts/server.js) (dependency-free, in `artifacts/`) loads this bead and serves `handle(req, ctx)` over HTTP `:3500`; it adds static passthrough, the dock `202` lane, and the **resolve-and-wait** bridge over a hand-rolled WebSocket cognition channel ([example-cognition-client.mjs](2026-06-13/artifacts/example-cognition-client.mjs)). **No live LLM, no cloud key on the host** — cognition is brought by an inward-connecting client (its own BYOK key). What does NOT go here: cloud API keys; third-party site content. **LIVE:** served at `https://stephenguerin.live/` since 2026-06-13 via the `stephenguerin-live-origin` NSSM service (`node server.js <this-bead> 3500`, runtime staged at `C:\caddy\origins\stephenguerin.live\`), behind Caddy TLS.

## Folder Layout ``` 82bd6fa4-4d5a-435b-9deb-ca930a82aa89/ ├── about.md README.md agent.md agent.json ├── handler.mjs names.json keywords.json ├── uploads/ (inbound dock) └── 2026-06-13/ ├── notes/00-router-bead-brief.md (read first — the runtime contract + server.js pattern) ├── chats/2026-06-13-router-bead-birth.md ├── artifacts/ server.js example-cognition-client.mjs package.json └── skills/ (empty) ```

## Session Log - **2026-06-13 — bead hatched (CE, for Stephen), parent `7049c694`.** Seeded `agent.md` + `agent.json` + deterministic `handler.mjs` (rung-0, OPTIONS/GET-negotiate/PUT-dock-202/passthrough) + `names.json` + brief note. Captured Stephen's runtime directive: server.js resolves a request to a **bead URI and waits for the response** (sync HTTP bridged to async bead handling). - **2026-06-13 — `server.js` built + tested, then GO-LIVE.** Wrote the generic dependency-free `server.js` runtime (agent-face + static + dock + resolve-and-wait + hand-rolled RFC-6455 WebSocket) and `example-cognition-client.mjs`; verified end-to-end on `:3501` (incl. `/ask` 200-with-client / 202-without). Re-pointed the `stephenguerin-live-origin` NSSM service to `node server.js <this-bead> 3500`. **`https://stephenguerin.live/` now serves this bead's agent-face** over Caddy TLS (verified `/_status`, `OPTIONS`, negotiated `GET`). Host holds no key; cognition = inward WS client. - **2026-06-16 — Liaison Officer (cognition rung) built (CE, for Stephen).** Per Stephen's directive, named the network's cognition client the ICS **Liaison Officer** for the **Hubler** Network (the ecology's name). `liaison-officer.mjs` (staged at `C:\caddy\origins\stephenguerin.live\`, provenance copy in [`2026-06-16/skills/liaison-officer/`](2026-06-16/skills/liaison-officer/)) = the reference stub with the deterministic echo replaced by a real **Messages API** call (dependency-free `fetch`, `claude-opus-4-8`, thinking off + final-answer-only, 22s abort under the 25s host deadline, BYOK from `ANTHROPIC_API_KEY` — refuses to start without it). Verified: parses; refuses without a key; **completes the WS handshake against live `:3500` and receives `hello`**. Live model round-trip unverified (placeholder key on disk + first-client-wins dispatch). Design + ICS framing: [`2026-06-16/notes/00-liaison-officer.md`](2026-06-16/notes/00-liaison-officer.md).

## Modus Operandi (How to interact) - **Read first:** `2026-06-13/notes/00-router-bead-brief.md`. - Agent-face: `OPTIONS /` → capability; `GET /` with `Accept: application/json|text/markdown|text/html`; dock `PUT /uploads/` → `202`. - New runtime/design concepts → `notes/`; the runnable runtime, once built → `artifacts/` (or a sibling repo). Cross-bead refs use absolute `https://` URIs. - Credential rule is **load-bearing here** (internet-facing): provider API key never a subscription; here, **no key at all** on the host. See [EULA-compliance](https://redfish.acequia.io/skills/EULA-compliance.md).

## Capabilities Cite this bead for: a worked deterministic router-bead; the agent-face served live; the rung-0 + inward-cognition-client pattern. It does NOT itself think with a model or hold credentials.

## Lifecycle - **Energization:** charged while it is being built and while it serves `stephenguerin.live`. - **Apoptosis:** fades to its static file/folder face when the animator sleeps; the `202` dock persists.

## Limitations - Rung-0 only by itself; any cognition is external (a connecting client) — none is connected by default, so `/ask`-class requests currently fall back to `202` until a cognition client is attached. - The served `server.js` is staged at `C:\caddy\origins\stephenguerin.live\` and the service points at this bead's **local origin** path; if that path moves, update the service. The stage-0 `origin-server.mjs` placeholder remains as a fallback.

## Related - Birth-parent: [`7049c694`](https://redfish.acequia.io/guerin/.agents/7049c694-e45b-4116-a887-49e64885ac8e/about.md) — esp. [01-origin-as-animator.md](https://redfish.acequia.io/guerin/.agents/7049c694-e45b-4116-a887-49e64885ac8e/2026-06-13/notes/01-origin-as-animator.md). - Design: [bead-as-webdav-handler](https://redfish.acequia.io/guerin/.agents/fe7fbaf5-4c47-43b6-be1b-2f6ca15e8bfa/2026-06-11/notes/bead-as-webdav-handler.md) · protocol: [beads.md](https://redfish.acequia.io/guerin/.agents/beads.md).

## References (bead cross-links) - Bead: Home Port Forward Hosting · [canonical](https://redfish.acequia.io/guerin/.agents/7049c694-e45b-4116-a887-49e64885ac8e/) - Bead: As Webdav Handler · [canonical](https://redfish.acequia.io/guerin/.agents/fe7fbaf5-4c47-43b6-be1b-2f6ca15e8bfa/)

See all: Beads