Voice calls
How a Pix call connects, its time limits and settings, one call per person across devices, what is kept and who can read it, Pix's notes between calls, feedback, and the call API.
A Pix call is a voice conversation with PixCommander, the Software Factory’s coordinator, from the console’s /call page. You ask how runs and sessions are going, start or stop sessions on a Pix Sandbox or your own belai rc host, answer an agent’s question, or check spend.
What to say and what Pix does with it is documented with the factory:
| Topic | Page |
|---|---|
| Placing a call, what you can ask, the read-back before anything starts or stops, following sessions | Calling Pix |
| Every tool Pix uses, and which need your yes | Voice tools and the voice tools reference |
| Stopping a session, and the wider stops | Stopping work |
| The archive, rating a call, calling about a past call | Call history and memory |
| Pix buttons beside runs and findings | Pix buttons |
This page is the product reference: limits, settings, storage, access and API.
Before you call
- Sign in to the console. The phone icon in the header opens
/callonce you have somewhere to run sessions: a Pix Sandbox, or a host that has runbelai rc. - Allow the microphone. Audio plays where the browser allows it unasked, and always in the installed app (its Call Pix shortcut).
/callis its own page; moving into or out of it is a full page load.
How a call connects
- The page posts your session token to
POST /api/call/ticketonwww.vulnetix.com. The Worker checks it against your account and returns a ticket valid for 60 seconds, bound to your own call agent (one per signed-in person). - The page opens the voice WebSocket,
GET /agents/call-agent/<name>?ticket=<ticket>. A missing, expired or mismatched ticket gets401 The call ticket is missing or expired. - Speech is transcribed, PixCommander picks tools and a reply, and the reply is spoken back. Canned phrases and hold music are served from
/api/call/audio/.
| Ticket answer | Message | Cause |
|---|---|---|
401 |
Sign in first. |
No Authorization header |
401 |
Your sign-in has expired. |
The account API refused the token |
502 |
Your account could not be checked. / The account API did not answer. |
The account lookup failed |
503 |
Pix Call is not set up on this deployment. |
The deployment has no ticket secret or AI binding |
Limits
| Limit | Value | What happens |
|---|---|---|
| One call | 60 minutes | The call ends |
| Calls per person per day | 180 minutes, per UTC day | A new call is refused with the reason; a live call ends at the limit |
| Silence | 8 minutes with nobody talking | Pix hangs up, unless it is on hold waiting for a session |
| Following a session | Checked every 12 seconds | Pix speaks up when a followed session asks a question or finishes |
| Sessions in one read-back | 5 | One yes starts them all |
| Answer to a read-back | Your very next reply, within 2 minutes | Otherwise Pix proposes again |
One call per person
A person has one live call. Opening /call on a second device while a call is live asks before taking it over; if you take over, the first device is told its call moved and ends.
Settings
Set on the call page and sent with the call:
| Setting | Values | Effect |
|---|---|---|
| Patience | 0 (snappy) to 1 (patient) |
How long a pause must last before Pix treats your turn as finished |
| Hold music | on, off | Music while Pix waits on a session and is silent. Pix can also turn it on or off when asked (hold_music). |
Pix uses your device’s timezone for “today” and “this month”. Everything stored is in UTC.
What is kept
| Kept | Never kept |
|---|---|
| What you and Pix said | Audio |
| The cards the page showed: actions, tables, read-backs and how each was settled | Your IP address and location |
| A title for the call, made from what you asked for | The names of the models involved |
| Storage limit | Value |
|---|---|
| Events per call | 1,500 |
| Text per line or table value | 8,000 characters |
| Tables per call, rows per table | 50 and 50 |
| One table cell, column name or summary | 500 characters |
The call’s own Durable Object buffers events and sends them to the history in batches of 10 (at most 100 events and about 200 KB per request). A call where you never spoke, only Pix’s greeting, is not listed.
Who can read a call
A call is readable by the person who made it, and by the organisation’s owners and admins. Deleting a call hides it from the archive; the rows stay for audit and review. Older chats from the retired Pix chat drawer appear in the same archive, readable by every member of the organisation and hidden only by the person who started them or an owner or admin.
Notes between calls
Pix keeps a note only when you ask it to remember something or state a lasting preference (“always use plan mode on vdb-site”).
| Rule | Value |
|---|---|
| Scope | Your own sign-in: notes are stored under the session principal, not shared with other members |
| Length | 500 characters |
| Optional repository | owner/name |
| Kept | The newest 200; saving another removes the oldest |
| Loaded into each call | The 15 newest |
Asked to forget one, Pix reads it back before deleting it.
Feedback
Each Pix reply has a thumbs up and down. One rating per person per reply; pressing again replaces it. A thumbs down offers a note of up to 2,000 characters.
API
The call history routes are on the console API (https://www.vulnetix.com/api/site), with your session token.
| Method | Path | Parameters or body | Answer |
|---|---|---|---|
| GET | /v1/pix-call/history |
kind = call, chat or all (default); q (up to 200 characters, matched in the title and every turn); range = 7d, 30d, 90d or all; before (cursor); per_page (default 25, at most 100) |
{items, next} |
| GET | /v1/pix-call/history/{id} |
One conversation and its events | |
| DELETE | /v1/pix-call/history/{id} |
204; 404 if not visible or already hidden |
|
| POST | /v1/pix-call/feedback |
{"pixLogUuid", "rating": "up"|"down", "comment"?} |
{ok: true} |
| GET | /v1/pix-call/memories |
q, repo (owner/name), limit |
Notes, newest first |
| POST | /v1/pix-call/memories |
{"text", "repo"?} |
The note |
| DELETE | /v1/pix-call/memories/{id} |
POST /v1/pix-call/history is the call Worker’s own write, idempotent on call and sequence number; it is not for clients.
curl "https://www.vulnetix.com/api/site/v1/pix-call/history?kind=call&range=7d&per_page=10" \
-H "Authorization: Bearer $VULNETIX_SESSION_JWT"