plugins.entries.facetime, not as a messaging channel.
Requirements
- An Apple Silicon Mac running macOS 14.4 or later.
- OpenClaw 2026.9.4 or later.
- FaceTime signed in to your Apple Account on the Gateway Mac.
- Full Xcode installed at
/Applications/Xcode.app. - The FaceTime plugin and matching signed native companion.
- A realtime voice provider with working credentials.
- An administrator account for the audio driver and Mac setup.
Install the plugin and native companion
Run these commands on the Gateway Mac:Configure owner identities
Add your FaceTime email address or full international phone number toownerHandles. Only listed handles can use the integration. Every listed handle
has owner authority; there is no guest tier.
Merge this into your OpenClaw configuration. Preserve existing plugin entries
and add facetime to your existing plugins.allow list if you use one.
Configure voice credentials
The example selects OpenAI for realtime speech. Voice credentials are separate from your text agent’s login. Configure credentials supported by the selected realtime provider; a text-agent subscription alone may not provide voice access. For an environment-backed OpenAI API key, merge this additional configuration:OPENAI_API_KEY available to the Gateway process, not just your terminal.
You can also reuse an existing file-backed or other supported
SecretRef instead of storing the key in configuration.
Choose the agent and tool access
realtime.sessionKey defaults to main, which selects the default agent. To
choose another agent, use an agent-qualified key such as agent:assistant:main,
replacing assistant with its configured ID.
Each call uses a separate consult session. It can inherit context from the
selected source session without adding the call’s turns to that chat. The
agent’s workspace, tool credentials, and approval policies still apply.
Choose a realtime.toolPolicy:
Invalid policy values are rejected. Only add your own identities to
ownerHandles, even when choosing a restricted tool policy.
Choose a voice
Setrealtime.provider explicitly to keep provider selection consistent.
realtime.model and realtime.voice are optional; when omitted, the selected
provider supplies its defaults. Set a supported voice explicitly if you do not
want to follow changes to the provider’s default voice.
If realtime.provider is omitted, the registered realtime providers select the
provider automatically. OpenAI is an example here, not the plugin’s default.
Prepare the Mac
After saving your configuration, restart the Gateway and run setup:Enable developer-tools access
From an interactive administrator session, run:Allow debugger attachment
The native helper needs to attach to FaceTime and Phone. If setup reports that SIP debugging restrictions block attachment:- Shut down the Mac.
- Hold the power button until startup options appear, then choose Options.
- Open Utilities > Terminal in macOS Recovery.
-
Run:
-
Restart into your normal user session and rerun
facetime.setup.
csrutil status
and inspect the result before making changes.
See FaceTime recovery and removal to restore the
standard security settings when you remove the integration.
Grant permissions and allow incoming calls
Complete macOS permission prompts from the same user session that runs the Gateway. Check System Settings > Privacy & Security > Screen & System Audio Recording if preflight reports that app-audio capture is blocked. Setup also checks whether Focus or notification settings can block calls. Allow FaceTime calls through your active Focus, and enable notifications while sharing or mirroring the display if setup reports that setting is blocking notifications.Install the audio driver
Run the admin-only installer and complete its administrator prompt:Select the call audio devices
In FaceTime, and in Phone when it handles FaceTime Audio, select:- Microphone:
OpenClaw-Mic. - Output: physical speakers or headphones.
OpenClaw-Mic, OpenClaw-Feed, BlackHole, an aggregate device, or a
multi-output device as the call output.
Inspect and activate
Run setup again after completing the Mac and driver steps, then check audio readiness:setup and preflight are admin operations that can perform
live setup and audio checks. status can inspect an inactive runtime without
opening apps, staging helpers, or starting call audio.
Verify your first call
Start with FaceTime Audio:- Confirm that the receiving device is available and its user consents to the call.
- Ask your agent to call one of your configured owner handles, then approve the outgoing call.
- Answer on the receiving device and check that you can hear the greeting and hold a two-way conversation.
- Ask the agent to hang up, or end the call yourself.
facetime_call and requests one-shot approval before dialing.
You can also call the Gateway Mac’s FaceTime account from a configured owner
handle.
Place and end calls
To dial directly as a Gateway operator:ownerHandles. Direct dialing requires operator.write
access and counts as an explicit operator action.
To end a call and check its status:
Update the integration
After updating the plugin and native companion, checkfacetime.driverStatus.
If the driver is outdated, update it from an interactive administrator session:
openclaw doctor --fix. Doctor
migrates whitelistHandles to ownerHandles and removes the retired
helperHost, helperPort, and realtime.brain settings.
Remove the integration
End any active call, then run:Limits
- One managed call at a time.
- FaceTime calls only. Cellular, Wi-Fi Calling/PSTN, emergency, and unrecognized call types are rejected, even when the number matches an owner handle.
- Start with FaceTime Audio. Video and Phone-hosted FaceTime Audio remain experimental and may behave differently across macOS versions.
- Requests that use the agent’s tools can take longer than ordinary voice replies.
- There is no FaceTime-specific realtime model fallback; provider behavior and defaults come from the selected realtime provider.
Troubleshooting
Remove account identifiers, credentials, and private conversation content before
sharing logs.