-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy path.env.example
More file actions
129 lines (107 loc) · 5.98 KB
/
.env.example
File metadata and controls
129 lines (107 loc) · 5.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# =============================================================================
# OpenVoiceUI — .env.example
# Copy to .env and fill in your values: cp .env.example .env
# =============================================================================
# Server
PORT=5001
DOMAIN=your-domain.com
# Flask secret key — generate with: python3 -c "import secrets; print(secrets.token_hex(32))"
# Required for persistent sessions. If unset, a random key is generated per restart.
SECRET_KEY=your-secret-key-here
# Canvas pages directory
# VPS/systemd install: set to the path created by deploy/setup-sudo.sh
# Docker install: leave UNSET — defaults to runtime/canvas-pages/ inside the container
# (matches the docker-compose volume mount)
# CANVAS_PAGES_DIR=/var/www/openvoiceui/canvas-pages
# =============================================================================
# OpenClaw Gateway (required for LLM / voice conversations)
# Download and install OpenClaw: https://openclaw.ai
# =============================================================================
CLAWDBOT_GATEWAY_URL=ws://127.0.0.1:18791
CLAWDBOT_AUTH_TOKEN=your-openclaw-gateway-token
# Coding CLI for the openclaw container (activates the coding-agent skill).
# Same options as openclaw's setup wizard. Choose one:
# codex — OpenAI Codex CLI (also set OPENAI_API_KEY)
# claude — Anthropic Claude Code (also set ANTHROPIC_API_KEY)
# opencode — OpenCode (bring your own provider key)
# pi — Pi coding agent (bring your own provider key)
# none — skip (coding-agent skill inactive, default)
# Note: if you already ran openclaw's setup wizard it handled this for you.
# CODING_CLI=codex
# OpenClaw version for the Docker image — pinned to a tested release.
# Only change this if you've verified the new version works with OpenVoiceUI.
# OPENCLAW_VERSION=2026.3.13
# Session key prefix — change if running multiple instances on the same gateway
GATEWAY_SESSION_KEY=voice-main-1
# =============================================================================
# TTS — choose one or more providers
# =============================================================================
# Groq Orpheus (recommended — fast, high quality, free tier available)
# Get key: https://console.groq.com
GROQ_API_KEY=your-groq-api-key
USE_GROQ=true
USE_GROQ_TTS=true
# Qwen3-TTS via fal.ai (optional)
# Get key: https://fal.ai/dashboard
# FAL_KEY=your-fal-key
# ElevenLabs (optional — premium TTS, instant voice cloning, 29 languages)
# Get key: https://elevenlabs.io/app/settings/api-keys
# Voice IDs: https://elevenlabs.io/app/voice-library
# ELEVENLABS_API_KEY=your-elevenlabs-api-key
# ELEVENLABS_VOICE_ID=your-default-voice-id
# Hume EVI (optional — expressive, emotion-aware TTS)
# Get keys: https://platform.hume.ai/settings/keys
# HUME_API_KEY=your-hume-api-key
# HUME_SECRET_KEY=your-hume-secret-key
# Supertonic (ships with docker compose — no config needed)
# Override only if you run the Supertonic service elsewhere:
# SUPERTONIC_API_URL=http://supertonic:8765
# =============================================================================
# STT — Speech-to-Text (optional — browser Web Speech API is the default)
# =============================================================================
# External STT — bring your own Whisper or transcription service.
# Point this at any container running a Whisper-compatible API:
# - speaches-ai/speaches (OpenAI-compatible, recommended)
# - onerahmet/openai-whisper-asr-webservice
# - Any service accepting audio POST and returning text
# STT_API_URL=http://whisper:9000
# STT_API_KEY= # optional Bearer token
# STT_API_FORMAT=auto # auto | openai | whisper_asr
# STT_MODEL=whisper-1 # model name to send to the API
# STT_LANGUAGE=en # language code
# Deepgram (cloud, streaming, accurate)
# Get key: https://console.deepgram.com
# DEEPGRAM_API_KEY=your-deepgram-key
# =============================================================================
# Authentication — Clerk (optional)
# Without Clerk, the app runs open — no login required (fine for single-user).
# To require login: set key below + CANVAS_REQUIRE_AUTH=true + ALLOWED_USER_IDS
# Get keys: https://clerk.com → Your App → API Keys
# =============================================================================
# CLERK_PUBLISHABLE_KEY=pk_live_...
# CANVAS_REQUIRE_AUTH=true
# Restrict access to specific user IDs (recommended in production)
# Find your user_id in server logs after first login, then set it here
# ALLOWED_USER_IDS=user_abc123,user_xyz789
# =============================================================================
# Vision (optional — for screenshot/image analysis)
# Get key: https://aistudio.google.com/app/apikey
# =============================================================================
# GEMINI_API_KEY=your-gemini-key
# =============================================================================
# Music Generation (optional — Suno AI)
# =============================================================================
# SUNO_API_KEY=your-suno-key
# SUNO_CALLBACK_URL=https://your-domain.com/api/suno/callback
# SUNO_WEBHOOK_SECRET=your-webhook-secret # optional HMAC verification
# =============================================================================
# Search (optional — Brave Search for web_search tool in OpenClaw agent)
# Free tier: 2,000 queries/month. Get key: https://brave.com/search/api/
# Must also be set in the OpenClaw gateway service environment.
# =============================================================================
# BRAVE_API_KEY=your-brave-search-api-key
# =============================================================================
# Rate limiting (optional — overrides defaults set in app.py)
# Format: "N per period" e.g. "500 per day" or "500 per day;100 per hour"
# =============================================================================
# RATELIMIT_DEFAULT=200 per day;50 per hour