The client never called /desk/report_status, so Bolt's reminders and any files he delivered to this session sat in the server's outbox forever - the same dead-air failure the pet client showed when its heartbeat stopped. Now a heartbeat thread (HEARTBEAT_SECONDS, default 60; 0 disables) reports in, speaks announcements through the assistant's queue when the mic is idle, and downloads the outbox to BOLT_DOWNLOAD_DIR (default ~/Downloads/Bolt) via .part-then-rename, never overwriting. A startup health probe warns loudly when the server refuses the DESK_API_KEY. Also: add the .env.example the README's setup step references (it was missing, so `cp .env.example .env` failed for everyone), and gitignore .claude/ so Claude Code's worktree directory stays out of the repo. Tests: tests/test_heartbeat.py (12) plus announcement tests in tests/test_assistant.py (6); full suite 135 passed. Co-Authored-By: Claude Code <noreply@anthropic.com>
69 lines
4.0 KiB
Bash
69 lines
4.0 KiB
Bash
# Bolt Assistant settings.
|
|
#
|
|
# Copy this file to .env and fill in the three required values:
|
|
#
|
|
# cp .env.example .env (bash) copy .env.example .env (cmd/PowerShell)
|
|
#
|
|
# Lines that carry a value below are working defaults; remove the leading #
|
|
# only to change one. Blank means "not set".
|
|
|
|
# ── server ───────────────────────────────────────────────────────────────────
|
|
# Where your Bolt server's desk API listens (port 5002 in the default setup).
|
|
BOLT_SERVER_URL=
|
|
# A desk API key for this device (ask Bolt to "create an api key for Bolt
|
|
# Assistant" — it arrives as a file through the heartbeat).
|
|
DESK_API_KEY=
|
|
# Its own conversation on the server. Defaults to pet-assistant-<computer>;
|
|
# the "pet-" prefix gives it voice-client behaviour (short, speakable replies).
|
|
# DESK_SESSION_ID=
|
|
# The ElevenLabs voice the server's /desk/tts speaks in (a voice id).
|
|
ELEVENLABS_VOICE_ID=
|
|
# TTS_SAMPLE_RATE=16000
|
|
# STREAMING_REPLIES=true # speak sentences as they form; false waits for the whole reply
|
|
|
|
# ── audio devices ────────────────────────────────────────────────────────────
|
|
# Blank = the system default; a number = the device index; anything else is a
|
|
# name substring (sounddevice's rules). `run.bat --devices` lists them.
|
|
# MIC_DEVICE=
|
|
# SPEAKER_DEVICE=
|
|
|
|
# ── wake phrases ─────────────────────────────────────────────────────────────
|
|
# With REQUIRE_WAKE_WORD off (the default) the open mic itself is the
|
|
# activation: anything that sounds like speech is sent and answered. Set it to
|
|
# true to need a phrase first ("Hey Bolt", "Thunderbolt", "Hey Assistant"...).
|
|
# REQUIRE_WAKE_WORD=false
|
|
# WAKE_WORDS=hey bolt,bolt,thunderbolt,hey thunderbolt,ok bolt,okay bolt,yo bolt,hi bolt,hey assistant,ok assistant,okay assistant,hey bolts,hey volt,hey bold,hey boat,okay volt,hey thunder bolt,thunder bolt
|
|
# These count anywhere in what was said ("what's the weather, assistant?").
|
|
# ANYWHERE_WAKE_WORDS=assistant
|
|
|
|
# ── listening (local voice-activity detection) ───────────────────────────────
|
|
# Nothing leaves the machine until the detector hears speech. Raise
|
|
# VAD_RMS_THRESHOLD if background noise keeps getting transcribed; lower it if
|
|
# you have to shout.
|
|
# VAD_RMS_THRESHOLD=500
|
|
# VAD_START_FRAMES=3 # loud 80 ms frames in a row before speech starts
|
|
# VAD_SILENCE_END_SEC=0.8 # quiet seconds that end an utterance
|
|
# MIN_UTTERANCE_SEC=0.35 # shorter bursts are never sent
|
|
# MAX_UTTERANCE_SEC=12 # the longest utterance sent
|
|
# COMMAND_WAIT_SEC=8 # after a bare "Hey Bolt", how long for the request
|
|
# FOLLOW_UP_SEC=8 # when the reply ends on a question, keep listening
|
|
# FOLLOW_UP_MAX_TURNS=5
|
|
# CHIMES=true
|
|
|
|
# ── what Bolt may do on this machine ─────────────────────────────────────────
|
|
# There's no screen to approve things on, so ASSISTANT_COMMANDS decides:
|
|
# off nothing runs
|
|
# read (default) filectl list/read only
|
|
# all everything, shell commands and file writes included, like Bolt-Pet
|
|
ASSISTANT_COMMANDS=read
|
|
# COMMAND_TIMEOUT_SECONDS=60
|
|
|
|
# ── heartbeat: reminders and delivered files ─────────────────────────────────
|
|
# Every HEARTBEAT_SECONDS the assistant reports in to the server — the channel
|
|
# Bolt's reminders and any files he delivers to this client arrive on.
|
|
# Announcements are spoken when the mic is idle, and files land in
|
|
# BOLT_DOWNLOAD_DIR (default ~/Downloads/Bolt) without overwriting what is
|
|
# already there. Set to 0 to turn the heartbeat off.
|
|
HEARTBEAT_SECONDS=60
|
|
# BOLT_DOWNLOAD_DIR=
|