Phone for the Owner and for a customer
The phone channel is one implementation with two doors. A customer workspace configures its line, tunes the voice, supervises a live call and reads its own call records through the same modules the operator uses; the routers differ, not the behaviour. What stays operator-only is the platform ledger and running the voice fleet itself.
What is identical#
| Capability | Owner | Customer workspace |
|---|---|---|
| Configuring the line — provider, hours, routing, permissions | Yes | Yes, over its own channel_routes rows |
| The Voice Lab: engine and steering settings, test calls, review | Yes | Yes |
| Connect's own text-to-speech settings, on the Behaviour section | Yes | Yes |
| Human voice profiles and profile resolution | Yes | Yes |
| The live supervisor panel | Yes | Yes, on its own calls |
| The browser softphone line | Yes | Yes, per person |
| Call records, transcripts, summaries, outcomes, follow-ups | Yes | Yes, scoped to the workspace |
| Line health signals | Yes | Yes, for its own line |
"Identical" here means the same code, not a similar screen. A customer workspace is not using a reduced copy of the Voice Lab; it is using the Voice Lab, with its own workspace as the scope.
One body, two doors#
The pattern that keeps them identical is deliberate and worth naming: behaviour lives in a module both routers call, and each router adds only the route. The voice settings, the supervisor and the Lab are shared modules; the operator's router and the customer router are thin.
Where a customer path needs to differ — a different URL shape, a different scope — the difference is a rewrite in the tenant adaptation layer rather than a second implementation. The failure this prevents is the one every two-audience product eventually has: a feature that works for the operator and quietly returns a permission error for everybody else, with no code anywhere that says so.
What stays with the operator#
- The per-call cost profiler
GET /api/usage/voicereports what was measured and what was not for an individual call. Like the rest of the ledger it belongs to the platform operator — it is about running the platform, not about using Connect.- Fleet operations
- Worker capacity, drain windows, the service unit, the heartbeat file. A customer workspace sees the consequences through line health; it does not size the fleet.
- Provider and carrier accounts
- Which provider carries the PSTN leg, and which capabilities that account has enabled. A customer workspace inherits the answers through the capability check rather than configuring them.
- Cross-workspace views
- Anything that reads several workspaces at once. There is no version of this for a customer, by construction rather than by permission.
The distinction the status vocabulary draws is exactly this one: available_owner means running in production and deliberately for the operator, not a capability a customer is waiting for.
What a workspace's plan changes#
Plans change limits, not behaviour. Allowances, capacity and what a workspace may spend on voice are recorded against the workspace and the line rather than expressed as different code paths, which is why raising one changes what is permitted without changing how anything works.
The practical consequence for a customer: a line that stops placing calls is far more often a limit than a fault, and the refusal is recorded with its reason. Reading the reason first saves the investigation.
Reading a report about one audience#
A report that something is missing on one side is a question about both. The pattern behind almost every asymmetry here is a route added to one router without the corresponding rewrite for the other, or a check that reads a setting outside the owning workspace — a real defect of that second kind once verified a number outside any workspace scope, so the workspace-scoped credentials read as empty and every real call was refused before pickup.
That is why the useful first question about a phone problem is not "what broke" but "which audience, and does the other one see it too".
Questions#
Does a customer workspace get a cut-down voice agent?
No. The engines, the conversation layer, the profiles, the Lab and the supervisor are the same modules. What differs is scope — a workspace sees its own lines, calls and people — and the operator-only ledger and fleet controls.
Can a customer workspace choose the realtime engine?
The engine is a setting on the workspace, so yes, subject to whatever the workspace's limits allow. Both engines are reachable through the same configuration surface for both audiences.
Why is the per-call cost profiler operator-only?
Because it is a platform-operations instrument rather than a customer feature — it reports what a call cost to run and, importantly, what could not be measured. Customer workspaces see their usage through the ordinary usage surfaces.