Configure Oris in the companion app. ~/.config/oris/env is the single source of truth.
Oris settings live in the Oris companion app, not in the Obsidian plugin. Open the app (it lives wherever you installed it — typically your Applications folder) after the setup walkthrough to manage settings.
The Obsidian plugin is a thin recording trigger: it passes recording commands to the bash layer and inserts the transcript marker into your active note. Configuration — provider, API keys, transcription model, retention — all comes from the app, which writes ~/.config/oris/env.
Layout
After the walkthrough, the app’s home window is the settings manager. It is organized into four tabs:
- General — setup status, walkthrough controls, updates, build info
- Transcription — WhisperKit model, language
- Summarization — provider selection, credentials, auto-order, “Test connection”
- Recordings — audio retention, auto-stop on silence
General tab
- Setup status — compact health summary of each setup step (permissions, model warmup, plugin install). Loads quietly on every app open; no animation runs unless you explicitly request a re-check.
- Re-check permissions — runs the test capture in place (the same ~8-second capture the walkthrough uses) without requiring a full walkthrough re-run. Use this after adjusting audio routing or system-audio settings to confirm both tracks are live.
- Re-run walkthrough — resets wizard progress so you can step through the guided setup again. Settings, models, and TCC grants are untouched.
- Updates — an Automatically check for updates toggle (on by default — Oris checks daily in the background and prompts you to install when a new version is found) and a Check for Updates… button to check right now. See Automatic updates for how the signed over-the-air update flow works.
- Version footer — current build info.
The vault is established during the walkthrough and is not editable here; it is where the plugin is installed and where notes land.
Saving any tab shows a brief “Settings saved” confirmation.
Transcription tab
- Transcription model (
WHISPERKIT_MODEL) — friendly dropdown: Large v3 Turbo (recommended) plus other WhisperKit models, and a “Custom…” option that accepts a free-text model name. Default is Large v3 Turbo (large-v3-v20240930_turbo). Larger models are more accurate but slower; the default is a good balance.
- Language (
LANGUAGE) — spoken-language hint for WhisperKit. Default: Auto-detect (recommended) — WhisperKit infers the language from the first few seconds of audio. To force a specific language, choose from the curated list (English, Spanish, French, German, Italian, Portuguese, Dutch, Japanese, Chinese, Korean) or type an ISO 639-1 code in the Custom field. Transcription handles all languages Whisper supports; summary quality depends on the chosen provider and model.
Summarization tab
- Summaries enabled (
SUMMARIZE_ENABLED) — turn off to skip the LLM step entirely; the transcript still lands in your note.
- Provider (
LLM_PROVIDER) — pick the LLM backend: auto, openai, anthropic, azure, ollama, or local-mlx. The credential fields below change to match the selected provider; values for all providers are kept on disk so switching back doesn’t lose them.
Each cloud/network provider section includes a “Test connection” button. It validates the current (unsaved) form values by running a minimal live request (oris-engine check-provider <provider>) and immediately shows the outcome — “Connected” or a specific error pointing at the exact problem (e.g. “Invalid API key (401)”, “Model not found”, “Endpoint unreachable”). No need to run a full recording to find out a key is wrong.
Provider credential fields:
- OpenAI —
OPENAI_API_KEY and optional OPENAI_MODEL (default gpt-4o-mini).
- Anthropic —
ANTHROPIC_API_KEY and optional ANTHROPIC_MODEL (default claude-haiku-4-5).
- Azure OpenAI —
AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY, AZURE_OPENAI_DEPLOYMENT, optional AZURE_OPENAI_API_VERSION.
- Ollama —
OLLAMA_ENDPOINT and optional OLLAMA_MODEL.
- Local model override (
LLM_MODEL_OVERRIDE) — pin a specific HuggingFace repo for local-mlx summarization, bypassing the auto-switch by transcript length. See model-override.
Auto-order
When provider is set to auto, the tab shows a drag-reorderable list of providers. Drag to define the order auto probes them; the order is written as LLM_AUTO_ORDER (comma-separated provider ids, e.g. openai,anthropic,azure,ollama,local-mlx). Only configured providers are actually tried, regardless of their position in the list. See provider-auto-detection for the default probing order and fallback behavior.
Recordings tab
- Audio retention days (
ORIS_AUDIO_RETENTION_DAYS) — how long raw .m4a files are kept before opportunistic cleanup at the next record-start. Default 90. Set to 0 to disable cleanup.
- Auto-stop on silence (
AUTO_STOP_SILENCE_SECONDS) — a minutes stepper with an on/off switch. When both the mic and system-audio tracks go quiet for this long, the recording stops itself and transcription runs normally. Default 5 minutes; turn the switch off to keep recording until you stop manually (written as 0). A warn-me field (SILENCE_WARN_BEFORE_SECONDS, default 60s) sets how many seconds before the auto-stop you get a heads-up notification. Changes apply to your next recording. The lower-level knobs — silence threshold (SILENCE_THRESHOLD_DB) and initial grace period (SILENCE_INITIAL_GRACE_SECONDS) — remain power-user env; edit them directly in ~/.config/oris/env. See auto-stop-on-silence.
How settings are stored
Save writes all configured fields to ~/.config/oris/env. The runtime reads this file (via lib/lib.sh) as the authoritative config source. Sensitive values — API keys — live in this file (mode 0600), outside any vault or git repo.
Power-user / operational tuning keys are not surfaced in the app UI — they stay file-only knobs you edit in ~/.config/oris/env directly: silence-watcher thresholds (SILENCE_THRESHOLD_DB, SILENCE_INITIAL_GRACE_SECONDS), dedup/VAD (ORIS_DEDUP_*, ORIS_MIC_VAD_*), max recording length (ORIS_MAX_RECORDING_SECONDS), audio directory (ORIS_AUDIO_DIR), state directory (ORIS_STATE_DIR). See env.example in the repo for documented defaults. The app preserves these lines untouched on every Save. (The auto-stop duration and warn-me lead-time — AUTO_STOP_SILENCE_SECONDS / SILENCE_WARN_BEFORE_SECONDS — are now managed by the Recordings tab, not preserved-untouched file-only keys.)
The Obsidian plugin settings tab
The plugin’s Settings → Oris tab now shows only detected paths (repo path and vault dir, read-only) and a link to the Oris app for configuration. Recording, the mic ribbon, the status bar pill, and “Retry failed summaries” all work the same as before.