openclaw-stimm-voice
v2026.3.1-beta.1
Published
OpenClaw third-party plugin — Stimm dual-agent real-time voice conversations
Maintainers
Readme
openclaw-stimm-voice
Stimm Voice is a third-party OpenClaw plugin for real-time voice conversations.
It uses a dual-agent architecture:
- A fast Python voice agent (LiveKit + STT/TTS/LLM) handles low-latency speech.
- OpenClaw acts as the supervisor for reasoning, tools, and long-context decisions.
Presentation
What this plugin provides:
- Real-time voice sessions backed by LiveKit rooms.
- Browser entrypoint at
web.path(default:/voice). - Claim-token flow for web access (
/voice/claim) with one-time, short-lived claims. - Optional Cloudflare Quick Tunnel for temporary public access.
- Optional supervisor shared secret for
POST /stimm/supervisor.
Install
Prerequisites
- Node.js 22+
- Python 3.10+
- OpenClaw gateway ≥ 2026.2.0 installed and running
- LiveKit deployment:
- local (
ws://localhost:7880) or - cloud (
wss://<your-project>.livekit.cloud)
- local (
Install from npm
openclaw plugins install openclaw-stimm-voiceInstall from GitHub (latest)
openclaw plugins install https://github.com/EtienneLescot/openclaw-stimm-voiceThen restart the OpenClaw gateway.
Python dependencies use Stimm extras as the single installation contract:
- Base/default profile from python/requirements.txt:
stimm[deepgram,openai] - Additional provider plugins are installed by the setup wizard based on selected STT/TTS/LLM providers (
stimm[...]).
Config
Set config under plugins.entries.stimm-voice.config.
{
enabled: true,
livekit: {
url: "wss://your-project.livekit.cloud",
apiKey: "APIxxxxx",
apiSecret: "your-secret",
},
web: {
enabled: true,
path: "/voice",
},
access: {
mode: "quick-tunnel", // "none" | "quick-tunnel"
claimTtlSeconds: 120,
livekitTokenTtlSeconds: 300,
supervisorSecret: "change-me",
allowDirectWebSessionCreate: false,
claimRateLimitPerMinute: 20,
},
voiceAgent: {
spawn: { autoSpawn: true },
stt: { provider: "deepgram", model: "nova-3" },
tts: { provider: "openai", model: "gpt-4o-mini-tts", voice: "ash" },
llm: { provider: "openai", model: "gpt-4o-mini" },
bufferingLevel: "MEDIUM",
mode: "hybrid",
},
}Notes:
- The extension is disabled by default (
enabled: false). access.mode="quick-tunnel"requirescloudflaredon PATH.voiceAgent.tts.voiceis provider-specific: OpenAI uses voice names (ash,alloy), ElevenLabs usesvoice_id, and Cartesia uses voice UUIDs.- API keys can be set directly in plugin config, or via env fallbacks (
STIMM_STT_API_KEY,STIMM_TTS_API_KEY,STIMM_LLM_API_KEY, then provider-specific env vars). access.supervisorSecretalso supports env fallback (STIMM_SUPERVISOR_SECRET, thenOPENCLAW_SUPERVISOR_SECRET).
Usage
Start session from CLI/tool/gateway
openclaw voice:start --channel webSupervisor logs (high-level)
Use this command to inspect supervisor observability quickly without manual grep:
openclaw voice:logs --limit 40Interactive follow mode:
openclaw voice:logs --watch --interval 2Options:
--raw: print rawOBS_JSONlines from/tmp/stimm-agent.log--limit <n>: number of entries to print (default:40)--watch: keep watching and print new entries continuously (Ctrl+C to stop)--interval <s>: refresh interval for watch mode in seconds (default:2)--all-events: includeinference_started(hidden by default to reduce noise)
The command prints two sections:
- Stimm supervisor
OBS_JSONevents (inference_started,inference_completed,trigger_sent,no_action) - Gateway-side synthesized lines (
[stimm-voice:supervisor]) when available
stimm.start / stimm_voice:start_session returns:
- room metadata
shareUrl(when quick tunnel is enabled)- one-time
claimToken
Browser flow
- Open the returned
shareUrlon phone. - The page calls
POST /voice/claimwith the claim token. - Gateway validates claim and returns a short-lived LiveKit token.
- Browser joins LiveKit.
HTTP endpoints
GET <web.path>: serves the web voice UI.POST <web.path>/claim: claim exchange endpoint.POST <web.path>: disabled by default (403) unlessaccess.allowDirectWebSessionCreate=true.POST /stimm/supervisor: internal supervisor callback (protected ifaccess.supervisorSecretis set).
Gateway methods
stimm.startstimm.endstimm.statusstimm.instructstimm.mode
Tool
Tool name: stimm_voice
Actions:
start_sessionend_sessionstatusinstructadd_contextset_mode
