- Updated basedpyright linting results (705 files analyzed, analysis time reduced from 22.928s to 13.105s). - Updated biome linting artifact with warning about unnecessary hook dependency (preferencesVersion) in MeetingDetail.tsx.
589 lines
20 KiB
Bash
589 lines
20 KiB
Bash
# ============================================================================
|
|
# NoteFlow Configuration
|
|
# ============================================================================
|
|
# Copy this file to .env and customize as needed.
|
|
# All NOTEFLOW_* variables are used by both backend and client where applicable.
|
|
# VITE_* variables are used by the frontend build process.
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Database
|
|
# ============================================================================
|
|
# PostgreSQL connection URL with asyncpg driver
|
|
# Format: postgresql+asyncpg://user:password@host:port/database
|
|
NOTEFLOW_DATABASE_URL=postgresql+asyncpg://user:pass@localhost:5432/noteflow
|
|
|
|
# Database connection pool size
|
|
# Range: 1-50, Default: 5
|
|
NOTEFLOW_DB_POOL_SIZE=5
|
|
|
|
# Echo SQL statements to log (for debugging)
|
|
# Values: true|false, Default: false
|
|
NOTEFLOW_DB_ECHO=false
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - ASR (Automatic Speech Recognition)
|
|
# ============================================================================
|
|
# Whisper model size (larger = more accurate but slower)
|
|
# Values: tiny|tiny.en|base|base.en|small|small.en|medium|medium.en|large-v1|large-v2|large-v3
|
|
# Default: base
|
|
NOTEFLOW_ASR_MODEL_SIZE=base
|
|
|
|
# ASR device for inference
|
|
# Values: cpu|cuda, Default: cpu
|
|
NOTEFLOW_ASR_DEVICE=cpu
|
|
|
|
# ASR compute precision (int8 = fastest, float32 = most accurate)
|
|
# Values: int8|float16|float32, Default: int8
|
|
NOTEFLOW_ASR_COMPUTE_TYPE=int8
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Server / Storage
|
|
# ============================================================================
|
|
# gRPC server port
|
|
# Range: 1-65535, Default: 50051
|
|
NOTEFLOW_GRPC_PORT=50051
|
|
|
|
# Directory for meeting audio and metadata storage
|
|
# Default: ~/.noteflow/meetings
|
|
NOTEFLOW_MEETINGS_DIR=~/.noteflow/meetings
|
|
|
|
# Server logging level
|
|
# Values: DEBUG|INFO|WARNING|ERROR, Default: INFO
|
|
NOTEFLOW_LOG_LEVEL=INFO
|
|
|
|
# Server log format
|
|
# Values: auto|json|text, Default: auto
|
|
NOTEFLOW_LOG_FORMAT=auto
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - gRPC Streaming
|
|
# ============================================================================
|
|
# Maximum gRPC chunk size in megabytes
|
|
# Range: 1-100 MB, Default: 1
|
|
NOTEFLOW_GRPC_MAX_CHUNK_SIZE_MB=1
|
|
|
|
# Timeout for receiving audio chunks (seconds)
|
|
# Range: 0.01-10.0, Default: 0.1
|
|
NOTEFLOW_GRPC_CHUNK_TIMEOUT_SECONDS=0.1
|
|
|
|
# Maximum audio queue size (number of chunks)
|
|
# Range: 100-10000, Default: 1000
|
|
NOTEFLOW_GRPC_QUEUE_MAX_SIZE=1000
|
|
|
|
# Interval for emitting partial transcripts (seconds)
|
|
# Range: 0.5-10.0, Default: 2.0
|
|
NOTEFLOW_GRPC_PARTIAL_CADENCE_SECONDS=2.0
|
|
|
|
# Minimum audio duration before partial inference (seconds)
|
|
# Range: 0.1-5.0, Default: 0.5
|
|
NOTEFLOW_GRPC_MIN_PARTIAL_AUDIO_SECONDS=0.5
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Retention
|
|
# ============================================================================
|
|
# Enable automatic retention policy for completed meetings
|
|
# Values: true|false, Default: false
|
|
NOTEFLOW_RETENTION_ENABLED=false
|
|
|
|
# Days to retain completed meetings before deletion
|
|
# Range: 1-3650 (10 years), Default: 90
|
|
NOTEFLOW_RETENTION_DAYS=90
|
|
|
|
# Hours between retention policy checks
|
|
# Range: 1-168 (1 week), Default: 24
|
|
NOTEFLOW_RETENTION_CHECK_INTERVAL_HOURS=24
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Diarization
|
|
# ============================================================================
|
|
# Enable speaker diarization (identify who spoke when)
|
|
# Values: true|false, Default: false
|
|
NOTEFLOW_DIARIZATION_ENABLED=false
|
|
|
|
# HuggingFace token for accessing pyannote.audio models
|
|
# Required if diarization is enabled, Default: (empty)
|
|
NOTEFLOW_DIARIZATION_HF_TOKEN=
|
|
|
|
# Device for diarization inference
|
|
# Values: auto|cpu|cuda|mps, Default: auto
|
|
NOTEFLOW_DIARIZATION_DEVICE=auto
|
|
|
|
# Streaming diarization latency in seconds (lower = faster but less accurate)
|
|
# Range: 0.1-5.0, Default: 0.5
|
|
NOTEFLOW_DIARIZATION_STREAMING_LATENCY=0.5
|
|
|
|
# Minimum expected number of speakers
|
|
# Range: 1-20, Default: 1
|
|
NOTEFLOW_DIARIZATION_MIN_SPEAKERS=1
|
|
|
|
# Maximum expected number of speakers
|
|
# Range: 1-50, Default: 10
|
|
NOTEFLOW_DIARIZATION_MAX_SPEAKERS=10
|
|
|
|
# Enable post-meeting diarization refinement (higher quality, slower)
|
|
# Values: true|false, Default: true
|
|
NOTEFLOW_DIARIZATION_REFINEMENT_ENABLED=true
|
|
|
|
# Hours to retain diarization job records in database
|
|
# Range: 1-168 (1 week), Default: 1
|
|
NOTEFLOW_DIARIZATION_JOB_TTL_HOURS=1
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Encryption
|
|
# ============================================================================
|
|
# Master encryption key for headless deployments (base64-encoded 32-byte key)
|
|
# If not set, uses system keyring for key storage
|
|
# Format: base64-encoded 32 bytes (256 bits)
|
|
NOTEFLOW_MASTER_KEY=
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Trigger Detection
|
|
# ============================================================================
|
|
# Enable smart recording triggers (opt-in feature)
|
|
# Values: true|false, Default: false
|
|
NOTEFLOW_TRIGGER_ENABLED=false
|
|
|
|
# Auto-start recording on high confidence trigger (without prompt)
|
|
# Values: true|false, Default: false
|
|
NOTEFLOW_TRIGGER_AUTO_START=false
|
|
|
|
# Minimum minutes between trigger prompts (rate limiting)
|
|
# Range: 1-60, Default: 10
|
|
NOTEFLOW_TRIGGER_RATE_LIMIT_MINUTES=10
|
|
|
|
# Default snooze duration in minutes
|
|
# Range: 5-480 (8 hours), Default: 30
|
|
NOTEFLOW_TRIGGER_SNOOZE_MINUTES=30
|
|
|
|
# Trigger polling interval in seconds
|
|
# Range: 0.5-30.0, Default: 2.0
|
|
NOTEFLOW_TRIGGER_POLL_INTERVAL_SECONDS=2.0
|
|
|
|
# Confidence threshold below which triggers are ignored (0.0-1.0)
|
|
# Range: 0.0-1.0, Default: 0.4
|
|
NOTEFLOW_TRIGGER_CONFIDENCE_IGNORE=0.4
|
|
|
|
# Confidence threshold for auto-start recording (0.0-1.0)
|
|
# Range: 0.0-1.0, Default: 0.8
|
|
NOTEFLOW_TRIGGER_CONFIDENCE_AUTO=0.8
|
|
|
|
# Audio signal configuration
|
|
# Enable app audio activity detection
|
|
# Values: true|false, Default: true
|
|
NOTEFLOW_TRIGGER_AUDIO_ENABLED=true
|
|
|
|
# Audio activity threshold in decibels
|
|
# Range: -60.0 to 0.0 dB, Default: -40.0
|
|
NOTEFLOW_TRIGGER_AUDIO_THRESHOLD_DB=-40.0
|
|
|
|
# Audio activity analysis window in seconds
|
|
# Range: 1.0-30.0, Default: 5.0
|
|
NOTEFLOW_TRIGGER_AUDIO_WINDOW_SECONDS=5.0
|
|
|
|
# Minimum active ratio in window to trigger (0.0-1.0)
|
|
# Range: 0.0-1.0, Default: 0.6
|
|
NOTEFLOW_TRIGGER_AUDIO_MIN_ACTIVE_RATIO=0.6
|
|
|
|
# Minimum samples before evaluating audio trigger
|
|
# Range: 1-200, Default: 10
|
|
NOTEFLOW_TRIGGER_AUDIO_MIN_SAMPLES=10
|
|
|
|
# Maximum audio activity samples to retain in history
|
|
# Range: 10-1000, Default: 50
|
|
NOTEFLOW_TRIGGER_AUDIO_MAX_HISTORY=50
|
|
|
|
# Calendar signal configuration
|
|
# Enable calendar-based trigger detection
|
|
# Values: true|false, Default: false
|
|
NOTEFLOW_TRIGGER_CALENDAR_ENABLED=false
|
|
|
|
# Minutes before event start to trigger
|
|
# Range: 0-60, Default: 5
|
|
NOTEFLOW_TRIGGER_CALENDAR_LOOKAHEAD_MINUTES=5
|
|
|
|
# Minutes after event start to keep triggering
|
|
# Range: 0-60, Default: 5
|
|
NOTEFLOW_TRIGGER_CALENDAR_LOOKBEHIND_MINUTES=5
|
|
|
|
# Calendar events as JSON list (for testing without OAuth)
|
|
# Format: JSON array of {start, end, title} objects, Default: []
|
|
NOTEFLOW_TRIGGER_CALENDAR_EVENTS=[]
|
|
|
|
# Foreground-app signal configuration
|
|
# Enable foreground app detection
|
|
# Values: true|false, Default: true
|
|
NOTEFLOW_TRIGGER_FOREGROUND_ENABLED=true
|
|
|
|
# Meeting app name substrings to detect (comma-separated, case-insensitive)
|
|
# Default: zoom,teams,microsoft teams,meet,google meet,slack,webex,discord,skype,gotomeeting,facetime,webinar,ringcentral
|
|
NOTEFLOW_TRIGGER_MEETING_APPS=zoom,teams,microsoft teams,meet,google meet,slack,webex,discord,skype,gotomeeting,facetime,webinar,ringcentral
|
|
|
|
# Meeting app substrings to ignore (comma-separated)
|
|
# Default: (empty)
|
|
NOTEFLOW_TRIGGER_SUPPRESSED_APPS=
|
|
|
|
# Signal weights (must sum to ~1.0 for meaningful confidence scores)
|
|
# Audio signal confidence weight (0.0-1.0)
|
|
# Range: 0.0-1.0, Default: 0.30
|
|
NOTEFLOW_TRIGGER_WEIGHT_AUDIO=0.30
|
|
|
|
# Foreground app signal confidence weight (0.0-1.0)
|
|
# Range: 0.0-1.0, Default: 0.40
|
|
NOTEFLOW_TRIGGER_WEIGHT_FOREGROUND=0.40
|
|
|
|
# Calendar signal confidence weight (0.0-1.0)
|
|
# Range: 0.0-1.0, Default: 0.30
|
|
NOTEFLOW_TRIGGER_WEIGHT_CALENDAR=0.30
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Webhooks
|
|
# ============================================================================
|
|
# Webhook HTTP request timeout in seconds
|
|
# Range: 1.0-60.0, Default: 10.0
|
|
NOTEFLOW_WEBHOOK_TIMEOUT_SECONDS=10.0
|
|
|
|
# Maximum webhook delivery attempts (retries)
|
|
# Range: 0-10, Default: 3
|
|
NOTEFLOW_WEBHOOK_MAX_RETRIES=3
|
|
|
|
# Exponential backoff multiplier for webhook retries
|
|
# Range: 1.1-5.0, Default: 2.0
|
|
NOTEFLOW_WEBHOOK_BACKOFF_BASE=2.0
|
|
|
|
# Maximum response body length to log (characters)
|
|
# Range: 100-10000, Default: 500
|
|
NOTEFLOW_WEBHOOK_MAX_RESPONSE_LENGTH=500
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - LLM / Summarization
|
|
# ============================================================================
|
|
# Temperature for LLM inference (higher = more creative, lower = more focused)
|
|
# Range: 0.0-2.0, Default: 0.3
|
|
NOTEFLOW_LLM_TEMPERATURE=0.3
|
|
|
|
# Default OpenAI model for summarization
|
|
# Examples: gpt-4o-mini, gpt-4o, gpt-4-turbo, Default: gpt-4o-mini
|
|
NOTEFLOW_LLM_DEFAULT_OPENAI_MODEL=gpt-4o-mini
|
|
|
|
# Default Anthropic model for summarization
|
|
# Examples: claude-3-haiku-20240307, claude-3-5-sonnet-20241022, Default: claude-3-haiku-20240307
|
|
NOTEFLOW_LLM_DEFAULT_ANTHROPIC_MODEL=claude-3-haiku-20240307
|
|
|
|
# Timeout for LLM requests in seconds
|
|
# Range: 10.0-300.0, Default: 60.0
|
|
NOTEFLOW_LLM_TIMEOUT_SECONDS=60.0
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Ollama (Local LLM)
|
|
# ============================================================================
|
|
# Ollama server host URL
|
|
# Default: http://localhost:11434
|
|
OLLAMA_HOST=http://localhost:11434
|
|
|
|
# Ollama model name
|
|
# Examples: llama3.2, llama3.1, mistral, Default: llama3.2
|
|
OLLAMA_MODEL=llama3.2
|
|
|
|
# Timeout for Ollama requests in seconds
|
|
# Range: 10.0-600.0, Default: 120.0
|
|
NOTEFLOW_OLLAMA_TIMEOUT_SECONDS=120.0
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Feature Flags
|
|
# ============================================================================
|
|
# Enable AI summarization templates feature
|
|
# Values: true|false, Default: true
|
|
NOTEFLOW_FEATURE_TEMPLATES_ENABLED=true
|
|
|
|
# Enable PDF export format (requires WeasyPrint)
|
|
# Values: true|false, Default: true
|
|
NOTEFLOW_FEATURE_PDF_EXPORT_ENABLED=true
|
|
|
|
# Enable named entity recognition (requires spaCy model download)
|
|
# Values: true|false, Default: false
|
|
NOTEFLOW_FEATURE_NER_ENABLED=false
|
|
|
|
# Enable calendar integration (requires OAuth setup)
|
|
# Values: true|false, Default: false
|
|
NOTEFLOW_FEATURE_CALENDAR_ENABLED=false
|
|
|
|
# Enable webhook notifications
|
|
# Values: true|false, Default: true
|
|
NOTEFLOW_FEATURE_WEBHOOKS_ENABLED=true
|
|
|
|
# ============================================================================
|
|
# Backend (Python) - Calendar Integration
|
|
# ============================================================================
|
|
# Google OAuth client ID (from Google Cloud Console)
|
|
# Default: (empty)
|
|
NOTEFLOW_CALENDAR_GOOGLE_CLIENT_ID=
|
|
|
|
# Google OAuth client secret (from Google Cloud Console)
|
|
# Default: (empty)
|
|
NOTEFLOW_CALENDAR_GOOGLE_CLIENT_SECRET=
|
|
|
|
# Microsoft OAuth client ID (from Azure Portal)
|
|
# Default: (empty)
|
|
NOTEFLOW_CALENDAR_OUTLOOK_CLIENT_ID=
|
|
|
|
# Microsoft OAuth client secret (from Azure Portal)
|
|
# Default: (empty)
|
|
NOTEFLOW_CALENDAR_OUTLOOK_CLIENT_SECRET=
|
|
|
|
# OAuth callback URI (must match redirect URI in OAuth provider)
|
|
# Production: noteflow://oauth/callback (deep link for Tauri desktop app)
|
|
# Testing: http://localhost:8080/oauth/callback (requires manual code extraction)
|
|
# Default: noteflow://oauth/callback
|
|
NOTEFLOW_CALENDAR_REDIRECT_URI=noteflow://oauth/callback
|
|
|
|
# Hours to look ahead for calendar events
|
|
# Range: 1-168 (1 week), Default: 24
|
|
NOTEFLOW_CALENDAR_SYNC_HOURS_AHEAD=24
|
|
|
|
# Maximum events to fetch per sync
|
|
# Range: 1-100, Default: 20
|
|
NOTEFLOW_CALENDAR_MAX_EVENTS=20
|
|
|
|
# Calendar sync interval in minutes
|
|
# Range: 1-1440 (24 hours), Default: 15
|
|
NOTEFLOW_CALENDAR_SYNC_INTERVAL_MINUTES=15
|
|
|
|
# ============================================================================
|
|
# Client (Tauri/Rust) - Server Connection
|
|
# ============================================================================
|
|
# Default server address (host:port)
|
|
# Default: localhost:50051
|
|
NOTEFLOW_SERVER_ADDRESS=localhost:50051
|
|
|
|
# Server URL override (overrides NOTEFLOW_SERVER_ADDRESS if set)
|
|
# Format: http://host:port or https://host:port
|
|
# Default: (empty)
|
|
NOTEFLOW_SERVER_URL=
|
|
|
|
# Connection timeout in seconds
|
|
# Default: 5
|
|
NOTEFLOW_CONNECT_TIMEOUT_SECS=5
|
|
|
|
# Request timeout in seconds
|
|
# Default: 30
|
|
NOTEFLOW_REQUEST_TIMEOUT_SECS=30
|
|
|
|
# Keep-alive interval for gRPC connections in seconds
|
|
# Default: 30
|
|
NOTEFLOW_KEEP_ALIVE_SECS=30
|
|
|
|
# Maximum retry attempts for failed requests
|
|
# Default: 3
|
|
NOTEFLOW_MAX_RETRIES=3
|
|
|
|
# Retry backoff base delay in milliseconds
|
|
# Default: 1000
|
|
NOTEFLOW_RETRY_BACKOFF_MS=1000
|
|
|
|
# ============================================================================
|
|
# Client (Tauri/Rust) - UI
|
|
# ============================================================================
|
|
# Remote UI URL override (loads remote frontend in webview)
|
|
# Example: https://app.example.com
|
|
# Default: (empty)
|
|
NOTEFLOW_UI_URL=
|
|
|
|
# ============================================================================
|
|
# Client (Tauri/Rust) - Audio Capture
|
|
# ============================================================================
|
|
# Audio sample rate in Hz
|
|
# Default: 16000
|
|
NOTEFLOW_SAMPLE_RATE=16000
|
|
|
|
# Number of audio channels (1 = mono, 2 = stereo)
|
|
# Default: 1
|
|
NOTEFLOW_AUDIO_CHANNELS=1
|
|
|
|
# Audio buffer size in frames
|
|
# Default: 1024
|
|
NOTEFLOW_AUDIO_BUFFER_SIZE=1024
|
|
|
|
# Audio capture poll interval in milliseconds
|
|
# Default: 200
|
|
NOTEFLOW_CAPTURE_POLL_MS=200
|
|
|
|
# Audio channel buffer capacity (number of chunks)
|
|
# Default: 128
|
|
NOTEFLOW_CHANNEL_BUFFER_CAPACITY=128
|
|
|
|
# Minimum dB level for audio visualization (silence threshold)
|
|
# Range: -60.0 to 0.0 dB, Default: -60.0
|
|
NOTEFLOW_MIN_DB_LEVEL=-60.0
|
|
|
|
# Maximum dB level for audio visualization
|
|
# Range: -60.0 to 0.0 dB, Default: 0.0
|
|
NOTEFLOW_MAX_DB_LEVEL=0.0
|
|
|
|
# VU meter update rate in Hz (updates per second)
|
|
# Default: 20
|
|
NOTEFLOW_VU_UPDATE_RATE=20
|
|
|
|
# Disable native audio monitoring (app audio activity detection)
|
|
# Values: 1|true to disable, Default: (empty)
|
|
NOTEFLOW_DISABLE_AUDIO_MONITOR=
|
|
|
|
# Disable audio device listing/selection
|
|
# Values: 1|true to disable, Default: (empty)
|
|
NOTEFLOW_DISABLE_AUDIO_DEVICES=
|
|
|
|
# Disable native audio capture
|
|
# Values: 1|true to disable, Default: (empty)
|
|
NOTEFLOW_DISABLE_AUDIO_CAPTURE=
|
|
|
|
# Disable audio tests
|
|
# Values: 1|true to disable, Default: (empty)
|
|
NOTEFLOW_DISABLE_AUDIO_TESTS=
|
|
|
|
# ============================================================================
|
|
# Client (Tauri/Rust) - Storage
|
|
# ============================================================================
|
|
# Enable audio encryption (AES-GCM)
|
|
# Values: true|false, Default: true
|
|
NOTEFLOW_ENCRYPT_AUDIO=true
|
|
|
|
# Maximum audio file size in bytes
|
|
# Default: 524288000 (500 MB)
|
|
NOTEFLOW_MAX_AUDIO_SIZE=524288000
|
|
|
|
# ============================================================================
|
|
# Client (Tauri/Rust) - Trigger Detection
|
|
# ============================================================================
|
|
# Enable trigger detection
|
|
# Values: true|false|1|0, Default: false
|
|
NOTEFLOW_TRIGGERS_ENABLED=false
|
|
|
|
# Trigger polling interval in seconds (minimum 1)
|
|
# Default: 5
|
|
NOTEFLOW_TRIGGER_POLL_SECS=5
|
|
|
|
# Default snooze duration in seconds (minimum 1)
|
|
# Default: 300 (5 minutes)
|
|
NOTEFLOW_SNOOZE_DURATION_SECS=300
|
|
|
|
# Auto-start threshold (confidence 0.0-1.0)
|
|
# Range: 0.0-1.0, Default: 0.8
|
|
NOTEFLOW_AUTO_START_THRESHOLD=0.8
|
|
|
|
# Meeting app name substrings to detect (comma-separated, case-insensitive)
|
|
# Default: zoom,teams,microsoft teams,meet,google meet,slack,webex,discord,skype,gotomeeting,facetime,ringcentral
|
|
NOTEFLOW_MEETING_APPS=zoom,teams,microsoft teams,meet,google meet,slack,webex,discord,skype,gotomeeting,facetime,ringcentral
|
|
|
|
# Maximum dismissed triggers to track (LRU eviction)
|
|
# Default: 100
|
|
NOTEFLOW_MAX_DISMISSED_TRIGGERS=100
|
|
|
|
# Foreground app trigger confidence weight (0.0-1.0)
|
|
# Range: 0.0-1.0, Default: 0.6
|
|
NOTEFLOW_FOREGROUND_APP_WEIGHT=0.6
|
|
|
|
# ============================================================================
|
|
# Client (Tauri/Rust) - Cache
|
|
# ============================================================================
|
|
# Cache backend type
|
|
# Values: memory|redis|none|disabled, Default: memory
|
|
NOTEFLOW_CACHE_BACKEND=memory
|
|
|
|
# Redis URL (required if cache backend is redis)
|
|
# Format: redis://host:port/db, Default: redis://localhost:6379/0
|
|
NOTEFLOW_REDIS_URL=redis://localhost:6379/0
|
|
|
|
# Default TTL for cached items in seconds
|
|
# Default: 300 (5 minutes)
|
|
NOTEFLOW_CACHE_TTL_SECS=300
|
|
|
|
# Maximum memory cache items
|
|
# Default: 1000
|
|
NOTEFLOW_CACHE_MAX_ITEMS=1000
|
|
|
|
# ============================================================================
|
|
# Frontend (Vite/React)
|
|
# ============================================================================
|
|
# Note: Vite automatically exposes import.meta.env.MODE (development/production)
|
|
# and import.meta.env.BASE_URL, but these don't need to be configured here.
|
|
|
|
# Development mode flag (controls developer-only UI)
|
|
# Values: true|false, Default: (auto via Vite mode)
|
|
VITE_DEV_MODE=
|
|
|
|
# E2E mode flag (enables test-only UI behaviors)
|
|
# Values: true|false|1|0, Default: false
|
|
VITE_E2E_MODE=false
|
|
|
|
# Application version string (displayed in Settings)
|
|
# Default: dev
|
|
VITE_APP_VERSION=dev
|
|
|
|
# Ollama API endpoint URL (override default)
|
|
# Default: http://localhost:11434/api
|
|
VITE_OLLAMA_ENDPOINT=http://localhost:11434/api
|
|
|
|
# ============================================================================
|
|
# Optional LLM Provider API Keys
|
|
# ============================================================================
|
|
OPENAI_API_KEY=
|
|
OPENAI_BASE_URL=https://api.openai.com/v1
|
|
ANTHROPIC_API_KEY=
|
|
|
|
# ============================================================================
|
|
# Device Test Harness (Desktop)
|
|
# ============================================================================
|
|
# Enable device integration tests
|
|
# Values: 1|true|0|false, Default: 0
|
|
NOTEFLOW_DEVICE_TESTS=0
|
|
|
|
# Test input device name (leave empty to use system default)
|
|
# Find device names:
|
|
# macOS: system_profiler SPAudioDataType | grep "Manufacturer\|_name"
|
|
# Linux: arecord -l (input) / aplay -l (output)
|
|
# Windows: Check Sound settings > Device properties
|
|
# Default: (empty, uses system default)
|
|
NOTEFLOW_TEST_INPUT_DEVICE=
|
|
|
|
# Test output device name (leave empty to use system default)
|
|
# Default: (empty, uses system default)
|
|
NOTEFLOW_TEST_OUTPUT_DEVICE=
|
|
|
|
# Test sample rate in Hz (typically matches NOTEFLOW_SAMPLE_RATE)
|
|
# Default: 16000
|
|
NOTEFLOW_TEST_SAMPLE_RATE=16000
|
|
|
|
# Test channels (typically matches NOTEFLOW_AUDIO_CHANNELS)
|
|
# Default: 1 (mono)
|
|
NOTEFLOW_TEST_CHANNELS=1
|
|
|
|
# ============================================================================
|
|
# E2E / Integration Testing
|
|
# ============================================================================
|
|
# Enable web E2E tests
|
|
# Values: 1|true|0|false, Default: 0
|
|
NOTEFLOW_E2E=0
|
|
|
|
# Base URL for Playwright E2E tests
|
|
# Default: http://localhost:1420
|
|
NOTEFLOW_E2E_BASE_URL=http://localhost:1420
|
|
|
|
# Skip starting the Playwright web server
|
|
# Values: 1|true to skip, Default: (empty)
|
|
NOTEFLOW_E2E_NO_SERVER=
|
|
|
|
# Enable native E2E mode (Tauri) for extended timeouts
|
|
# Values: 1|true|0|false, Default: 0
|
|
NOTEFLOW_E2E_NATIVE=0
|
|
|
|
# Enable Rust gRPC integration tests
|
|
# Values: 1|true|0|false, Default: 0
|
|
NOTEFLOW_INTEGRATION=0
|
|
|
|
# gRPC URL for Rust integration tests
|
|
# Default: http://localhost:50051
|
|
NOTEFLOW_GRPC_URL=http://localhost:50051
|
|
|
|
# Workspace ID for webhook integration tests
|
|
# Default: (empty)
|
|
NOTEFLOW_WORKSPACE_ID=
|