Operate

Troubleshooting

Common GozWire failures: outbox backlog, unknown Centrifugo channels, presigned uploads, push defaults, and retention rejects.

Sends succeed but nobody receives events. Check outbox pending. A growing backlog means Centrifugo or the worker is failing. Messages are still in PostgreSQL.

Centrifugo 102 unknown channel. Publish and subscribe must use the namespaced name (conversation:…).

Presigned upload fails in the browser. Sign with the browser-facing public storage endpoint, not the internal Docker hostname. Confirm CORS.

Moderation stuck pending. Sidecar health shows model status. Fixture mode should complete quickly. Models mode needs weights downloaded.

Channel or forum send returns 400 expirationMode is not allowed for this conversation. Default type policy is persistent-only with sender override off. Expand retention.byType.channel / byType.forum or write a conversation policy. See retention.

Sends succeed but nobody gets a push. push.enabled defaults to false. Confirm health reports push enabled and at least one provider connected. Intents only enqueue for visible message.created (DM peer or sanitized mention, unless you notify groups without mention).

Web Push 410 / FCM UNREGISTERED / APNs BadDeviceToken. That installation is deactivated. The client must re-subscribe and register again.

Foreground device still notified. Heartbeats must run while the tab is visible. Other installations for the same user still notify.

If the playground fails, start with the demo page list and health dashboard. The demo is not a production host.