Upload
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+110
@@ -0,0 +1,110 @@
|
||||
# Copy this file to .env and fill in your values.
|
||||
|
||||
# ── Bolt server (required) ──────────────────────────────────────────────────
|
||||
# The same server URL + key desk_client/bolt_desk.py and the Android app use.
|
||||
# DESK_API_KEY is the master key from the server's own .env, or a per-user
|
||||
# key minted via the api_key_generate desk marker (see the main repo's
|
||||
# CLAUDE.md "Per-user API keys" section).
|
||||
BOLT_SERVER_URL=http://your-server:5002
|
||||
DESK_API_KEY=
|
||||
|
||||
# Unique per machine/install so sessions don't collide. Defaults to
|
||||
# "pet-<hostname>" if unset.
|
||||
#DESK_SESSION_ID=pet-my-desktop
|
||||
|
||||
# ── Wake word ────────────────────────────────────────────────────────────────
|
||||
# openWakeWord model trained for "thunderbolt" — thunderbolt.onnx ships in
|
||||
# the project root next to this file. Point WAKE_MODEL_FILE at a different
|
||||
# .onnx model to change the phrase (same convention as desk_client's
|
||||
# WAKE_MODEL_FILE / bolt.onnx in the main repo).
|
||||
#WAKE_MODEL_FILE=thunderbolt.onnx
|
||||
#WAKE_WORD_THRESHOLD=0.5
|
||||
#WAKE_CHECK_INTERVAL_SECONDS=1.2
|
||||
|
||||
# ── STT (Deepgram) ──────────────────────────────────────────────────────────
|
||||
DEEPGRAM_API_KEY=
|
||||
#DEEPGRAM_MODEL=nova-3
|
||||
|
||||
# ── TTS (ElevenLabs) — omit to use offline TTS only ─────────────────────────
|
||||
ELEVENLABS_API_KEY=
|
||||
ELEVENLABS_VOICE_ID=
|
||||
#ELEVENLABS_MODEL_ID=eleven_flash_v2
|
||||
#TTS_SAMPLE_RATE=24000
|
||||
|
||||
# ── Audio devices (optional — leave blank for the system default) ──────────
|
||||
#MIC_DEVICE=
|
||||
#SPEAKER_DEVICE=
|
||||
|
||||
# ── VAD tuning (optional) ───────────────────────────────────────────────────
|
||||
#VAD_RMS_THRESHOLD=300
|
||||
#VAD_SILENCE_END_SEC=1.2
|
||||
#VAD_MAX_UTTERANCE_SECONDS=15
|
||||
#VAD_MIN_UTTERANCE_SECONDS=0.4
|
||||
|
||||
# ── Pet window (optional) ───────────────────────────────────────────────────
|
||||
#PET_SIZE=160
|
||||
#PET_START_X=
|
||||
#PET_START_Y=
|
||||
#PET_ALWAYS_ON_TOP=true
|
||||
#IDLE_ANIMATION_FPS=6
|
||||
|
||||
# ── Wandering (optional) — the pet strolls to a random spot while idle ───────
|
||||
#PET_WANDER=true
|
||||
#PET_WANDER_INTERVAL_SECONDS=45 # average pause between strolls (randomized 0.5x-1.5x)
|
||||
#PET_WANDER_SPEED=90 # pixels per second
|
||||
#PET_WANDER_MAX_DISTANCE=600 # cap on a single stroll's length
|
||||
#PET_WANDER_MARGIN=20 # keep this far off the screen edges
|
||||
|
||||
# ── Mouse behaviour (optional) ──────────────────────────────────────────────
|
||||
# Shaped input = the square window's transparent corners stop eating clicks.
|
||||
# Click-through = the pet ignores the mouse entirely (control it from the tray).
|
||||
#PET_SHAPED_INPUT=true
|
||||
#PET_CLICK_THROUGH=false
|
||||
#PET_EDGE_SNAP=true
|
||||
#PET_SNAP_MARGIN=48
|
||||
|
||||
# ── Barge-in (optional) — talk over the pet to cut it off ───────────────────
|
||||
# Threshold defaults to 4x VAD_RMS_THRESHOLD because the mic also hears the
|
||||
# pet's own voice out of the speakers. Raise it if playback self-interrupts.
|
||||
#BARGE_IN=true
|
||||
#BARGE_IN_RMS_THRESHOLD=1200
|
||||
#BARGE_IN_FRAMES=4
|
||||
|
||||
# ── Streaming TTS (optional) — starts talking on the first chunk ────────────
|
||||
#TTS_STREAMING=true
|
||||
|
||||
# ── Screen context (optional) ───────────────────────────────────────────────
|
||||
# Sends the focused window's title along with what you said, so "what's this
|
||||
# error?" has a referent. Text only — no screenshots leave the machine.
|
||||
#SCREEN_CONTEXT=true
|
||||
|
||||
# ── Quiet hours / do-not-disturb (optional) ────────────────────────────────
|
||||
# Comma-separated HH:MM-HH:MM ranges; wrapping past midnight is fine. While
|
||||
# napping the pet dims, stops wandering and makes no proactive noise — the
|
||||
# wake word and click-to-talk still work.
|
||||
#QUIET_HOURS=23:00-08:00
|
||||
#DND_ON_FULLSCREEN=true
|
||||
|
||||
# ── Desktop notification bridge (optional, Linux/D-Bus) ────────────────────
|
||||
# Forwards matching desktop notifications to the server so Bolt can react to
|
||||
# them. Off by default: each forwarded notification is a converse() round
|
||||
# trip. NOTIFICATION_FILTER is a regex over "<app>: <summary> <body>".
|
||||
#NOTIFICATION_BRIDGE=false
|
||||
#NOTIFICATION_FILTER=build|deploy|calendar
|
||||
#NOTIFICATION_MIN_INTERVAL_SECONDS=60
|
||||
|
||||
# ── Push-to-talk (optional) ─────────────────────────────────────────────────
|
||||
# Global hotkey; needs pynput and a session that allows global key hooks
|
||||
# (most Wayland sessions don't). Leave blank to disable.
|
||||
#PUSH_TO_TALK_HOTKEY=ctrl+alt+space
|
||||
|
||||
# ── Wake-word tuning (optional) ─────────────────────────────────────────────
|
||||
# Scores within this margin below the threshold show up as "near misses" in
|
||||
# the tray's wake-word tuner.
|
||||
#WAKE_NEAR_MISS_MARGIN=0.2
|
||||
#WAKE_NEAR_MISS_LIMIT=40
|
||||
|
||||
# ── Misc (optional) ──────────────────────────────────────────────────────────
|
||||
#COMMAND_TIMEOUT_SECONDS=30
|
||||
#HEARTBEAT_INTERVAL_SECONDS=60
|
||||
#HISTORY_LIMIT=100
|
||||
Reference in New Issue
Block a user