zooqueen 06c2c01be2 the ring follows the composer's corner
Every chat drew a hard square outline 1.5px outside a 24px-rounded composer.

The ring is `.hz-composer::before` with `border-radius: inherit`, and the host
had nothing to inherit: postcss-preset-env inlines custom properties, keeps a
declaration whose value it can resolve — `padding` shipped as `1.5px` — and
DROPS one it cannot. `--hz-composer-radius` is `var(--radius-composer, 9999px)`,
a var pointing at a var, which it does not follow, so the package's
`border-radius: var(--hz-composer-radius)` never reached the bundle. The shipped
rule is `position:relative;isolation:isolate;padding:1.5px`. The halo escaped
only because `::after` computes `calc(radius + inset)`, which survived — which is
why the glow was round while the edge it sits outside was square.

A utility class is a literal and cannot be dropped, so the host wears the same
corner class the panel already wears. One value, stated once, in the file that
already held it. `--hz-composer-radius` stays, because the halo still derives its
wider corner from it.

Measured on the live page: host and ring 0px, and 24px once the host carries the
class.
2026-08-28 09:10:37 -07:00
2024-10-23 15:44:27 +05:30
2026-08-19 22:27:47 -07:00
2026-02-19 20:36:08 -08:00
2025-07-01 17:24:11 -07:00

Hanzo Chat

Hanzo Chat

The chat surface of the Hanzo AI cloud: multi-model chat with agents, tools, and retrieval, running on Hanzo's backend. Live at hanzo.chat.

Hanzo Chat is a sibling to hanzo.app (the app builder) and the Hanzo console (admin). All inference, code execution, and web search route through the unified Hanzo API at api.hanzo.ai/v1, and sign-in is federated to Hanzo IAM (hanzo.id).

Features

  • Multi-model chat — the Zen model family and other frontier models, served through api.hanzo.ai.
  • Agents — build agents in the thread, or run your Hanzo Cloud agents (/v1/agents) with an /agent command or @mention.
  • MCP tools — connect Model Context Protocol servers for tool use.
  • RAG — chat over your own files and documents.
  • Web search — grounded answers via Hanzo web search.
  • Code interpreter — run code in a sandboxed runtime.
  • Image generation — generate images inline.
  • Guest chat — try a free Zen model with no account (optional, off by default).

Requirements

Quick start (Docker)

git clone https://github.com/hanzoai/chat.git
cd chat
cp .env.example .env        # set HANZO_API_KEY
make up

Open http://localhost:3080. make up starts the full stack (app, MongoDB, Meilisearch) from compose.yml; make down stops it.

Development

pnpm install               # install workspace dependencies
pnpm build:packages        # build the shared workspace packages
pnpm backend:dev           # API server on :3080 (nodemon)
pnpm frontend:dev          # Vite client dev server (second terminal)

Tests and checks:

pnpm test:all              # all workspace tests
pnpm e2e                   # Playwright end-to-end tests
pnpm lint                  # ESLint
pnpm format                # Prettier

Configuration

Secrets live in .env; the model catalog and endpoints live in chat.yaml (copy chat.example.yaml). Key variables:

HANZO_API_KEY=             # Hanzo API key — inference, tools, search
MONGO_URI=                 # MongoDB connection — chat history, users
JWT_SECRET=                # session token signing
CREDS_KEY=                 # credential encryption
CREDS_IV=

Sign-in is federated to Hanzo IAM over OpenID Connect (OPENID_ISSUER=https://hanzo.id, client hanzo-chat).

Workspace

api/           Express backend (:3080) — routes, controllers, Mongoose models
client/        React frontend (Vite)
packages/      data-provider · data-schemas · api · client · agents · mcp

Documentation

License

MIT — see LICENSE and NOTICE.

S
Description
Hanzo Chat — free, single-player AI chat with every model. Open source.
Readme
1.1 GiB
Languages
TypeScript 99.5%
HTML 0.5%