#Sandbox
The development stack (docker compose up) is the sandbox: the real platform plus
| Service | Role |
|---|---|
sim |
A FreeSWITCH acting as the phone network / carrier SIP side |
fakeprovider |
Emulated carrier APIs: mock (sandbox carrier), Telnyx and Twilio subsets |
#Sandbox carrier (type: "mock")
Supports everything: number search, asynchronous orders, regulatory requirements (NL/DE/BE local
numbers), documents, provider webhooks. Settings: authMode = register | credentials | ip_auth.
Any apiKey starting with mock_ is accepted.
The simulated carrier works like a real one but progresses only when told to:
curl -X POST http://localhost:4010/_control/advance # decide reviews, complete orders, send webhooks
Set FAKE_PROVIDER_AUTO_ADVANCE_MS=5000 in .env to advance automatically.
A requirement value containing the word reject gets rejected (to test corrections).
#Simulated phone network
- Outbound: every number answers and echoes audio. Ending in
486→ busy,480→ unavailable,404→ unallocated. - Inbound: place a call to one of your numbers from the simulator:
docker compose exec sim fs_cli -p "$SIM_ESL_PASSWORD" \ -x "originate {origination_caller_id_number=+31611111111}sofia/ipauth/sip:+31201234567@172.28.0.10:5080 &echo()"
#Telnyx and Twilio without accounts
PROVIDER_API_OVERRIDES in .env points the Telnyx and Twilio adapters at the fake APIs and
their SIP side at the simulator, so type: "telnyx" (any key starting with KEY) and
type: "twilio" (account SID starting with AC) work in the sandbox too. Clear the variable to use
real accounts. It is refused when NODE_ENV=production.