Skip to main content
chert dev and chert byor support inbound audio and video without a public webhook. The caller chooses FaceTime Audio or FaceTime Video. There is no chert dev --video switch: use the same command with either call type. Use an eligible Chert line with video enabled. Caller-camera delivery also needs capture enabled and configured on that line’s worker. Confirm those capabilities with Chert for your assigned line; working audio does not establish either video direction. A webhook is not a prerequisite for video.

Start a video agent

For an existing named LiveKit agent, keep its normal startup command and run chert dev --agent YOUR_AGENT_NAME from the folder with its LiveKit credentials. No callback module or manual enrollment is needed for dev. For a new agent, the published beta.10 CLI includes a starter that speaks and publishes an animated face:
Use macOS or Linux with Node 22.23.2 or 24.x for this walkthrough. Fill in the generated .env.local with your LIVEKIT_URL, LIVEKIT_API_KEY, LIVEKIT_API_SECRET, and OPENAI_API_KEY. Keep AGENT_NAME=my-video-agent, or use the same new dispatch name in both your agent and CLI. In the agent terminal:
In a second terminal in the same folder:
Approve login for your assigned Chert project, then wait for the CLI to report the connection and waiting agent. Call your line using FaceTime Video to hear the agent and see its animated face. A FaceTime Audio call carries its voice only. Follow Connect and test for hangup, cleanup, and line release. --video belongs to chert new; it selects starter code. It does not enable video on a line. --muse is a separate, specific agent integration and is not required for ordinary video agents.

Connect the caller’s camera to your agent

The video starter publishes an animated face but does not consume the caller’s camera. It uses AutoSubscribe.AUDIO_ONLY and videoEnabled: false for input. For a visual-support demo such as asking the caller to point at a port:
  1. Use FaceTime Video with the caller’s camera on and confirm caller capture is enabled on the assigned line.
  2. Register track handlers before joining the room and enable video subscriptions in your agent. For generic chert dev, the caller is the bridge participant named chert-bridge-<call ID>; custom BYOR uses the bridge identity in your token.
  3. Consume that participant’s facetime-remote-video frames, alongside facetime-remote-audio. Connect video input to your vision-capable model or frame-processing tool; changing subscription settings alone does not add vision.
  4. Handle camera mute, track removal, and replacement. Do not treat an old frame as the caller’s current view.
  5. Test recognition by changing what the camera shows. If your demo also draws a circle or annotation, render it into your agent’s published video. The CLI does not supply object detection or a drawing tool.
Warm-room job metadata has no call media or call ID. Register subscriptions so your agent can handle tracks arriving after the caller joins. For a cold dispatch, job metadata includes media.video; custom BYOR callbacks receive call.media directly. See Audio and video for the media contract.

Publish the agent’s video

Keep exactly one eligible remote audio publisher in the room. The FaceTime bridge takes the agent video from that same participant. If an avatar service publishes both voice and video, avoid also publishing a second agent audio track. Video published by a different participant from the voice is not shown. Without agent video, the caller sees the line’s default picture. This does not by itself tell you whether caller video is reaching your agent.

Custom BYOR callbacks

The callback workflow receives call.media: { audio: true, video: boolean }. Prepare a session for the requested media before returning ready: true; decline if your application cannot support it within the supplied deadline. Your application owns readiness and cleanup. Manual enrollment is a setup requirement for this mode, not a restriction to audio. The separate create-room adapter remains audio-only. Use dev or byor for video.

Check both video directions

chert dev reports the observed agent audio/video publications after a call starts. These diagnostics help find missing video or a mismatched publisher; they do not prove that frames reached FaceTime or your vision model. On the intended line, verify two-way speech, changing agent video, changing caller video reaching your vision pipeline, caller hangup, room cleanup, and a fresh second call. doctor and room membership do not replace these checks.