Consortium starter pipeline — ceremony orchestrator + governance UI
Find a file
Tyler J King c0959a5376 feat(guildhall): minimum viable guildhall — OIDC, guilds, schematics, members
Implements the full founding-guild onboarding stack across four phases:

Phase A — Keycloak OIDC auth pipeline (oidcc) + guild registration with
ceremony-engine approval (SingleApproval, hub operator approves via gRPC).
Phase B — Founding schematic templates (MSP/ISV/NSP TOML), gRPC clients
for ceremony-service and ffc-schematic-server, schematic fork/bind/realize
LiveView with DB audit trail in guild_schematics.
Phase C — RealizationPoller GenServer polling realization status every 5s,
PubSub broadcast, live realization dashboard showing 7 reconciler sections.
Phase D — Self-service member onboarding (join request → guild master
approval via ceremony), member management LiveView, auto-create guild
master on guild approval via Ecto.Multi transaction.

Includes K8s manifests for ceremony-service (port 50053) and
ffc-schematic-server (port 9091) as ClusterIP services, plus updated
guildhall deployment with OIDC and gRPC service URL env vars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Tyler J King <tking@guildhouse.dev>
2026-05-15 15:03:50 -04:00
.forgejo/workflows docs: README, runtime config, CI placeholder 2026-04-18 07:23:08 -04:00
apps feat(guildhall): minimum viable guildhall — OIDC, guilds, schematics, members 2026-05-15 15:03:50 -04:00
config feat(guildhall): minimum viable guildhall — OIDC, guilds, schematics, members 2026-05-15 15:03:50 -04:00
k8s feat(guildhall): minimum viable guildhall — OIDC, guilds, schematics, members 2026-05-15 15:03:50 -04:00
.dockerignore feat(deploy): Dockerfile + k8s manifests for Talos deployment 2026-04-22 04:00:40 -04:00
.formatter.exs feat: scaffold guildhall Elixir umbrella 2026-04-18 07:09:20 -04:00
.gitignore feat: scaffold guildhall Elixir umbrella 2026-04-18 07:09:20 -04:00
AGENTS.md feat: scaffold guildhall Elixir umbrella 2026-04-18 07:09:20 -04:00
DEPLOY-EXPLORATORY-2026-04-21.md docs(deploy): capture exploratory reports for Talos + Forgejo registry 2026-04-22 09:01:20 -04:00
DEPLOY-RUNBOOK.md feat(deploy): Dockerfile + k8s manifests for Talos deployment 2026-04-22 04:00:40 -04:00
Dockerfile feat(deploy): Dockerfile + k8s manifests for Talos deployment 2026-04-22 04:00:40 -04:00
FORGEJO-REGISTRY-INVESTIGATION-2026-04-21.md docs(deploy): capture exploratory reports for Talos + Forgejo registry 2026-04-22 09:01:20 -04:00
mix.exs fix(deploy): add releases: config for umbrella release 2026-04-22 09:39:49 -04:00
mix.lock feat(guildhall): minimum viable guildhall — OIDC, guilds, schematics, members 2026-05-15 15:03:50 -04:00
README.md docs: README, runtime config, CI placeholder 2026-04-18 07:23:08 -04:00

Guildhall

Ceremony orchestrator and governance UI — Elixir/Phoenix umbrella over substrate CRDs.

guildhall presents and coordinates; substrate decides and enforces. The ceremony engine is a Rust Kubernetes operator with CRDs and etcd-backed state. guildhall is the orchestrator: it coordinates humans around those CRDs — notifying witnesses, collecting signatures via LiveView, tracking status, rendering dashboards.

┌────────────────────────────────────────────────────────┐
│ SUBSTRATE (Rust, K8s operators) — decides + enforces    │
│   CeremonyEngine (CRD), AccordEvaluator (CRD),          │
│   CorpusReconciler (CRD), PostureEvaluator (CRD),       │
│   Chronicle collector (agent)                           │
└────────────────────┬───────────────────────────────────┘
                     │ watches CRDs + emits Chronicle events
                     ▼
┌────────────────────────────────────────────────────────┐
│ GUILDHALL (Elixir/Phoenix) — orchestrates + presents    │
│   CeremonyOrchestrator (workflow coordinator)           │
│   AccordComposer (UI + submission)                      │
│   ArtifactBrowser (UI + lifecycle)                      │
│   PostureDashboard (visualization)                      │
│   ChronicleConsumer (projector + UI)                    │
└────────────────────────────────────────────────────────┘

Naming discipline: guildhall components are orchestrators (workflow, coordination, presentation). The substrate components are engines and reconcilers (enforcement, state-machine advancement). Never call a guildhall component by a substrate name.


Umbrella apps

App Role
guildhall_web Phoenix LiveView UI — dashboards, ceremonies, artifacts, posture
guildhall_orchestrator Watches substrate CRDs (future), notifies witnesses, broadcasts ceremony status over PubSub
guildhall_ops_db Ecto schemas for the five Ops DB tables (per DESIGN-OPS-DB-CHAIN-OF-CUSTODY-0001)
guildhall_graph_bridge Microsoft Graph API reconciler — Intune deployment (stub)
guildhall_chronicle Chronicle event consumer + Ops DB projector (stub)

Local development

Prerequisites

  • Elixir 1.17.x + OTP 27 (via mise or asdf)
  • Postgres 14+ running on localhost:5432 with a postgres superuser (password postgres for dev)

First-time setup

mix deps.get
mix ecto.create
mix ecto.migrate
mix run apps/guildhall_ops_db/priv/repo/seeds.exs

Run the server

mix phx.server

Then visit:

Run tests

mix test

Configuration

Development defaults are in config/dev.exs (Postgres at localhost:5432 as postgres/postgres, database guildhall_dev). Production runtime configuration reads from environment variables in config/runtime.exs:

Env var Purpose
DATABASE_URL Postgres connection (required in prod)
SECRET_KEY_BASE Phoenix cookie/session signing (required in prod)
PHX_HOST Public hostname (default guildhall.guildhouse.dev)
PHX_SERVER Set to true to run the HTTP server under mix release
POOL_SIZE DB pool size (default 10)
ECTO_IPV6 Set to true for IPv6 DB connections

Commented placeholders exist for future sprints: KUBECONFIG (substrate CRD watcher) and OIDC_ISSUER / OIDC_CLIENT_ID / OIDC_CLIENT_SECRET (Keycloak auth).


Relationship to the rest of the stack

guildhall is one of the PaaS components (ROADMAP WS1). It sits alongside:

  • substrate — the governance Rust crates + K8s operators
  • bxnet-ops — the org-ops CLI framework (reference fork: BXNet)
  • guildhouse-mcp — MCP server for LLM mediator context
  • guildhouse-specs — the FFC specifications

See the design docs for the full picture:


License

Apache 2.0.