.env controls runtime behavior. Every field has a default in src/utils/settings.py; setup.sh writes the initial file. For normal setup, use:
eyra settings
eyra settings get MODEL
eyra settings set LIVE_SPEECH_ENABLED false
eyra settings shows the simple controls first and redacts secrets. This reference lists the full .env surface for advanced configuration.

Provider and models

SettingDefaultPurpose
API_BASE_URLhttp://localhost:11434/v1OpenAI-compatible provider endpoint
API_KEYollamaProvider key
USE_MOCK_CLIENTfalseBypass backend/model checks for smoke tests
MODELgemma4:e4bMain model
VISION_MODELemptyScreen/image model, falls back to MODEL
AUTO_PULL_MODELStruePull missing Ollama models
COMPLEXITY_ROUTING_ENABLEDfalseEnable model-tier routing
SIMPLE_MODELqwen3.5:2bSimple tier
MODERATE_MODELgemma4:e4bModerate tier
WORKER_MODELemptyBackground worker model, falls back to MODEL

Voice

SettingDefaultPurpose
LIVE_LISTENING_ENABLEDtrueLocal microphone input
LIVE_SPEECH_ENABLEDtrueLocal speech output
SPEECH_COOLDOWN_MS3000Minimum gap between spoken responses
VOICE_INPUT_DEVICEemptysounddevice index or name
VOICE_SAMPLE_RATE16000VAD and WAV sample rate
VOICE_DEBUG_RECORD_SECONDS3/voice-diagnose capture length
VOICE_DIAGNOSTIC_SAVE_AUDIOfalseSave diagnostic audio locally
VOICE_SILENCE_MS1500Silence after speech before processing
VOICE_VAD_THRESHOLD0.15Silero speech threshold
VOICE_MAX_DURATION_SECONDS300Maximum length of one captured utterance
HANDS_FREE_MODEfalseShow no-hands intent in status/capabilities

Tasks and stores

SettingDefaultPurpose
BACKGROUND_TASKS_ENABLEDtrueEnable background task manager
MAX_BACKGROUND_TASKS2Concurrent tasks
TASK_TIMEOUT_SECONDS300Per-task timeout
MAX_WORKER_TOOL_STEPS8Tool loop step cap for workers
TOOL_TIMEOUT_SECONDS30Per-tool timeout
MODEL_CONCURRENCY1Concurrent model calls
TASK_STATUS_UPDATEStruePrint task status updates
JOB_STORE_PATH~/.local/share/eyra/jobs.sqlite3Jobs, logs, artifacts, ledger
TRIGGER_STORE_PATH~/.local/share/eyra/triggers.sqlite3Trigger definitions
TRIGGER_CHECK_INTERVAL_SECONDS0.5Trigger check interval
TRIGGER_TIMEOUT_SECONDS300Trigger action timeout

Tool gates

SettingDefaultPurpose
NETWORK_TOOLS_ENABLEDfalseWeather, URL fetch, browser tools
OS_TOOLS_ENABLEDfalseShell, UI, app/window, LaunchAgent, OCR tools
SCREEN_OCR_COMMANDemptyLocal OCR command reading PNG bytes from stdin
AGENT_TOOLS_ENABLEDfalseBuilt-in agent inspection/delegation tools
EXTERNAL_AGENT_TOOLS_ENABLEDfalseConfigured external agent adapters
EXTERNAL_AGENT_CONFIG_PATH~/.config/eyra/agents.jsonExternal agent config
MCP_TOOLS_ENABLEDfalsestdio MCP bridge
MCP_CONFIG_PATH~/.config/eyra/mcp.jsonMCP config

Memory and instructions

SettingDefaultPurpose
MEMORY_ENABLEDtrueEnable compact local memory
MEMORY_PROVIDERmcp-prose-memoryMemory backend
MEMORY_AUTO_SAVE_ENABLEDtrueAllow compact automatic saves from likely preference/profile turns
MEMORY_PATH~/.mcp-prose-memory/memory.jsonLocal memory JSON file
MEMORY_MCP_COMMANDmcp-prose-memoryMCP memory command
MEMORY_MCP_ARGSemptyOptional memory command args
MEMORY_CONTEXT_MAX_CHARS1500Max memory context injected into model calls
MEMORY_FACT_MAX_CHARS220Max stored fact length after compaction
MEMORY_SECTION_MAX_FACTS30Expected per-section memory limit
MEMORY_WRITE_REQUIRE_CONFIRMATIONfalseSkip automatic non-explicit saves unless the user directly says to remember something
MEMORY_DEBUGfalseExtra memory diagnostics
AGENTS_FILE~/.config/eyra/AGENTS.mdUser rules loaded into context
AGENTS_MAX_CHARS1200Max compacted AGENTS.md context
PERSONALITY_FILE~/.config/eyra/personality.mdUser personality loaded into context
PERSONALITY_MAX_CHARS800Max compacted personality context
Memory is local by default. Eyra stores compact key/value facts and refuses raw conversations, secrets, screenshots, clipboard dumps, stack traces, PDF text, and long tool output. Explicit remember commands save immediately because the user directly requested the write; MEMORY_WRITE_REQUIRE_CONFIRMATION=true only blocks automatic saves from ordinary turns.

Connectors

SettingDefaultPurpose
CONNECTORS_ENABLEDfalseEnable universal connector workers
CONNECTORS_CONFIG_PATH~/.config/eyra/connectors.jsonConnector manifest config
CONNECTORS_ALLOWED_ROOTSemptyConnector sandbox roots, falls back to FILESYSTEM_ALLOWED_PATHS
CONNECTORS_TIMEOUT_SECONDS600Maximum connector runtime
CONNECTORS_OUTPUT_CAP_BYTES32768Maximum connector output stored or returned
CONNECTORS_ALLOW_REMOTEfalseAllow remote HTTP connectors
CONNECTORS_ALLOW_PYTHON_MODULEfalseAllow guarded Python module connectors

Filesystem

SettingDefaultPurpose
FILESYSTEM_ALLOWED_PATHS~/Documents,~/Desktop,~/Downloads,/tmpSandbox roots
FILESYSTEM_DEFAULT_PATH~/DocumentsBase for relative paths

Web UI and Realtime

SettingDefaultPurpose
WEB_UI_ENABLEDfalseStart built-in Web UI
WEB_UI_HOST127.0.0.1Bind host
WEB_UI_PORT8765Bind port
WEB_UI_TOKENemptyOptional fixed token
WEB_UI_REQUIRE_TOKENautoAuth mode
WEB_UI_MAX_REQUEST_BYTES1000000Request size cap
REALTIME_VOICE_ENABLEDfalseOnline browser Realtime voice
REALTIME_MODELgpt-realtimeRealtime model
REALTIME_VOICEmarinRealtime voice
OPENAI_API_KEYemptyRealtime API key
REALTIME_TOOLS_ENABLEDfalseExpose safe Realtime tools
REALTIME_ALLOWED_TOOLSemptyRealtime tool allowlist

Routing debug

SettingDefaultPurpose
ROUTING_DEBUGfalseLog route traces
Use /route last for the most recent trace without enabling debug logging.