Appearance
Call Flow
HushCircuits uses a two-leg bridge setup.
BRIDGE PROTOCOL
How your call connects securely
๐ฑ
YOU
Leg A
1
โถ We call YOU first
๐
HUSH
Bridge
2
โถ Then TARGET
๐
TARGET
Leg B
1
Your phone rings
Answer to connect
2
Bridge established
Secure tunnel active
3
Target called
With your spoofed CID
BRIDGE PROTOCOL: ACTIVE
Sequence
- User presses
INITIATE_BRIDGE. - Backend starts originate toward the user's uplink (
connecting). - User answers uplink leg.
- Bridge dials destination leg.
- On success, call status becomes
connectedand timer/burn UI activates. - On hangup or terminal status, logs reconcile and UI resets.
Dialer Status Mapping
DIALER STATE MACHINE
Mapped from `useCall.ts` + `DialPad.tsx`
idle
TERMINAL_READY
initiating
INITIATING_HANDSHAKE...
calling
DIALING_YOUR_VECTOR...
ringing
RINGING_REMOTE...
connected
CIRCUIT_ESTABLISHED
failed/ended
HANDSHAKE_FAILED
Timeout Guard
`connecting` > 120s => `failed`, then auto-reset to `idle` after 5s.
Terminal States
`completed`, `busy`, `no_answer`, `failed` stop polling and reconcile UI.
Failure and Timeout Behavior
connectingtimeout guard (~120s) marks call failed.- terminal statuses (
completed,busy,no_answer,failed) stop polling. - UI performs delayed reset to idle state after terminal transition.