Testing on staging (QA & devs)¶
Share this page. It's everything you need to start exercising Sudo on staging — no VPS or GitHub access required.
What staging is¶
A complete, separate copy of Sudo that auto-deploys every time a dev pushes to
main. It has its own database, accounts, WhatsApp number, and voice server —
nothing you do here touches production or real users. Break it freely.
| Surface | URL |
|---|---|
| Web app (chat, integrations) | https://staging.sudohomes.com |
| Admin (LLM settings) | https://staging.sudohomes.com/admin/settings |
| Marketing homepage | https://staging.heysudo.xyz |
| Database UI (Supabase Studio) | https://db-staging.sudohomes.com (ask a dev for the basic-auth login) |
Staging only
Never sign in to or test against sudohomes.com (production, real users)
when you mean to test a candidate build. Staging is staging.sudohomes.com.
1. Get an account¶
Sign in at https://staging.sudohomes.com with Google (the only sign-in
method). Your staging account is brand-new and unrelated to any prod account,
even with the same email. To get admin access (the /admin/* pages), ask a
dev to add your email to the staging ADMIN_EMAILS.
2. Test the web surfaces¶
- Chat —
/chat. Send a message; the assistant should stream a reply token-by-token. Open a second tab — replies should appear in both. - Integrations —
/integrations. Connect Home Assistant, set a voice, link WhatsApp. - Admin settings —
/admin/settings. The LLM provider/model/key is global. Changing it restarts every running assistant, so confirm chat still answers after a save.
3. Test WhatsApp (Twilio sandbox)¶
Staging uses Twilio's sandbox number +1 (415) 523-8886, not the real
Business number.
- From your phone, send
join <sandbox-code>to that number on WhatsApp (a dev can give you the current join code from the Twilio console). - On staging
/integrations, add your phone number as a family member. - Message the sandbox number — the assistant should reply.
4. Test voice (a Pi pointed at staging)¶
A Pi follows whichever environment it was paired against. To put a QA Pi on
staging: on the Pi, set SUDO_API_URL and PUBLIC_APP_URL to
https://staging.sudohomes.com in /opt/sudo/.env, systemctl restart
sudo-edge, then pair it while signed into staging.sudohomes.com. After that
it's pinned to staging and survives later .env drift.
5. Know when your build is live (devs)¶
A push to main triggers the staging deploy automatically — but only when it
touches paths the workflow watches (cloud/**, homepage/**,
compose.prod.yaml, caddy/**, deploy/**, supabase/migrations/**). A
docs-only change outside cloud/wiki/ won't deploy. Watch a run finish before
testing:
gh run list --workflow=deploy-staging.yml # latest runs + status
gh run watch <run-id> # live, until it completes
A deploy takes a few minutes (it rebuilds images and recreates assistants). If your change isn't showing up, the run is probably still in flight or it failed — check the run first.
This wiki deploys with the app
These pages live under cloud/wiki/, so editing them ships to
staging.sudohomes.com/docs/ on the same push-to-main deploy. Repo-root
docs/ is not served here.
6. Report a bug¶
Include: the surface (chat / voice / WhatsApp / admin), the URL or
action, what you expected vs. saw, and the time (so devs can find it in
logs). A dev can then pull the matching logs from Grafana
(grafana.sudohomes.com) — staging logs land there too, by container name.