⚠
High Risk:This skill has significant security concerns. Review the findings below before installing.
avatar
⚠Caution·Scanned 2/18/2026
Dangerous skill: exposes SIMLI_API_KEY to the browser via /api/client-config and writes ./device-key.json to disk. It implements a local avatar server with ElevenLabs TTS (https://api.elevenlabs.io/v1/text-to-speech/${voiceId}?output_format=pcm_16000), Slack integration, Stream Deck support, and includes runnable install/start scripts (npm install, npm start).
from clawhub.ai·v29f1b8e·228.0 KB·0 installs
Scanned from 1.0.0 at 29f1b8e · Transparency log ↗
$ vett add clawhub.ai/johannes-berggren/avatarReview security findings before installing
OpenClaw Avatar
Interactive AI avatar frontend for OpenClaw Hub with Simli video rendering and ElevenLabs text-to-speech.
Quick Start
-
Install dependencies
npm install -
Configure environment
cp .env.example .env # Edit .env and add your API keys -
Start the server
npm run dev
Open http://localhost:5173 to see your avatar.
Configuration
Environment Variables (.env)
| Variable | Required | Description |
|---|---|---|
SIMLI_API_KEY | Yes | API key from Simli |
ELEVENLABS_API_KEY | Yes | API key from ElevenLabs |
ELEVENLABS_VOICE_ID | No | Override default voice ID |
SLACK_BOT_TOKEN | No | Enable Slack integration |
OPENCLAW_TOKEN | No | OpenClaw gateway auth token |
Configuration File (avatar.config.json)
Copy the example and customize:
cp avatar.config.example.json avatar.config.json
{
"app": {
"name": "My Avatar",
"port": 5173
},
"avatars": [
{
"id": "default",
"name": "Assistant",
"faceId": "your-simli-face-id",
"voiceId": "your-elevenlabs-voice-id",
"default": true
}
],
"languages": [
{ "code": "en-US", "name": "English", "flag": "gb", "default": true }
]
}
Getting API Keys
Simli
- Sign up at simli.com
- Create a new face or use a stock face
- Copy your API key and face ID
ElevenLabs
- Sign up at elevenlabs.io
- Go to Profile Settings > API Keys
- Copy your API key
- (Optional) Create a custom voice and copy its ID
Features
- Real-time avatar video with lip sync
- Text-to-speech responses
- Speech recognition input
- Multi-language support
- Markdown detail panel
- Slack/email forwarding
- Optional Stream Deck control
Stream Deck (Optional)
To enable Stream Deck hardware control:
-
Install optional dependencies:
npm install @elgato-stream-deck/node canvas -
Enable in config:
{ "integrations": { "streamDeck": { "enabled": true } } } -
Connect your Stream Deck and restart the server
Development
# Run in development mode
npm run dev
# Type check
npm run typecheck
# Build for production
npm run build
# Start production server
npm start
Project Structure
openclaw-avatar/
├── src/
│ ├── config/ # Configuration system
│ ├── client/ # Browser client (Vite)
│ ├── server.ts # Express server
│ └── streamdeck.ts # Stream Deck integration
├── skills/avatar/ # OpenClaw skill definition
├── public/ # Static assets
└── index.html # Entry point
License
MIT