Inspiration
Dylamo started with a simple frustration. Local coding agents can work for five, ten, or twenty minutes at a time, but one permission request or question can stop everything until someone returns to the laptop. I did not want to spend that entire time watching a terminal just in case the agent needed me.
What it does
Dylamo turns a phone call into a control channel for an AI agent running on a paired computer. A caller can authenticate, start a task, and hang up while the agent continues working locally. If the task reaches a protected action, such as a code push, Dylamo calls back with a short explanation and asks for a decision. The same system can alert the caller when an agent monitoring a site detects a meaningful issue.
The goal is simple: keep people in control of their agents without keeping them at their desks.
A phone also makes this more accessible. Any phone that can call Dylamo’s assigned number can reach the paired agent, even when the user does not have Wi-Fi, a browser, or their laptop nearby. The agent still runs on the paired computer; the phone is the remote interface.
How we built it
We built Dylamo with Node.js, Twilio Voice, signed webhooks, WebSockets, SQLite, ngrok, and a local Codex agent running through a paired daemon. The voice service authenticates the caller, records task and approval state, and communicates with the local daemon over an authenticated connection.
For the MVP, a protected action is held until the caller approves or rejects that one exact action by phone. We also built a synthetic site monitoring demo that triggers a short alert call via an agent when a simulated checkout issue occurs.
Challenges and lessons
The main technical challenge was connecting a live phone call to a local AI agent reliably. We had to coordinate Twilio webhooks and media streams, an ngrok tunnel, an authenticated WebSocket connection, durable SQLite state, and a local Codex process running on the paired laptop. A problem in any layer could interrupt a callback or leave a task waiting.
We also had to resolve local agent configuration issues, including executable paths, workspace permissions, model compatibility, service restarts, and reconnects.
The biggest lesson was that voice UX needs concise, deliberate prompts. The caller should quickly understand what happened, make a decision with minimal steps, and receive a clear result without returning to the laptop.
Built With
- codex
- javascript
- ngrok
- node.js
- openai
- sqlite
- twilio
- websockets

Log in or sign up for Devpost to join the conversation.