Give your personal agent an thread and a FaceTime line.
Keep your agent’s tools and memory in your application. Add native messaging for ongoing conversations and FaceTime when speaking or showing something is easier.
One assistant, different ways to reach it
Imagine an assistant that helps you plan a trip. You text a question while commuting, then call when you want to discuss the options. The agent can use the same application context across both experiences, provided your backend explicitly links the conversation and caller.
This is an illustrative architecture, not an included memory or travel-booking service. Chert supplies messaging and calling infrastructure; your application supplies the agent’s tools, identity mapping, and permissions.
Start with a narrow task
Choose one useful task and one test user before connecting every tool the assistant can access. Make the agent’s identity clear and require confirmation for consequential actions.
- Create the Chert project and check the line’s caller and messaging access.
- Build or connect a named LiveKit agent for calls. Keep the agent running independently of the Chert CLI.
- Add an inbound messaging handler and map its conversation to your application user.
- Test a message, an audio call, and a second call after cleanup. Add video only after verifying both required media directions.
Keep state and permissions explicit
A phone number alone is not an authorization policy for every tool. Verify the user in your application, scope the agent’s access, and decide which context may carry between text and calls.
Shared is useful for building with users who have joined. If the assistant must initiate outbound messages, check the Dedicated plan and your recipient permissions. Do not design an outbound workflow around the trial’s inbound allowance.
Measure a useful result
Track the task completed, a successful reply, and the next return visit. For calls, confirm that the agent heard and answered the caller rather than treating room membership as success. Log operational states separately from private conversation content.