capture follow-up: OAuth2 token provisioning for Crush / Pi / LLM Council #63

Open
opened 2026-06-23 05:44:45 +00:00 by mathias · 0 comments
Owner

Parent epic: #49 (capture, complete, v0.11.0) · deferred follow-up

Scope

Define and wire OAuth2 token provisioning for the non-library, non-claude.ai harnesses so they can call the capture MCP relay / REST endpoint: Crush, Pi, LLM Council (Open WebUI). claude.ai is already done (rides the existing Dex/oauth/token connector; its subject resolves to us-nexus).

Context

capture shipped with the relay live for claude.ai via the existing /mcp OAuth connector. The other non-library harnesses need their own credential path to reach it. This is the "bounded per-harness quirk" flagged in #49 and #55 — deferred deliberately so the epic could close on the claude.ai path.

Each harness needs a credential whose authenticated principal resolves correctly through the server-derived origin logic (a control input, not caller-asserted) and lands in the right trust zone:

  • Crush / Pi run locally on sovereign hardware → should resolve sovereign (allowlisted in BRAIN_CAPTURE_SOVEREIGN_PRINCIPALS), so confidential capture is permitted.
  • LLM Council (Open WebUI) → resolve per where it runs; default us-nexus unless explicitly sovereign-allowlisted.

What to do (per harness — may split into sub-issues)

  • Crush: client-credential / token path; add its principal to the sovereign allowlist if appropriate.
  • Pi: same.
  • LLM Council / Open WebUI: token path via its MCP support (Open WebUI supports MCP); determine its trust zone.

Acceptance

  • Crush can call capture with a valid principal; trust zone correct
  • Pi can call capture with a valid principal; trust zone correct
  • LLM Council can call capture; trust zone determined + documented
  • Each harness's principal → origin → trust-zone mapping verified (confidential refused where us-nexus, allowed where sovereign)
  • BRAIN_CAPTURE_SOVEREIGN_PRINCIPALS updated for the sovereign-resident harnesses
  • Secret-handling respected (tokens via env/1P, never argv/logs)

Related

  • #49 (capture epic), #55 (relay), specs/capture-implementation-report.md (env reference: BRAIN_CAPTURE_SOVEREIGN_PRINCIPALS)
  • brain decisions/gate-on-server-derived-signals-fail-safe
**Parent epic:** #49 (capture, complete, v0.11.0) · deferred follow-up ## Scope Define and wire OAuth2 token provisioning for the non-library, non-claude.ai harnesses so they can call the `capture` MCP relay / REST endpoint: **Crush, Pi, LLM Council (Open WebUI)**. claude.ai is already done (rides the existing Dex/`oauth/token` connector; its subject resolves to us-nexus). ## Context `capture` shipped with the relay live for claude.ai via the existing `/mcp` OAuth connector. The other non-library harnesses need their own credential path to reach it. This is the "bounded per-harness quirk" flagged in #49 and #55 — deferred deliberately so the epic could close on the claude.ai path. Each harness needs a credential whose authenticated principal resolves correctly through the **server-derived origin** logic (a control input, not caller-asserted) and lands in the right trust zone: - Crush / Pi run locally on sovereign hardware → should resolve **sovereign** (allowlisted in `BRAIN_CAPTURE_SOVEREIGN_PRINCIPALS`), so confidential capture is permitted. - LLM Council (Open WebUI) → resolve per where it runs; default us-nexus unless explicitly sovereign-allowlisted. ## What to do (per harness — may split into sub-issues) - **Crush:** client-credential / token path; add its principal to the sovereign allowlist if appropriate. - **Pi:** same. - **LLM Council / Open WebUI:** token path via its MCP support (Open WebUI supports MCP); determine its trust zone. ## Acceptance - [ ] Crush can call `capture` with a valid principal; trust zone correct - [ ] Pi can call `capture` with a valid principal; trust zone correct - [ ] LLM Council can call `capture`; trust zone determined + documented - [ ] Each harness's principal → origin → trust-zone mapping verified (confidential refused where us-nexus, allowed where sovereign) - [ ] `BRAIN_CAPTURE_SOVEREIGN_PRINCIPALS` updated for the sovereign-resident harnesses - [ ] Secret-handling respected (tokens via env/1P, never argv/logs) ## Related - #49 (capture epic), #55 (relay), `specs/capture-implementation-report.md` (env reference: `BRAIN_CAPTURE_SOVEREIGN_PRINCIPALS`) - brain `decisions/gate-on-server-derived-signals-fail-safe`
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mathias/hyperguild#63