What the Infrastructure tab probes
Six services, split by who can reach them.
Each row in the panel also shows the service’s purpose — portal
database and auth, API gateway to telemetry services, call analytics
database, per-second billing engine, APM metrics and traces, SIP packet
capture — so the panel doubles as a map of what the deployment is made
of.
If a browser-probed service has no URL configured, the panel renders
(not configured) in place of the URL.
What each probe actually calls
The probes are deliberately cheap. None of them mutate anything.
Two of these are worth explaining:
- CGRates has no GET health route, so the probe posts the cheapest
RPC in the API —
APIerSv1.Ping— which always returns something if the engine is up. - Homer exposes its login endpoint rather than a health endpoint. The
probe posts the configured admin credentials, but a rejection is still
a useful signal: a
401or422response proves Homer is listening and speaking HTTP, so the probe counts it as reachable rather than down.
latency_ms and, when there is something
worth saying, a detail string alongside the status.
Reading ok, unreachable, auth needed, and manual
Every probe resolves to one of four statuses.
There is also a transient
pending state while a browser probe is in
flight; the panel shows it as a pulsing amber dot.
Two subtleties:
okis a reachability claim, not an authorization claim. For browser probes, a401response is deliberately scored asok— the browser has no credentials to present, and proving the service is listening is the whole point. So a green Supabase row does not mean the portal’s key is valid.manualis the expected steady state for Admin QUIC. QUIC is a binary transport; a browserfetch()cannot speak it. The row exists to show you the configuredQUIC_URL, not to health-check it. Confirm the admin RPC path by making an actual admin call.
Browser-side vs server-side probes
Supabase and the platform API are probed directly from the browser. Both are already browser-reachable with CORS in a working deployment, so probing them client-side tests the exact path the console itself uses. If the browser probe fails but the service is otherwise healthy, you have learned something real: the console cannot reach it either. ClickHouse, CGRates, SigNoz, and Homer are probed on the API server, throughdiagnostics.probeAll. That is not a network-topology decision —
it is a secrets decision. Those probes need the ClickHouse basic-auth
credentials and the Homer admin username and password to produce a
meaningful result. Shipping those to the SPA so it could probe them
itself would put infrastructure credentials in browser memory and in the
network tab of anyone with the console open.
So the rule the panel follows is: if a useful probe needs a secret, the
probe runs server-side and only the verdict crosses the wire. The
browser receives a status, a latency, and an optional detail string. It
never receives the credentials, and it never receives the internal URL
those credentials were used against.
diagnostics.probeAll takes no input and is not org-scoped — it reports
the health of the deployment, not of your tenant. It does require an
authenticated session.
Public URLs vs internal URLs
Each back-end service has two addresses in the deployment config, and they do different jobs.CLICKHOUSE_URL,CGRATES_URL,SIGNOZ_URL,HOMER_URL— the internal addresses. The API server dials these to run the probe. They frequently resolve only inside the deployment’s network (container names, private DNS,localhost). These are never returned to the browser.CLICKHOUSE_PUBLIC_URL,CGRATES_PUBLIC_URL,SIGNOZ_PUBLIC_URL,HOMER_PUBLIC_URL— the public addresses. These are what the panel shows you and what you click through to. They are the only URLs in the probe response.
*_PUBLIC_URL configured, the probe returns an empty
string for url and the console renders “no public URL” rather than
offering you a localhost link that would be dead in your browser. The
probe still runs and still reports a status — a service can be perfectly
healthy and simply have no externally routable address, which is normal
for ClickHouse and CGRates in a locked-down deployment.
The practical consequence: a row showing ok with no public URL is a
correctly configured service you cannot open a UI for. A row showing
unreachable with a public URL set is a service the API server cannot
talk to, regardless of whether your browser could.
Re-probe rate limit
diagnostics.probeAll is rate limited to 10 calls per 60 seconds per
caller, under the diagnostics.probeAll bucket. Opening the tab consumes
one call, and each Re-probe click consumes one more. Client-side
probes (Supabase, the platform API) are not rate limited, because they
never touch the API server — but the Re-probe button fires both
halves together, so hitting it repeatedly will burn the server-side
budget.
The tab is configured to refetch on mount with no cache, so navigating
away and back always produces a fresh probe rather than a stale verdict.
Managed recording storage
TeleQuick can provision an S3-compatible bucket scoped to your tenant so call recordings have somewhere to land without you configuring object storage at all. The Settings Storage panel reads this fromstorage.info, which is scoped to the active org.
When the deployment has managed storage configured, the panel shows:
The endpoint the panel shows is the deployment’s public storage URL when
one is configured, and the internal API URL otherwise — so in a
deployment without a public storage address, that value may not resolve
from your machine.
Provisioning is lazy and idempotent. If your org was created before
the storage onboarding hook existed, or onboarding ran while the storage
backend was briefly unavailable, credentials are minted the first time
anyone opens the Storage panel. The result is cached, so opening the
panel repeatedly does not churn credentials.
If the deployment has no storage backend configured at all, the panel
reports managed storage as unavailable and tells you plainly: recordings
will only be stored if your trunk carries a custom
recording_url. In
that state the panel still shows the bucket name and the {orgId}/
prefix the deployment would use, with no access key and no endpoint.
Overriding managed storage with a trunk recording_url
Managed storage is the fallback, not the mandate. The precedence is:- Trunk has a
recording_urlset — recordings go there. That is your bucket, your credentials, your lifecycle policy. The managed bucket’s 30-day retention does not apply to objects it never receives, and the Usage figure in the Storage panel will not grow. - Trunk has no
recording_url— recordings go to the managed bucket under your tenant prefix, and the managed retention applies.
recording_url on the trunk to bring your own S3, and
retention becomes entirely a property of your bucket’s lifecycle rules.
Note that the override is per trunk, not per org. A deployment with a
mix of trunks can have some recordings in your bucket and some in the
managed one; the Storage panel’s usage numbers only ever describe the
managed bucket.
Recording playback URLs
The console does not embed durable links to recording objects. When you click play on a row in Recordings, it requests a presigned download URL valid for one hour, generated on demand. URLs are minted lazily — only for rows you actually listen to — rather than for every row in a listing. The lookup is tenant-scoped at the query level: the recording’srecording_url is read from the CDR row for that call id and filtered
to your org’s tenant_id. Guessing another tenant’s call_sid does not
produce a playable URL.
Branding is deployment-wide
The Branding tab sits beside Infrastructure in Settings, but it is not an org profile field, and that distinction matters when you change it. Branding is a deployment-wide white-label setting: it is the one setting that changes what every console in the deployment renders — the portal, the voice console, and each modality SPA. Changing the organization name under Account Information renames one org. Changing branding restyles the whole installation for everyone on it. That is why it has its own tab rather than living next to the org name field.Related
- Telemetry — what ClickHouse, SigNoz, and Homer actually store
- Authentication — API keys and the org admin token
- Telephony Metrics — reading the numbers these services collect