Olenji command and model reference
Companion to the user guide · Version 1.2.1 · 1 November 2026
Use this reference for exact commands, model IDs, settings, and agent request formats. For ordinary tasks and plain-language explanations, start with the user guide.
This reference describes the same inspected source as the user guide. Names and model counts are not substitutes for checking whether a feature runs on your computer.
Contents
- CLI command directory
- Passive environment advice
- MCP tool directory
- Model catalog
- Model profiles
- Saved settings
- Recognition settings
- Edit and translation examples
- Translation service setup
- Local API and agent contracts
- Reviewed build and evidence
CLI command directory
Every command begins with olenji. Use olenji COMMAND --help for all options in your installed build. --json requests structured output; readable exports write their document bytes rather than a normal command-result wrapper.
The complete option definitions are also stored in reference-inventory.json in this bundle. They are extracted from the parser, not maintained as a second hand-written parser.
| Command | Function |
|---|---|
serve |
Run the loopback service in the foreground; set host, port, and log level. |
service start |
Start or connect to the selected workspace service. |
service status |
Report service ownership, running state, and client/service versions. |
service stop |
Request shutdown and normally wait for owned workers to finish. |
service logs |
Read a bounded suffix of the service log. |
doctor |
Report current platform, inference, capture, and capacity information. |
environment |
Return passive process facts and optional task/context advice without creating a workspace or starting a service. |
docs |
Print the installed offline handbook link; use --open, --list, or --section ID. Does not start a service or create a workspace. |
schema |
Return the versioned API schema. |
models list |
List the bundled catalog; optionally filter installed models or text. |
models search |
Search the bundled catalog by a text query. |
models inspect |
Inspect one model’s artifact, language, compatibility, and readiness. |
models verify |
Recheck managed model files against recorded identities. |
models remove |
Remove a model’s managed weights when no worker or live session owns them. |
models plan-install |
Plan a model/profile install, optionally filtering host compatibility or language. |
models install |
Install the selected model/profile; wait by default or return a job. |
models parity |
Report dated catalog parity and host-specific installation/readiness. |
transcribe |
Transcribe one or several local paths with shared options; each gets its own session. |
live start |
Start microphone, device, system, or browser capture; optionally open a view. |
live pause |
Pause the selected live session. |
live resume |
Resume the selected paused session. |
live stop |
Stop capture and flush/finalize accepted audio; inspect any returned job. |
live status |
Inspect the live session’s stored state. |
live sources |
Discover available input IDs and host blockers. |
hotkey set |
Bind a chosen global shortcut using a ready speech model; --delivery insert explicitly requests focused-field dictation. OS permission and a supported field are required. |
hotkey status |
Inspect the binding, approved trigger, owned recording and finalization job. |
hotkey disable |
Unbind and finalize only the shortcut's owned recording. |
sessions list |
List sessions, with a text filter and result limit. |
sessions search |
Search session titles and source text. |
sessions get |
Read a full session snapshot in this archive; prefer window/API metadata for bounded reads. |
sessions snapshot |
Read the full source, tracks, notes, labels, and cursor. |
sessions delete |
Permanently delete an inactive session and its managed data. |
sessions window |
Read selected source and connected translation context from a JSON query. |
sessions rename |
Change a session title. |
sessions configure |
Patch allowed session metadata using a JSON object. |
sessions refine |
Re-transcribe retained audio while preserving human-edited regions. |
sessions create |
Create an empty session for supplied transcript text. |
jobs list |
List durable operations. |
jobs get |
Inspect one job’s state, progress, result, or error. |
jobs cancel |
Request cancellation of the selected owned operation. |
jobs wait |
Observe a job until terminal state or an optional wait budget. |
events |
Read a bounded batch or follow replayable changes from a cursor. |
segments list |
Read source with time/speaker filters and cursor-consistent paging. |
segments add |
Append supplied timed source text. |
segments edit |
Correct text, time, or speaker with an expected revision. |
segments history |
Read prior revisions of one turn. |
segments split |
Split a turn at a time with explicit left/right text. |
segments merge |
Merge adjacent turns from a JSON file containing revisions. |
speakers list |
List session-local speaker labels. |
speakers add |
Create a user-supplied label. |
speakers rename |
Change a label without inferring identity. |
speakers color |
Set a six-digit hexadecimal display color. |
speakers merge |
Merge a label into another label in the same session. |
translate |
Run one configured-provider translation job. |
translations list |
Read translation tracks, source references, and stale state. |
translations put |
Write translations supplied in a JSON file or stdin. |
annotations list |
Read stored notes and markers. |
annotations add |
Create an annotation, optionally linked to source turns. |
annotations delete |
Delete a selected annotation. |
ui open |
Open/reuse a paired view; optionally print a one-use URL or await acknowledgment. |
ui list |
List registered views. |
ui status |
Inspect view connection, requested/applied revision, and visibility. |
ui configure |
Patch structured presentation settings, optionally guarded by a revision. |
ui detach |
Detach a view without ending service-owned capture. |
tui |
Render interactive captions or return one bounded machine snapshot. |
export |
Write JSON, JSONL, text, Markdown, subtitles, or standalone HTML. |
providers list |
List configured text providers without exposing secret keys. |
providers add |
Create or update a text endpoint and optional credential. |
providers remove |
Remove a provider and its stored credential. |
config get |
Read effective workspace defaults. |
config set |
Set one supported default using a scalar or string. |
mcp serve |
Run the stdio MCP adapter for an existing agent. |
api |
Call an authenticated local GET/POST/PATCH/DELETE operation. |
Passive environment advice
This interface is available from 1.1.0 across the Python, npm and direct-download routes. olenji environment --json and olenji_environment use the same passive report. The agent decides how to use it under the user's request and the host's permissions. Advice does not authorize an operation, replace the task or establish user-side access.
| Input | Accepted values |
|---|---|
--task TASK / task |
inspect (default), live_transcription, file_transcription, text_translation |
--context JSON / context |
An optional object with only the four fields below; omitted fields remain unknown. |
context.host_relation |
unknown, same_device, remote |
context.audio_access |
unknown, available, unavailable |
context.file_access |
unknown, available, unavailable |
context.presentation |
unknown, browser, artifact, text |
Context records what the caller declares. It does not test audio or file access, grant permission, identify the user's computer, or prove that a browser is visible. Process facts describe the process answering the request; operating-system or remote-session hints are not proof of the LLM's location or the user's device relationship. Invalid tasks, values and unknown context fields are rejected.
The returned contract_version is 1.0; this is independent of application_version. observed_at is a UTC observation time. authority marks the report advisory. runtime_host describes the reporting process, including interface (cli, mcp, service or direct python), OS, architecture, Python, CPU count and dependency executable-presence booleans. architecture_source records how the architecture was obtained; on Windows it is a canonical, unverified environment hint or unknown. Windows release information is numeric and obtained without launching a shell. facts_note explains those limits. CPU count is a logical-host observation, not an allocation or container-quota guarantee; it is null if undetermined. Unavailable OS facts remain unknown. hints carries limited SSH/container/display indicators with their interpretation. The report does not expose raw environment values, usernames, hostname, credentials, device lists or executable/workspace paths.
caller_reported retains normalized context and its declared provenance. unverified keeps audio capture, microphone/system-audio permission, model readiness, browser reachability and the user's device unknown. recommendation provides a route, reason, at most three next steps, a concise user message and a handoff prompt where applicable; boundaries explains its limits. Hints do not select the route or turn declared context into a verified fact. Invalid input returns INVALID_ARGUMENT without echoing the supplied values.
The standalone CLI path runs before workspace setup and performs no service request, network operation, device/model probe, recording, job, download or browser launch. The MCP tool is passive too, while starting mcp serve retains its existing workspace setup. Use doctor or olenji_capabilities separately for heavier service readiness; enumerated source availability still does not prove granted permission or incoming audio. The doctor's local_only value is a workspace default; inspect the selected session before relying on its provider policy.
Source discovery labels its evidence as scope:service_host and availability:adapter_or_prerequisites; permissions and audio flow are not_checked, and the user-device relationship is unknown. Existing available booleans keep their original prerequisite/enumeration meaning. MCP initialization supplies short advisory discovery text; the complete conditional workflow is available through olenji://agent-guide when the agent needs it.
For a supplied recording accessible to an authorized remote environment, use that environment and return a file or artifact. For live audio unavailable there, give a concise local-agent handoff. Unknown access calls for a targeted check, not an automatic platform switch. Text-only translation requires no speech model or audio capture. The agent instructions describe the short user-facing route.
MCP tool directory
These are the tools available to a connected agent. A tool's input schema defines its accepted fields. CLI operations without a dedicated MCP tool remain available through the terminal or local API.
| Tool | Function |
|---|---|
olenji_environment |
Report passive process facts and optional task/context advice; no service or audio/model probe. |
olenji_capabilities |
Inspect service-host capture/model readiness and report passive MCP-host context; availability does not verify user-device access, permission or flowing audio. |
olenji_push_to_talk_status |
Inspect the global shortcut and last owned capture without enabling recording. |
olenji_configure_push_to_talk |
Bind a chosen shortcut; default output: transcript saves each hold. Explicit output: insert also writes the finalized text into the same supported focused field, without sending. |
olenji_disable_push_to_talk |
Unbind and stop only the shortcut's owned recording. |
olenji_speaker_models |
Inspect speaker backend choices, presets, readiness and live support. |
olenji_list_models |
Read catalog identities, compatibility, readiness, and inference request controls. |
olenji_plan_install |
Plan artifacts, size, terms, and exclusions for a model/profile. |
olenji_install_model |
Install and verify a model/profile; return a job. |
olenji_model_parity |
Report the reviewed FluidVoice identity set and host-specific blockers. |
olenji_list_sessions |
Search session titles and transcript text, with a bounded result count. |
olenji_session |
Read bounded session metadata and speaker labels, not the complete transcript. |
olenji_transcribe |
Submit one local media path; resolve relative paths at the MCP caller. |
olenji_live_start |
Start the selected capture route; browser sources still need a supplying tab. |
olenji_capture_control |
Pause, resume, or stop a selected capture; stop can return a finalization job. |
olenji_job |
Read durable job status, progress, result, and typed errors. A completed profile job can still report exclusions in result.complete. |
olenji_cancel_job |
Request cancellation of a durable inference/download job. |
olenji_events |
Read changes after a cursor in bounded batches. |
olenji_segments |
Read committed turns with filters and cursor-consistent pagination. |
olenji_edit_segment |
Patch source text, timing, or speaker with the expected revision. |
olenji_write_translations |
Write translations against exact source revisions without replacing source text. |
olenji_translate |
Start one configured-provider translation job under session privacy policy. |
olenji_views |
Inspect view connection, desired/applied revisions, heartbeat, and visibility. |
olenji_open_view |
Open or reuse a paired local view; optionally return a pairing link. |
olenji_configure_view |
Set structured presentation and optional session/revision preconditions. |
olenji_name_speaker |
Apply a user-supplied name or display color to an existing speaker cluster; does not infer a person's identity. |
olenji_annotate |
Store an agent-authored note, task, decision, summary, or other supported marker. |
olenji_export |
Export seven formats to a local destination or return bounded inline content. |
olenji_create_session |
Create an empty session for agent-supplied transcript segments and annotations. |
olenji_session_window |
Read a bounded source window with whole translation-group context, revisions, and cursor. |
olenji_configure_session |
Update title or allowed metadata, including privacy and automatic translation. |
olenji_refine |
Re-transcribe retained audio with a selected model, preserving human-edited regions. Returns a durable job. |
olenji_delete_session |
Permanently delete an inactive session, retained audio, transcript and associated event payloads. |
olenji_inspect_model |
Inspect exact artifacts, capabilities, language constraints, readiness and provenance for one model. |
olenji_verify_model |
Recheck installed model files against their recorded hashes. |
olenji_remove_model |
Remove model weights from managed storage. Refuses while inference or a live session holds a model lease. |
olenji_add_segment |
Append a timed committed source segment to an agent-created session. |
olenji_segment_history |
Read revision history for one source segment. |
olenji_split_segment |
Split one transcript turn at a timestamp with an expected source revision. |
olenji_merge_segments |
Merge adjacent transcript turns with expected revisions for every source segment. |
olenji_create_speaker |
Create a speaker label supplied by the user, without guessing identity. |
olenji_merge_speakers |
Merge a source acoustic cluster into another cluster in the same session; affected translations become stale. |
olenji_providers |
List configured translation endpoints and model names; secret keys are never returned. |
olenji_configure_provider |
Configure a local/HTTPS compatible text endpoint and optional secret. |
olenji_remove_provider |
Remove a configured translation provider and its stored credential. |
olenji_detach_view |
Persistently detach a browser view. Service-owned capture continues; its viewer can deliberately reconnect. |
Model catalog
An entry is an exact model size or conversion, not necessarily a unique model family. Each entry needs a compatible host and runtime. Native model streaming capability does not prove that Olenji uses a continuous streaming decoder for that entry.
The FV (FluidVoice) column identifies the dated 17-entry comparison set. The catalog's terms and sources are recorded in the machine-readable inventory. Inspect the installed app for actual readiness:
olenji models inspect MODEL_ID --json
| Model ID | Artifact source | Runtime and host | FV |
|---|---|---|---|
whisper.tiny.q8_0 |
handy-computer/whisper-tiny-gguf | transcribe.cpp; Desktop | Yes |
whisper.base.q8_0 |
handy-computer/whisper-base-gguf | transcribe.cpp; Desktop | Yes |
whisper.small.q8_0 |
handy-computer/whisper-small-gguf | transcribe.cpp; Desktop | Yes |
whisper.medium.q8_0 |
handy-computer/whisper-medium-gguf | transcribe.cpp; Desktop | Yes |
whisper.large-v3-turbo.q8_0 |
handy-computer/whisper-large-v3-turbo-gguf | transcribe.cpp; Desktop | Yes |
whisper.large-v3.q8_0 |
handy-computer/whisper-large-v3-gguf | transcribe.cpp; Desktop | Yes |
parakeet.tdt-v3.coreml |
FluidInference/parakeet-tdt-0.6b-v3-coreml | apple-coreml; Apple Silicon 14+ | Yes |
parakeet.tdt-v2.coreml |
FluidInference/parakeet-tdt-0.6b-v2-coreml | apple-coreml; Apple Silicon 14+ | Yes |
fluid-speech.mini.coreml |
FluidVoice model host | apple-coreml; Apple Silicon 15+ | Yes |
fluid-speech.pico.coreml |
FluidVoice model host | apple-coreml; Apple Silicon 15+; weight terms unresolved | Yes |
parakeet.flash.160ms.coreml |
FluidInference/parakeet-realtime-eou-120m-coreml | apple-coreml; Apple Silicon 14+ | Yes |
cohere.transcribe-2026-03.6bit.coreml |
BarathwajAnandan/cohere-transcribe-03-2026-CoreML-6bit | apple-coreml; Apple Silicon 15+ | Yes |
nemotron.3.5.offline.6bit.coreml |
BarathwajAnandan/nemotron-3.5-asr-offline-6bit-CoreML | apple-coreml; Apple Silicon 14+ | Yes |
nemotron.3.5.streaming320.int8.coreml |
BarathwajAnandan/nemotron-3.5-asr-streaming320-int8-CoreML | apple-coreml; Apple Silicon 15+ | Yes |
apple.speech.legacy |
Apple OS assets | apple-speech; macOS 14+ | Yes |
apple.speech.analyzer |
Apple OS assets | apple-speech; Apple Silicon 26+ | Yes |
faster-whisper.tiny |
Systran/faster-whisper-tiny | faster-whisper; Desktop | — |
faster-whisper.base |
Systran/faster-whisper-base | faster-whisper; Desktop | — |
faster-whisper.small |
Systran/faster-whisper-small | faster-whisper; Desktop | — |
faster-whisper.medium |
Systran/faster-whisper-medium | faster-whisper; Desktop | — |
faster-whisper.large-v3-turbo |
mobiuslabsgmbh/faster-whisper-large-v3-turbo | faster-whisper; Desktop | — |
faster-whisper.large-v3 |
Systran/faster-whisper-large-v3 | faster-whisper; Desktop | — |
qwen3-asr.0.6b.q8_0 |
handy-computer/qwen3-asr-0.6b-gguf | transcribe.cpp; Desktop | — |
qwen3-asr.1.7b.q8_0 |
handy-computer/qwen3-asr-1.7b-gguf | transcribe.cpp; Desktop | Yes |
moonshine.streaming-tiny.q8_0 |
handy-computer/moonshine-streaming-tiny-gguf | transcribe.cpp; Desktop | — |
moonshine.streaming-small.q8_0 |
handy-computer/moonshine-streaming-small-gguf | transcribe.cpp; Desktop | — |
moonshine.streaming-medium.q8_0 |
handy-computer/moonshine-streaming-medium-gguf | transcribe.cpp; Desktop | — |
voxtral.realtime-4b.q4_k_m |
handy-computer/Voxtral-Mini-4B-Realtime-2602-gguf | transcribe.cpp; Desktop | — |
fluid-speech.mini.onnx |
FluidVoice-Labs/fluid-speech-mini-onnx | onnxruntime; Desktop | — |
diarization.wespeaker.en |
Sherpa ONNX release asset | sherpa-onnx; Desktop | — |
diarization.nemotron-3.onnx |
altunenes/parakeet-rs · Nemotron 3 export | diarization-onnx; files | — |
diarization.pyannote.onnx |
Versioned Sherpa Pyannote segmentation and WeSpeaker pack | sherpa-onnx; files | — |
diarization.sortformer.v2.onnx |
altunenes/parakeet-rs · streaming v2 export | diarization-onnx; files | — |
diarization.sortformer.v2.1.onnx |
altunenes/parakeet-rs · streaming v2.1 export | diarization-onnx; files | — |
diarization.ls-eend.ami.onnx |
GradientDescent2718/LS-EEND-ONNX · AMI | diarization-onnx; files | — |
diarization.ls-eend.callhome.onnx |
GradientDescent2718/LS-EEND-ONNX · CALLHOME | diarization-onnx; files | — |
diarization.ls-eend.dihard2.onnx |
GradientDescent2718/LS-EEND-ONNX · DIHARD II | diarization-onnx; files | — |
diarization.ls-eend.dihard3.onnx |
GradientDescent2718/LS-EEND-ONNX · DIHARD III | diarization-onnx; files | — |
These eight new choices are offline-only, capped at one hour of normalized audio and independently implemented from public ONNX/Sherpa contracts. They do not establish OVE Core ML output equivalence or measured quality for every recording. Inspect exact immutable artifacts, terms, speaker_presets, live_supported and compatibility before installation. Windows ARM64 cannot use the current SOXR-based ONNX stack; supported x64 Python or the Sherpa route is an alternative. Native foreign-OS execution remains separate from binary availability.
Model profiles
A profile is a fixed selection for installation. It is not automatic routing between models.
| Profile | Included selection |
|---|---|
recommended |
Faster Whisper Tiny and WeSpeaker. |
portable |
Faster Whisper Tiny, Faster Whisper Small, and WeSpeaker. |
live |
Moonshine Streaming Tiny, Faster Whisper Small, and WeSpeaker. |
diarization |
All nine speaker identities; inspect the plan rather than download every model by default. |
fluidvoice-parity, fluidvoice-exact |
All 17 identities in the pinned 25 October 2026 comparison. |
fluidvoice-2026-10-22 |
The earlier 16-identity comparison, without Qwen3 ASR 1.7B. |
all |
Every catalog entry, still subject to each entry's requirements. |
olenji models install --profile recommended --json
olenji models plan-install --profile fluidvoice-parity --compatible-only --json
olenji models parity --json
Inspect skipped entries. A successful compatible-only installation is not a successful installation of the entire profile. Apple-only entries remain Apple-only.
Saved settings
Omitted options use the saved defaults shown here. They are values in the reviewed source, not recommendations for every machine.
| Setting | Default | Purpose |
|---|---|---|
default_model |
"faster-whisper.tiny" |
Recognition model for subsequent requests that omit a model. |
default_language |
"auto" |
Recognition language; auto requests supported language detection. |
default_translation_language |
"tr" |
Translation/display target when that operation uses the workspace default. |
default_provider |
"" |
Configured text provider ID; empty means no provider selected. |
local_only |
true |
Require local Olenji-managed processing unless a session overrides this. Apple Legacy also receives this requirement. |
retain_audio |
false |
Keep managed audio after processing when enabled. |
theme |
"light" |
Browser theme: light, dark, or system. |
ui_layout |
"conversation" |
Initial layout for new views. |
max_upload_mb |
4096 |
Upload size limit in MiB; accepted setting range is 1–102,400. |
auto_translate |
false |
Default automatic-translation preference for applicable sessions. |
max_parallel_jobs |
2 |
Ordinary executor concurrency, 1–8; restart the service after changing it. |
Read or change them through the CLI:
olenji config get --json
olenji config set default_translation_language tr --json
olenji config set ui_layout bilingual --json
olenji config set default_model faster-whisper.small --json
Changing default_model does not install it. Changes affect subsequent operations; they do not silently replace a running session's model. max_parallel_jobs takes effect after service restart. Explicit request options override defaults.
Session-level metadata permits retain_audio, translation_language, diarize, local_only, tags, auto_translate, translation_provider, and translation_model. Updating a diarization preference is not retroactive speaker processing; use refinement with retained audio to reprocess a completed recording.
Browser file-upload preference: the upload form now starts with the saved retain_audio value, just as the live form does. An explicit choice in the upload form takes precedence for that file.
Recognition settings
Leave these unset unless you have a reason to tune them. More threads or a larger model do not guarantee better live performance.
| Backend | Accepted explicit controls |
|---|---|
| Faster Whisper | device, compute_type, cpu_threads. |
| transcribe.cpp | native_backend, cpu_threads. |
| Fluid Mini ONNX | device, cpu_threads. |
| Apple/Core ML helpers and speaker embeddings | No controls through this inference-options interface. |
olenji transcribe interview.wav --model faster-whisper.tiny --device cpu --compute-type int8 --cpu-threads 2
Use the individual flags or one --inference JSON object, not both. Supported thread values are 1 through 64. device accepts cpu or cuda; the actual engine checks availability. A requested backend does not install its drivers.
native_backend accepts auto, cpu, metal, vulkan, cpu_accel, cuda, or rocm, depending on the native build. Unsupported combinations fail; they should not be presented as tested accelerators.
The pinned Qwen3 and Voxtral adapters use automatic language detection. Apple Speech and the Cohere conversion need an explicit supported recognition language. Not every model accepts the same recognition controls.
Refinement inherits compatible prior settings when appropriate. A supplied inference object replaces them. --inference '{}' requests the backend defaults rather than merging selected fields.
Edit and translation examples
Read the actual IDs and revisions before editing. The files in examples/ are templates, not requests that work unchanged against any session.
Read a small window
Save this as window.json:
{
"limit": 50,
"target_language": "tr",
"committed_only": true
}
olenji sessions window SESSION_ID --query @window.json --json
Without offset, the result starts near the newest turns. Use "offset": 0 to start at the beginning. window_ids identifies the requested rows; additional source rows can be included to keep multi-turn translations understandable. Use the returned paging values rather than counting those extra rows as new page entries.
Submit a translation from an agent
Save this as translations.json and replace the source reference with a real completed turn:
{
"translations": [
{
"source_refs": [{"segment_id": "SEGMENT_ID", "revision": 1}],
"target_language": "tr",
"text": "Toplantı saat üçte başlıyor.",
"producer": {"kind": "external_agent", "name": "my-agent"}
}
]
}
olenji translations put SESSION_ID --file translations.json --json
The Turkish sentence is an example, not the correct translation for every source. Include every source reference when one sentence spans several turns. Read existing translations first. Use producer.kind: "human" only for a genuine human correction.
A batch accepts up to 500 translations; a translation accepts up to 100 source references. The smaller HTTP request-size limit still applies. The CLI permits up to 8 MiB of JSON input and 256 nested containers, but that is not permission to exceed the service's 2 MiB ordinary request limit.
Merge adjacent source turns
Save this as merge.json, using real current revisions:
{
"segment_ids": ["SEGMENT_A", "SEGMENT_B"],
"expected_revisions": {"SEGMENT_A": 1, "SEGMENT_B": 2},
"text": "The combined source text."
}
olenji segments merge SESSION_ID --file merge.json --json
The turns must be adjacent source turns. Search results that happen to appear next to each other are not sufficient.
Configure a bilingual browser view
Save this as view.json:
{
"layout": "bilingual",
"target_language": "tr",
"typography": {"original_scale": 1.0, "translation_scale": 1.3},
"original_visible": true,
"follow": "live"
}
olenji ui list --json
olenji ui configure VIEW_ID --config @view.json --wait-applied 5 --json
The result distinguishes requested settings from a connected view applying them. Applied settings do not guarantee visibility, focus, microphone permission, or audible playback.
Translation service setup
A provider must already serve a compatible text model. Olenji's speech-model installer does not download or start that text model.
olenji providers add local --base-url http://127.0.0.1:11434/v1 --model TEXT_MODEL_ID
olenji config set default_provider local
olenji translate SESSION_ID --provider local --to tr --json
Replace the example address and model with your actual local service. Online providers require HTTPS. Use --api-key-env VARIABLE_NAME or --api-key-stdin to avoid putting the key literally in the command history. Provider files remain private local files, not an encrypted secrets vault.
Changing the configured service address discards the stored key unless you explicitly supply a replacement. Provider lists omit the key itself.
To permit an online provider for one session, obtain the user's agreement and save this as allow-online-text.json:
{"local_only": false}
olenji sessions configure SESSION_ID --metadata @allow-online-text.json --json
This permits online processing for the session, not only one translation request. An online text provider receives transcript text. Apple Legacy can also use network recognition when this restriction is removed. It does not make an external agent private or audit another service's networking.
For the inspected source, automatic recovery uses an initial attempt and at most three retries, with 30-, 60-, and 120-second delays. The retry deadline survives service restart. Permanent or exhausted failures stay blocked until relevant repair or explicit reconfiguration. A separate manual translation request has its own job.
Disabling automatic work and canceling a currently owned job are distinct actions. Do not use unrelated tag edits as a retry mechanism. Source commits and scheduler notification are separate steps in this inspected build; later conversation-described transactional recovery changes are not verified here.
Local API and agent contracts
Submit a local file
A local path request uses POST /api/transcribe/path. The service must be able to read that path. Save this as file-request.json:
{
"path": "/absolute/path/interview.mp4",
"model_id": "faster-whisper.tiny",
"language": "en",
"diarize": false,
"retain_audio": true
}
olenji api POST /api/transcribe/path --body @file-request.json --json
For byte uploads, use multipart POST /api/transcribe with the file field and the supported form fields. File-path requests and uploads are different routes. Neither is a website-video downloader.
Use the installed schema for exact operations:
olenji schema --json
Direct HTTP callers need the local bearer token or a paired browser session. Never paste api.token into a public issue. The CLI and MCP handle their local connection; callers should not bypass authentication or expose the service publicly.
Read metadata without the whole transcript
In this inspected build, CLI sessions get and sessions snapshot return the full record. Use the MCP olenji_session tool or the metadata endpoint for a small result:
olenji api GET /api/sessions/SESSION_ID/metadata --json
Use session windows or paginated segments for transcript text. If a cursor-consistent page request reports a change, restart that read rather than combining mismatched pages.
Follow changes and retry work
olenji events SESSION_ID --after 0 --limit 100 --committed-only --json
olenji events SESSION_ID --follow --committed-only --jsonl
olenji jobs wait JOB_ID --wait-timeout 30 --json
The returned cursor records which changes have been consumed. Following events is not a substitute for retaining the current source revision when editing. A reset response means the saved position is no longer valid and a fresh read is needed.
A wait timeout ends observation, not the underlying job. Keep the returned ID and inspect it rather than automatically creating duplicate work. Supported starts accept --idempotency-key; reuse the same key and arguments only when retrying the same intended request.
Successful ordinary responses use ok, schema_version, and data. Failures include an error code, message, details, and retryability. A success envelope for job admission is not proof that the job later completed. Export bytes and MCP messages have their own output formats.
Reviewed build and evidence
The source branch reviewed on 28 October 2026 descends from the 5,374,566-byte olenji-1.0.0.zip archive identified below. The review uses the supplied olenji-source-update.zip, then applies the matching changes documented in this edition. The original archive has SHA-256:
7543479f38124b183aefd24f07522a4fde42664103241e0bda1ffa1ac07c304c
This branch preserves offline help and the upload audio-retention fix. The current review separates shared helpers from service startup, validates translation addresses consistently, enables repair or removal of damaged provider entries, preserves created views when browser launch fails, and fixes search highlighting of literal text. Command examples and request templates are checked against the actual parser and schemas. Other changes described in conversation but absent from the supplied source are not implied. Earlier development archives shared the 1.0.0 version string, so their exact identity still requires the original source fingerprints and review report. The 31 October 1.0.2 release uses PyPI olenji and npm @batikanor/olenji, with coordinated versioned artifacts and unchanged command, tool, model and schema contracts. Published PyPI 1.0.0 and both 1.0.1 packages are preserved; each version has separate publication and installed-artifact evidence.
source-provenance.json identifies reviewed files. reference-inventory.json records complete commands, settings, model records, and tool schemas. The verifier checks these without changing the expected fingerprints. Review actual source changes before updating them.
The evidence separates parser checks, schema validation, source-backed behavior tests, and presentation checks. It does not claim new speech-recognition, physical capture, GPU, Mac, or Windows validation.
Version 1.1.0 includes the passive environment command and MCP tool first reviewed as unreleased source, and adds resumable maintainer release coordination. The archive hash above records historical lineage, not the current release archive. Current source, interface, artifact, publication and presentation checks have their own reports. Earlier native/inference and installed-package results do not validate a new artifact. All current distribution routes use the same engine; older versions remain immutable recovery material.
Version 1.2.0 adds global push-to-talk, explicit focused-field insertion and eight optional offline speaker backends. The exact inventory contains 73 CLI commands, 46 MCP tools and 38 model identities. The 1.2.1 Mac correctness patch requires positive selected-text writability and an empty caret, refuses explicit disabled states, checks the focused application/field and confirms the inserted Unicode span after one selected-text write. Interrupted tap delivery skips insertion while retaining the transcript. Disposable macOS 15 runs on Intel and Apple Silicon verify owned TextEdit Unicode insertion, isolated worker insertion and cleanup, selection and application-change refusal, and F20 listener registration, liveness and cleanup. These checks do not exercise physical keys, microphones, user permission setup, third-party fields or native secure/read-only fields. Current source/example, installed-artifact, model inference, publication and website checks retain separate receipts. A prepared guide or successful build alone does not establish publication.
The upload-default patch is applied in this source branch. Its real-browser test checks the selected preference and the submitted form data; it does not test speech recognition or audio deletion. See MAINTAINING_DOCUMENTATION.md for repeatable checks and future updates.