LiveKit voice AI agent for the Darwin Unitree G1 humanoid robot.
Darwin listens, talks, and sends RPC gesture commands to the robot via LiveKit.
The robot side (uniact-code/livekit_bridge.py) receives those commands and translates them to physical motion.
Attendee speaks
↓
darwin-agent (this project — voice AI, runs on laptop or cloud)
↓ RPC over LiveKit
livekit_bridge.py (uniact-code — on Mac connected to G1)
↓
G1 robot moves
Both sides must join the same LiveKit room with credentials from the same server.
cd backend
cp ../.env.example ../.env
# Fill in .env with your credentials
uv synccd backend
./start_agent.shOr directly:
cd backend
.venv/bin/python -m app.main devEdit event.md at the project root to update what Darwin knows about the current event.
The file is loaded at startup — restart the agent to pick up changes.
| Variable | Default | Description |
|---|---|---|
LIVEKIT_URL |
— | LiveKit server URL |
LIVEKIT_API_KEY |
— | LiveKit API key |
LIVEKIT_API_SECRET |
— | LiveKit API secret |
LLM_PROVIDER |
openai |
openai or google |
OPENAI_API_KEY |
— | Required for OpenAI |
REALTIME_TTS_PROVIDER |
native |
native or cartesia |
CARTESIA_API_KEY |
— | Required if using Cartesia TTS |
ROBOT_PARTICIPANT_IDENTITY |
robot123987 |
Must match uniact-code .env |
EVENT_FILE_PATH |
event.md |
Path to event knowledge file |