zooqueenandHanzo Dev 9da398459e
Hanzo CI/CD / cicd (push) Successful in 4m54s
CI/CD / cicd (push) Successful in 5m24s
deps: iam 0.21.6 — the SDK whose storage default survives prerender
The previous commit dropped console's explicit `storage: sessionStorage` so the
session would be shared across tabs, and the build died on the next push:

  Error occurred prerendering page "/auth/callback"
  ReferenceError: sessionStorage is not defined

`^0.21.2` resolved to a build whose default was the bare global
`config.storage ?? sessionStorage`, evaluated in the IAM constructor. In a
browser that is merely the wrong lifetime; under Next's static export it runs in
Node, where the identifier does not exist at all, so the constructor threw and
the export exited. Passing `sessionStorage` explicitly had been masking it —
the callback page constructs the SDK at module scope, and the value it passed
was the client-side one Next never evaluates on the server.

0.21.6 resolves storage through a guarded probe (`typeof localStorage`, then an
actual write, since privacy modes expose the object and throw on setItem) and
falls back to an in-memory Storage. So prerender gets a real object, the browser
gets localStorage, and neither needs a caller to know which one it is.

The caret already permitted 0.21.6; the lockfile is what pinned 0.21.2, which is
why CI installed the broken one while a local `pnpm install` would not have.
Verified by running the export that failed: 13/13 static pages, /auth/callback
among them.

Co-authored-by: Hanzo Dev <dev@hanzo.ai>
2026-08-03 17:18:58 -07:00

console2

Hanzo Cloud Console

Unified admin console for Hanzo Cloud and all Hanzo cloud products. Built on @hanzo/gui (cross-platform UI) over the unified /v1 backend (hanzoai/cloud). Dark theme, OIDC sign-in via Hanzo IAM.

Manages: Providers · Models · Applications · Stores · Chat — with an extensible product-module registry so every cloud product can be added as a module.

Quick start

npm install
cp .env.example .env.local
# set NEXT_PUBLIC_IAM_CLIENT_ID for live sign-in; defaults point at production.
npm run dev          # http://localhost:4000

Scripts

Script What
npm run dev Dev server on :4000
npm run build Production build (type-checks; Gui CSS injected at runtime)
npm run start Serve the production build
npm run typecheck tsc --noEmit (strict)

Configuration

All config is NEXT_PUBLIC_* (browser app, cookie auth). See .env.example.

Var Default Meaning
NEXT_PUBLIC_CLOUD_URL same origin, else https://api.hanzo.ai The ONE Hanzo API endpoint (unified /v1 backend). Never a per-service API host.
NEXT_PUBLIC_IAM_URL https://iam.hanzo.ai Hanzo IAM OIDC authority
NEXT_PUBLIC_IAM_APP_NAME hanzo-console IAM application (<org>-<app>)
NEXT_PUBLIC_IAM_ORG_NAME hanzo IAM organization
NEXT_PUBLIC_IAM_CLIENT_ID OAuth client id

Architecture

See LLM.md for the full design (base choice, /v1 client, auth flow, the product-module registry, and the Providers surface). Endpoint reference in docs/endpoints.md.

License

BSD-3-Clause. Copyright (c) 2026-present, Hanzo AI, Inc.

S
Description
No description provided
Readme
88 MiB
Languages
TypeScript 99.1%
JavaScript 0.5%
CSS 0.4%