Skip to main content
LemonSlice avatars always have natural, expressive hand gestures when they speak. Character World Model 1 takes this further by letting you trigger specific whole-body motions like waving, nodding, or touching hair. There are three ways to use actions, from fully automatic to fully manual.
Actions are an enterprise-only feature. Contact support@lemonslice.com to get access.

1. Action Machine (automatic)

Get the full power of actions with no custom logic required. LemonSlice automatically selects and triggers contextually appropriate actions based on the conversation state. Set enable_actions and action_engine when creating a session:

Enrich the Action Machine with user state (LiveKit only)

By default, the Action Machine knows two avatar states: IDLING and RESPONDING. You can unlock a third state, LISTENING, by publishing the user’s speech state from your agent code (e.g., agent.py). This lets the avatar react naturally while the user is speaking.

2. LiveKit data messages (manual, lowest latency)

Trigger actions yourself with full control over timing. LiveKit data messages are approximately 250 ms faster than the REST control endpoint, making them the recommended option for LiveKit users. Set enable_actions when creating a session:
Publish a data message with topic ls.action and a JSON payload containing the action name from the available actions table:

3. Control endpoint (manual, any integration)

Use the control endpoint to trigger actions from any integration (Daily, Agora, WebSocket). If LiveKit data messages are available to you, prefer those for lower latency. Set enable_actions when creating a session:
Once the session is running, send a POST request with the action name. Replace {session_id} with your active session ID and <ACTION_NAME> with any action from the table below.
When actions are enabled, agent_prompt and agent_idle_prompt are ignored.

Available actions

Actions marked with ✅ work best when the avatar is silent. All other actions can be triggered at any time.