How-to guide

Give your AI assistant a phone number

Run one command and your Hermes or OpenClaw assistant gets its own phone number, answers calls, and only takes them from people you allow.

What you'll build

Your personal assistant (Hermes or OpenClaw) running on your computer gets a real phone number. When someone you approved calls it, the assistant answers. It can also use VoiceLayer tools such as calling, texting and email.

Nothing on your machine is exposed to the internet. A small background connector dials out to VoiceLayer, so there is no port to open and no tunnel to run.

Prerequisites

  • Node.js 22 or newer.
  • Hermes 0.22 or newer, or OpenClaw 2026.10 or newer, already installed and working.
  • macOS, Linux or Windows. On Windows, run it inside WSL with systemd on, or add --docker to run the connector in a container.
  • A VoiceLayer account. The command opens a browser and lets you sign up if you do not have one.

Connect

Run the command

npx voicelayer connect hermes

For OpenClaw, use openclaw instead of hermes. Before it changes anything, the command prints the exact list of changes it will make and waits for you. It backs up every file it edits, and d shows the details.

Terminal showing the list of changes the connect command will make to the Hermes configuration, with a prompt to continue
The command lists every change first. Nothing happens until you answer.

Sign in

Your browser opens to a sign-in page showing a short code. Check that it matches the code in your terminal, then sign in or create an account.

Browser sign-in page showing a device code that matches the one in the terminal
Confirm the code matches the one in your terminal.

Choose a number and approve

The approval page asks which number the assistant should use: one you already have, a new one, or none. You can also add your own phone number so the assistant knows who you are, and an email inbox if you want one.

Approval page with the choice of an existing number, a new number or no number, plus an optional field for your own phone
Pick a number, add your own phone, then approve.

When you approve, the page confirms the device is connected.

Confirmation page saying the device is connected and the terminal can continue
You can go back to the terminal.

Read the result

The terminal finishes the setup, then prints a card with the phone number, the email address if you added one, who can reach the assistant, and the tools it can use.

Terminal result card showing the assistant's phone number, who can reach it and the available tools
The result card. Keep the phone number.

Call it

Call the number from the phone you added. The terminal shows the call as it starts. The conversation, with a transcript, appears in the dashboard.

Dashboard call page with the transcript of a conversation with the assistant
Every call has a transcript in the dashboard.

Who can reach it

A phone number that anyone can dial is a way into your computer, so a new assistant line starts locked. Only the phone number you gave during approval can reach it, on every channel. Anyone else who calls hears a short message that the line only takes calls from approved numbers, and the attempt shows in Conversations as blocked.

Conversations list with a blocked call from a number that is not on the allow list
Blocked callers are listed so you can see who tried.

To add people, open the assistant's line in the dashboard and edit the allow list. Opening the line to anyone requires typing confirm, on purpose.

Allow list settings showing the owner's number and the option to open the line to anyone
Edit the allow list on the line's settings.

When the assistant is slow

Assistants often take several seconds to start answering, especially when they use tools. New connections wait up to 20 seconds for the first word, say "One moment." after about a second, and then say "Still working on that." every few seconds, so the caller is never left in silence.

You can change this on the assistant's Model and voice settings. Existing assistants keep their old values until you set these and publish the agent.

Model and voice settings with the controls for how long to wait for the first word and the still-working cue
Set the wait and the spoken cue, then publish.

Check and manage the connection

npx voicelayer status
npx voicelayer tools
npx voicelayer disconnect

status shows whether the connector and your assistant are running. tools lists what the assistant can use. disconnect removes the connector and restores the configuration files from the backups.

Troubleshooting

SymptomWhat to do
A caller hears that the line only takes approved numbersAdd their number to the allow list.
status says the assistant is not reachableStart Hermes or OpenClaw, then run status again.
Windows with --docker failsStart Docker Desktop and run the command again.
Windows with WSL fails to start the connectorTurn on systemd in WSL, restart it, and run the command again.
The line shows as offlineRun status. If the connector is stopped, run the connect command again.
Calls are silent for a long timeRaise the first-word wait and turn on the still-working cue, then publish.

Next steps

On this page