Skip to content
On this page
HUSH
CIRCUITS

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

  1. User presses INITIATE_BRIDGE.
  2. Backend starts originate toward the user's uplink (connecting).
  3. User answers uplink leg.
  4. Bridge dials destination leg.
  5. On success, call status becomes connected and timer/burn UI activates.
  6. 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

  • connecting timeout guard (~120s) marks call failed.
  • terminal statuses (completed, busy, no_answer, failed) stop polling.
  • UI performs delayed reset to idle state after terminal transition.