-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
72 lines (59 loc) · 3.58 KB
/
Copy path.env.example
File metadata and controls
72 lines (59 loc) · 3.58 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
# Template for reference only. You do not create or edit `.env` by hand.
#
# `.env` is a snapshot of the settings form on the local web page, and the application is its
# only writer. Launch `streamlit run src/app.py`, fill the form, and it writes this file for
# you. Deleting the file is how you reset — nothing else on disk is configuration.
#
# The settings below are what the form persists. `ARCHIVE_AUDIO` and `MIC_DEVICE` are
# sticky preferences set from the pre-flight panel, and `HF_HOME` is derived from
# `STORAGE_ROOT` — none of the three is typed as a free-form field.
# --- Required ---
# The one folder that holds everything large. The layout beneath it is fixed and owned by the
# app: <root>/AegisPrompter/models and <root>/AegisPrompter/audio. Re-entering the same root
# after a reset finds the same weights again instead of downloading them twice.
STORAGE_ROOT=""
# --- Optional ---
# Relocates retained recordings when weights and audio belong on different volumes. Empty means
# <STORAGE_ROOT>/AegisPrompter/audio.
AUDIO_ARCHIVE_DIR=""
# Retrieval backend. Empty means local mode; retrieval still works.
QDRANT_URL=""
QDRANT_API_KEY=""
# Embedding model used when compiling the knowledge index. Changing it invalidates an existing
# index — the stored vectors are not comparable across models.
EMBEDDING_MODEL="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"
# Generative advisor. An OpenAI-compatible endpoint. Empty hides the advisor entirely.
LLM_BASE_URL=""
LLM_API_KEY=""
LLM_MODEL=""
# Post-meeting cleanup backend. Empty means the built-in local model and nothing leaves the
# machine. An executable path here offers an external backend as a per-meeting choice — it is
# never discovered from PATH, so content cannot leave just because a tool is installed.
# Optional voice separation on the re-listening pass. The default is gated and needs
# HF_TOKEN; `ivrit-ai/pyannote-speaker-diarization-3.1` is an MIT mirror that needs none.
DIARIZE_MODEL=""
# Only for the gated speaker-separation weights above. Nothing else uses a token.
HF_TOKEN=""
# Speech recognition model. Must be an MLX-converted Whisper repository — one holding
# `config.json` and `weights.safetensors`. A transformers-format repository of the same model
# will not load. Changing it requires a process restart; the loaded model cannot be swapped in a
# live process. Provenance is a constraint and not only quality (R50, docs/decisions/0012).
ASR_MODEL="mlx-community/whisper-large-v3-turbo"
# --- Written by the app, not typed ---
# Sticky retention preference, set from the pre-flight toggle.
ARCHIVE_AUDIO="false"
# Sticky microphone preference, set from the pre-flight dropdown. A device *name*, matched by
# substring — never an index, which would come to mean a different microphone after a reboot.
# Empty means "follow whatever macOS calls the default input", which is the shipped default.
MIC_DEVICE=""
# Derived from STORAGE_ROOT. Editing it does not survive the next save.
HF_HOME=""
# Screen out non-speech before it is transcribed. **On by default since 2026-08-20**
# (docs/decisions/0015). Segments without speech are never sent to the model: it removes 65% of
# real non-speech and 96% of instrumental music, costs 3% of quiet real speech, and is *faster*
# (V82, V83). Set it to "false" and every segment is transcribed, which means the model invents a
# sentence from essentially every piece of non-speech -- 253 of 253 (V102).
# It fails open: with the detector missing or unloadable, everything is transcribed as before.
VAD_GATE="true"
VAD_MODEL="ivrit-ai/pyannote-segmentation-3.0"
VAD_MIN_SPEECH="0.25"