Start

Local demo

The GozWire demo is a developer playground. It is not a consumer chat product and it will not start in production.

The demo is a local developer playground: an Express host and a Svelte UI. It shows how to host @gozwire/core. It is not a consumer chat product, not part of the npm package, and it refuses to start when engine.environment is production.

Identity is simulated with the x-user-id header. The engine still authorizes against membership, rate limits, and policy. The demo does not implement accounts, SSO, or sessions.

Run it

cp .env.example .env
docker compose up --build

Open http://localhost:3000.

On start the server upserts four identities: Alice, Bob, Carol, and Dana. The sidebar Acting as control switches x-user-id.

What the pages are for

PagePurpose
DashboardHealth lights for PostgreSQL, Redis, Centrifugo, object storage, moderation, the engine, and outbox counts
ChatDirect chats, channels, forums, send, threads, reactions, receipts, attachments, mute
UsersSeeded identities and profile-picture upload
ConversationsCreate a group, channel, or forum
MediaAttachments the current user can see
ModerationCursor-paginated jobs, preview, allow or block
ConfigurationModeration on/off, Web Push, and public engine config
EventsRecent outbox rows waiting for Centrifugo (admin)
MetricsCounters from this demo process
BenchmarksSequential local sends. Not a capacity claim

A send can succeed while realtime is down: PostgreSQL committed; the outbox retries later.

Public engine config

GET /api/config is a host-safe slice of engine config: limits, policy, and enablement. Credentials, private keys, and internal endpoints are omitted. You can read textPolicy and imagePolicy. You cannot edit thresholds from the UI.

Limits

  • Do not put this demo on the public internet with these auth rules.
  • The Users page lists seeded identities only.
  • The Benchmarks page is a small sequential loop. Use repository benchmarks/ for measured runs.

See installation and troubleshooting.