ClickClack
Use this for ClickClack product/runtime ops, deploys, hosted app checks, and domain questions.
What
- Repo:
~/Projects/clickclack/https://github.com/openclaw/clickclack - Product: self-hostable Slack-style chat for OpenClaw/community/agent workflows.
- Surfaces:
https://clickclack.chatproduct site (Cloudflare Worker custom domain)https://www.clickclack.chat(Worker custom domain, same worker)https://app.clickclack.chathosted app (Worker custom domain)https://docs.clickclack.chatGitHub Pages docs fromdocs/
Prod (Cloudflare, since 2026-07-05)
- Everything is one Cloudflare Worker
clickclackin the OpenClaw account (91b59577e757131d68d55a471fe32aca) fronting a Cloudflare Container. - Worker + container config:
wrangler.jsonc(routes are declarativecustom_domainentries). - Container: Go binary + embedded SPA from
Dockerfile.cloudflare; data in Supabase Postgres (CLICKCLACK_DBsecret) and R2 uploads (clickclack-uploads). - Zone
clickclack.chatide7f93ba1ec24d75ce60c468bbaba5cb5(OpenClaw account).docsCNAME →openclaw.github.iostays DNS-only. - 1Password (OpenClaw vault): "Cloudflare ClickClack deploy token" (
api_tokenfield, workers-scoped; no DNS edit), "Cloudflare ClickClack R2 uploads". - Legacy Hetzner box
clickclack-prod-01(157.90.237.80) no longer serves any DNS; decommission when confident. Old runbook in git history of this file.
Deploy
cd ~/Projects/clickclack && git pull --ff-only- Docker must run (OrbStack:
open -a OrbStack). pnpm deploy:cloudflare(auth:wrangler loginOAuth or the 1Password deploy token asCLOUDFLARE_API_TOKEN).- Rollout gotcha: the running container instance is NOT replaced while it has traffic;
sleepAfter=10mnever fires on a public site. BumpCLICKCLACK_CONTAINER_NAMEinwrangler.jsonc(dated, e.g.prod-YYYYMMDD-open-org) and redeploy to force a fresh instance on the new image. Container is stateless (Postgres/R2), so the swap is safe. - Commit the
wrangler.jsoncbump.
Verify
curl -s https://clickclack.chat/ | grep -oE 'entry/app\.[A-Za-z0-9_-]+\.js'— hash must match the freshly deployed build (compare againsthttps://clickclack.services-91b.workers.dev).- Same check for
https://app.clickclack.chatandhttps://www.clickclack.chat. pnpm exec wrangler containers info a03b3158-bcfd-4962-9a86-e75489f4e803— health + image digest.curl -I https://docs.clickclack.chat
Guardrails
- Do not print OAuth secrets or magic tokens.
- The deploy token has no DNS scope; DNS record changes need the dashboard or a Zone.DNS token.
- Keep deploys from clean git checkouts, not dirty working trees.