Build

Configuration

Runtime behaviour is driven by config.yaml; secrets and machine overrides live in .env (copied from .env.example at setup). Here are the keys you'll touch most.

Highlights

config.yaml
conversation:
  listening_mode: manual          # or wake-word driven
  online_permission_mode: ask_first

models:
  chat:  { path: models/Qwen3.5-0.8B-Q4_K_M.gguf }
  tool:  { path: models/Qwen3.5-4B-Q4_K_M.gguf }

routing:
  execution_engine: parallel      # ordered | parallel | graph (LangGraph)
  use_replanning: true

Routing thresholds

These tune the confidence bands described in How routing works. Lower them to dispatch more eagerly; raise them to ask more often.

config.yaml · routing
routing:
  dispatch_threshold: 0.62   # cosine ≥ this → auto-dispatch
  confirm_low: 0.50          # below dispatch but here → "did you mean…?"
  tie_epsilon: 0.05          # candidates this close → disambiguate
  lexical_threshold: 88      # rapidfuzz score floor
  lexical_margin: 6          # …and must beat runner-up by this
  promote_after: 3           # confirmed this many times → deterministic
  confirm_destructive: true  # guard destructive actions
  disambiguate: true         # ask which one when ambiguous

Voice

config.yaml · voice
voice:
  stt_model: base.en
  stt_compute_type: int8
  stt_cpu_threads: 8
conversation:
  wake_session_timeout_s: 12

Local-first means the network is opt-in. online_permission_mode governs how FRIDAY asks before any capability reaches the internet.

  • ask_first — prompt for consent before each online action (default).
  • always — allow online capabilities without prompting.
  • never — block online capabilities entirely.

Useful env vars

.env
FRIDAY_PORCUPINE_KEY=...          # wake word access key (required both OSes)
FRIDAY_CHAT_MODEL_URL=...         # override chat model download
FRIDAY_TOOL_MODEL_URL=...         # override tool/planner model download
FRIDAY_DISABLE_EMBED_ROUTER=1     # skip the embedding layer (faster cold start)
Full reference
Every key is documented in docs/config_reference.md in the repository. Edits to config.yaml take effect on next launch.