Olenji handbook

Recordings, live speech, translations, and your AI agent · 29 October 2026 · Speaker integrity and translation memory review

Start with the task you need. This guide explains the choices, steps, saved files, and recovery actions. Exact commands, model IDs, and agent requests are collected in the command and model reference.

About this edition: Local follow-up to the recovered olenji-bugfix-update.zip and preceding Linux review. Includes verification of speaker-model files before native startup, explicit corruption recovery, and reduced retention of saved provider output. Earlier privacy, live model ownership and browser language fixes remain included. Source, installed-artifact and native-host results retain their separate recorded scopes.

Functions at a glanceContents

Function reference. Use the numbered groups to find an action, its choices, and its limits. Use Complete a workflow to connect those actions, then Check before sharing to review the result. Group headings open the detailed instructions in the handbook; the separate PDF keeps its own navigation.

A session is a saved transcript and its related work. A turn is one timed piece of source text. The workspace is the folder where Olenji saves its data. MCP lets an AI agent call Olenji tools; the local API lets another program send requests. You can also use terminal commands (the CLI).

Choose separately: how audio enters Olenji, which model recognizes it, who writes an optional translation, and where you view the result. Changing the view does not change the speech model or produce a translation.

1. Transcribe existing recordings

1.1 Submit a recording

  • One file: transcribe a local audio or video file with a terminal command. Relative paths start from the caller's current folder.
  • Several files: submit multiple paths together. Each file gets its own session and processing task; shared options apply to the batch.
  • Browser upload: select or drop one file per submission. The browser sends it to the paired Olenji service.
  • AI agent: ask a connected agent to submit a file on the computer running Olenji and check the returned task.
  • Local API: let another application submit a local path or upload the file's bytes through an authenticated request.

1.2 Set options and check the result

  • Recognition choices: choose a compatible model and the spoken language, or automatic language detection where supported. Processor and precision controls depend on the model.
  • Speaker labels and audio: request voice grouping, set a session title, and choose whether to retain audio for playback and later re-transcription.
  • Waiting and viewing: wait for completion or return task IDs without waiting; optionally open the browser. Batch submission does not mean unlimited parallel processing.
  • Saved result: inspect the recognized text, available timing, speaker assignments, and task status. An accepted task is not a finished transcript. Check each task in a batch; one successful file does not confirm the others.

Limits: video transcription uses the recording's audio, not its on-screen words or images. FFmpeg determines readable media formats. Timing may be per word, segment, or input clip. There is no general website-video downloader. Keep local input files available until processing ends. The browser upload form starts with your saved audio-retention preference. Change Source recording before submitting to override it for that file.

Back to function index

2. Transcribe live speech

2.1 Choose one live input

  • Computer microphone: use the default microphone or an available native input device returned by source discovery.
  • System audio: capture computer playback through the operating system's supported route.
  • Browser microphone: supply audio from a paired tab after granting microphone permission and starting its microphone control.

2.2 Control and monitor capture

  • Prepare: inspect available inputs, choose a ready speech model, and prepare the separate speaker model when voice labels are needed. Test actual speech before an important recording.
  • Start and retain: begin a session with the selected input, model, language, speaker option, and audio-retention choice.
  • Pause or resume: suspend new capture and continue in the same session.
  • Stop and finish: stop capture and allow accepted audio to finish processing. Wait for any returned finalization task before exporting the final result.
  • Read the status: see changing draft words, saved turns, available input levels, and reported gaps. Missing audio cannot be reconstructed.

Ownership: service-managed microphone or system capture can continue after a viewer closes. Browser-microphone capture needs its supplying tab. Starting a session does not grant permission. This build chooses one source per session; it does not promise combined microphone/system tracks, per-app capture, or arbitrary browser-tab audio. Live text uses buffered speech, so delay varies.

Back to function index

3. Choose and manage speech models

3.1 Find a suitable choice

  • Catalog search: list all entries, search by name, or show installed models. Choices come from Olenji's bundled, reviewed catalog, not an internet-wide search.
  • Compatibility: inspect spoken languages, computer requirements, supporting software, download information, terms, and readiness before choosing.
  • Coverage: the recorded catalog has 29 transcription entries and one speaker model, including the 17 FluidVoice speech selections in its dated comparison. Sizes and conversions count separately; this is not a promise about future FluidVoice releases.
  • Available families: Whisper and Faster Whisper, Parakeet, Fluid Speech Mini/Pico, Moonshine, Nemotron, Apple Speech, Qwen3 ASR, Cohere, and Voxtral. WeSpeaker supports speaker grouping.

3.2 Plan and install

  • One model or a group: inspect a download plan, then install a model or a preset profile through the CLI, agent tools, or supported browser controls.
  • Preset profiles: use a named model list, such as the recommended pair or the FluidVoice comparison set. Profiles are not automatic accuracy rankings. Review skipped entries in a compatible-only plan.
  • Download sources: reviewed Hugging Face repositories or FluidVoice's model host supply speech files. A specified GitHub release supplies the speaker model. Apple manages its own speech assets.

3.3 Keep, reuse, and remove files

  • Local weights: downloaded speech and speaker files remain on the service computer under models/MODEL_ID/ in the workspace and are reused for later recordings.
  • Supporting software: the engines that run those files stay separately in runtimes/. Installing the app alone does not install every model.
  • Verification: check installed files and readiness, then try a short recording in the language you need. A catalog entry, downloaded files, and an engine that runs are different checks.
  • Removal: remove unused managed weights without deleting transcripts. A model in use cannot be removed; supporting engines may remain. Apple controls its own asset lifecycle.

3.4 Find the workspace

  • Linux: ~/.local/share/olenji, or the olenji folder under a valid absolute XDG_DATA_HOME.
  • macOS: ~/Library/Application Support/Olenji.
  • Windows: %LOCALAPPDATA%\Olenji, with a user AppData fallback.

A custom workspace changes this base folder. Model licenses are separate from the app's; Pico's weight-license metadata is unresolved in this reference. Translation text models are configured separately, not downloaded from this catalog.

Back to function index

4. Identify and name speakers

4.1 Create and organize voice labels

  • Group recurring voices: request speaker processing when transcribing, recording, or re-transcribing retained audio. The speaker model is separate from speech recognition.
  • Recover changed weights: if speaker startup reports model_corrupt, verify and reinstall the speaker model before retrying. See the speaker recovery steps.
  • Create labels: use generated anonymous labels or add a label yourself before assigning turns.
  • Names and colors: rename labels and choose their display colors. A name comes from you or your agent, not verified identification by Olenji.

4.2 Correct the attribution

  • Reassign a turn: choose another speaker or mark the turn Unassigned.
  • Merge duplicates: move a source label's assignments into a surviving target label. This changes saved assignments and can require translation review.

Limits: labels belong to a session, not a verified identity across recordings. Similar voices, short turns, noise, and overlap can remain uncertain. Installing the speaker model alone does not label old transcripts. There is no one-command unmerge.

Back to function index

5. Manage sessions and edit transcripts

5.1 Find and organize work

  • Session organization: create, list, rename, and tag sessions. Search session titles and source text.
  • Transcript reading: inspect the whole saved result or a smaller window. Within a session, search source and translated text; filter by speaker or navigate through turns.
  • Safe deletion: permanently delete an inactive session and its managed data after active work ends. Original external inputs and separate exports are not the same data.

5.2 Correct or supply text

  • Edit a turn: change its words, timing, or speaker. Read the current version first; conflicting edits are rejected rather than silently replacing newer work.
  • Review history: inspect earlier saved versions. History is not an automatic undo command.
  • Split: divide a turn using a split time and the text for both pieces. Linked notes follow both pieces.
  • Merge: combine 2–100 adjacent source turns assigned to the same speaker. Linked notes move to the surviving turn. Neighboring visible rows under a filter are not necessarily adjacent in the source.
  • Add supplied text: create a session and add timed turns directly, yourself or through an agent, without running recognition.

Result: original text, edits, labels, and related records remain in the session. A source change can mark translations outdated; it does not silently rewrite every language. Supplied text is not proof that Olenji heard the words. Session deletion has no Trash or built-in restore.

Back to function index

6. Replay and refine recordings

6.1 Review the retained recording

  • Keep audio: request retention when importing or recording. Text can remain after temporary audio is removed.
  • Play and seek: listen to the managed audio copy and move to a relevant point. A browser may require a click before playback.

6.2 Run recognition again

  • Choose another model: re-transcribe retained audio with a prepared model and supported settings; optionally request speaker grouping.
  • Preserve human work: protect human-edited regions. Conflicting regions can remain unchanged and are reported; failed refinement preserves the earlier transcript.
  • Review changed results: check new wording, timing, speaker assignments, and translations that now need updating.

6.3 Remove only the audio

  • Keep the words: after active work ends, disable retention to remove the managed recording while retaining transcript text. If cleanup fails, resolve the access problem and retry.

Limits: playback is audio, not an original-video editor. Enabling retention later cannot recover deleted samples. Import the original again when needed; removing Olenji's audio copy does not delete that external original.

Back to function index

7. Translate transcripts

7.1 Choose who writes the translation

  • Existing agent: ask your connected agent to translate selected or completed turns into Turkish or another language, then save the result against the exact source versions. An answer only in the agent chat is not a saved Olenji translation.
  • One-time request: request a translation from a configured text-model service and follow its task to completion.
  • Automatic translation: enable a provider and target language for a session so newly completed source can be translated as work continues.

7.2 Configure processing and control work

  • Local provider: connect a text-model service already installed and running on your computer. Olenji does not download or start that text model for you.
  • Online provider: configure its address, model, and required credentials; explicitly allow the session to send text. Your separate agent has its own data policy.
  • Observe and recover: inspect waiting, translating, retrying, blocked, or canceled work. Temporary failures have limited retries; blocked work needs attention.
  • Stop deliberately: disable future automatic requests or cancel the exact current task. A one-time request owns a separate task.

7.3 Keep languages and corrections intact

  • Separate tracks: retain original wording and multiple translated languages. Changing the target does not delete earlier languages.
  • Sentence groups: attach a translation to one or several source turns, preserving their IDs and versions. One speech-recognition turn is not necessarily a whole sentence.
  • Human corrections: protect human edits from automatic replacement. Mark translations outdated when the source changes; review them before use or export.

Check the result: verify that current target-language text exists beside the intended source. A bilingual view does not create it. Turkish recognition and translation into Turkish are different model requirements. Use an explicit translation language, not auto.

Back to function index

8. Read in a browser or terminal

8.1 Open and control browser views

  • Local browser view: open or reuse a paired viewer; request another tab when needed. The browser decides actual tab/window behavior and focus.
  • Text and layout: change theme, overall scale, separate original/translation sizes, source visibility, speaker filters, search, and live following.
  • Agent-directed display: ask the agent to configure a view and check its acknowledgment. Applied does not necessarily mean visible, focused, or playing audio.

8.2 Pick one of six layouts

  • Conversation: read timed turns with speaker labels.
  • Bilingual: compare original wording with an available translation.
  • Captions: show large, recent text with fewer controls.
  • Review: read and correct words while playing retained audio.
  • Timeline: examine timing and speaker turns.
  • Operations: inspect tasks, processing state, and reported problems.

8.3 Follow the terminal view

  • Terminal view: follow recent turns, speaker colors, available translations, draft words, capture state, and available input levels within the terminal's size.
  • Machine-readable result: return one recent snapshot as JSON. Use the events interface for a continuing stream of saved changes.
  • Detach or reconnect: leave the viewer without stopping service-owned recording; retain the last committed display during a limited reconnect attempt.

Display only: filters, text sizes, and hiding the original do not edit or delete saved content or restrict exports. Old text is not proof that capture is active. Keep pairing links private. Terminal instructions.

Back to function index

9. Add notes and markers

9.1 Record useful context

  • Written notes: save notes, highlights, or summaries supplied by you or your agent.
  • Follow-up items: store actions, decisions, or tasks as text.
  • Navigation markers: add chapters or bookmarks to help organize the discussion.

9.2 Attach and manage items

  • Source links: connect an item to one or several turns, or keep it as a session-level item.
  • Read or remove: list stored items and delete an item without deleting transcript text.

Limits: choosing a summary label does not generate a summary. A task label does not execute work or create an external task-manager entry. These are stored annotations, not an independent assistant.

Back to function index

10. Export results

10.1 Choose a format

  • TXT: share a readable plain-text transcript.
  • Markdown: keep readable text and notes in an editable document format.
  • HTML: open a standalone transcript report without running the Olenji service.
  • SRT: save a subtitle track for tools that accept SRT files.
  • VTT: save subtitles in VTT format. Both subtitle formats depend on the timing produced by recognition.
  • JSON: save structured session data for another application or agent.
  • JSONL: save structured records one per line for line-by-line processing.

10.2 Choose language and check completeness

  • Original, translated, or bilingual: select the language presentation for readable exports and, where needed, the target language.
  • Missing or outdated translation: bilingual output retains source where a current translation is missing. Translation-only readable output omits turns without a current translation; review omissions before sharing.
  • Finish first: wait for transcription and required translations before making a final export. Choose the destination file through the supported export route.

Privacy and reuse: JSON/JSONL retain source text and translation records; a language option does not turn them into filtered private copies. An export is independent of later edits. HTML does not bundle playable audio. No export is a full workspace backup or a promise of matching import/restore support.

Back to function index

11. Work through agents and other applications

11.1 Connect and discover

  • Terminal commands: call Olenji directly, using JSON for structured results and JSONL where a saved-event stream is needed.
  • MCP connection: expose the recorded 41 tools to an existing compatible agent. The agent launches the local tool process; Olenji needs no built-in chatbot.
  • Local API: use authenticated requests from another program. Inspect command schemas and tool definitions instead of guessing fields or treating every route as identical.

11.2 Coordinate longer work

  • Tasks: list, inspect, wait for, or cancel background jobs. Keep their IDs so later calls inspect the same work.
  • Read a smaller portion: retrieve a limited transcript window with related translation context rather than repeatedly reading everything.
  • Saved events: follow saved changes or resume from a recorded position after reconnecting.
  • Safe retries and edits: reuse the same supported request label when retrying to avoid starting the same work twice. For an edit or translation, include the source versions you read so newer work is not silently overwritten.

Check outcomes: a task ID means the request was accepted, not that it finished. Ending a wait does not cancel its task. A requested view is not proof that it opened. Model downloads, capture permission, online processing, and permanent deletion are separate actions to authorize deliberately.

Back to function index

12. Manage settings, files, and the service

12.1 Install and maintain the application

  • Offline help: open the bundled handbook with olenji docs --open, list topics with olenji docs --list, or select Help and handbook in the browser. No service, model download, or internet access is needed for the terminal route.
  • Python route: install the supplied wheel with uv or pip in a separate environment.
  • npm route: install the supplied package, then explicitly prepare its Python environment. It runs the same engine; setup does not install all speech models. Bun is optional.
  • Update safely: finish or cancel active work, stop the service, back up needed data, replace the app, and check readiness. Registry publication is not established for this build.

12.2 Set preferences and choose storage

  • Saved defaults: choose model, spoken language, audio retention, translation target, and view preferences. Explicit operation choices take priority; changing a default does not install a model or replace a running task.
  • Translation services: add, inspect, or remove provider addresses and model settings; use the documented credential inputs rather than typing a key directly into a command.
  • Workspace: use the same data folder for the service, CLI, and agent. Text, edits, translations, labels, notes, and jobs stay in its database; session folders contain managed audio and temporary files.

12.3 Diagnose, protect, and clean up

  • Service controls: start, inspect, stop, and read logs from the background service; use diagnostics to check model, platform, and capture readiness.
  • Processing privacy: restrict Olenji-managed processing to local execution or explicitly allow online text processing. This setting is not a firewall for downloads, an external agent, or a separate local provider.
  • Private files: protect recordings, transcript databases, provider keys, access tokens, and pairing links. Olenji does not encrypt workspace files by default.
  • Selective cleanup: remove unused weights, managed audio, inactive sessions, or separate exports deliberately. These actions remove different data; uninstalling the app does not necessarily remove any workspace data.
  • Manual backup: stop work and the service before copying the full workspace. Moving it to another path or OS can break audio and engine paths; there is no built-in backup/restore or automatic repair command.

Initial defaults: Faster Whisper Tiny, automatic recognition-language selection, Turkish as the translation target, and audio retention off at workspace level. No text provider is configured and automatic translation is off. The file-upload exception is stated in section 1. Installation · Storage and privacy.

Back to function index

Complete a workflow

These combinations use the functions above. They are multi-step tasks, not extra commands or automatic promises.

Back to function index

Check before sharing

  • Completion: check the relevant task results and any finalization work. Saved partial text can exist after a failed or canceled task.
  • Accuracy: review names, dates, numbers, speaker assignments, and reported gaps against the recording when available. A completed task is not a guarantee of correct wording.
  • Translation coverage: confirm the required language is present and current. Translation-only readable exports can omit turns without a current translation.
  • The actual file: open the export and inspect its content and timing. Display filters and hiding the original do not remove it from stored data or structured exports.
  • Privacy and reuse: check what you are sharing, where it will go, and whether you still need the audio. Exported text is not a full backup of the workspace.

Back to function index

Scope of this list

This reference describes the handbook's recorded 1.0.0 development source, not a new code or hardware test. Application features still depend on the selected model, OS, permissions, and device. The application archive is separate from this documentation bundle.

The reviewed source records 69 CLI commands, 41 agent tools, and 30 model entries. Earlier selected Linux results do not establish native Windows/macOS, Apple-model, GPU, or physical-capture success on your machine. Multilingual and overlapping-speaker accuracy needs representative testing. Read platform support and the handbook's exact reference before relying on a particular environment.

Back to function index

Start hereContents

Olenji turns recordings and live speech into saved text. Use terminal commands or your existing AI agent to start the work. Open a local browser tab to read, translate, and review it.

The usual path: install Olenji, prepare a speech model, transcribe a recording, review the result, and export a copy. Translation and speaker grouping are optional, separate steps. Complete a workflow connects the features for files, batches, live captions, later corrections, and supplied text.

The computer doing the work: models, the service, and saved sessions belong to the computer running Olenji. A browser or agent is another way to control and view that work. For a local-path request, the service must be able to read that path. For a browser upload, the browser sends the file to the paired service.

Choose what to do

Your goal Start with
Turn an existing recording into text Make your first transcript.
Process several recordings Transcribe files in different ways.
Follow a conversation as it happens Transcribe live audio.
Show English and Turkish together Translate a transcript, then Choose a browser view.
Let an AI agent handle the steps Work with your agent.
Find or remove downloaded files Understand your files and privacy.

Read help without starting the app

The handbook ships with Olenji. You do not need a downloaded model, an internet connection, or a running service to read it.

  1. In your terminal, open the installed guide:

    olenji docs --open
    
  2. To find a particular topic, list the available section IDs:

    olenji docs --list
    
  3. Open a section directly. For example, read about saved files:

    olenji docs --section understand-your-files-and-privacy --open
    

Without --open, the command prints a local file link and does not launch a browser. Add --json for an agent-readable result. It never creates a workspace or starts recording. A browser launch request does not prove that the browser is visible; use the printed link if no page appears.

In an already open Olenji browser view, select Help and handbook. This opens the same guide in a separate tab without closing the capture view. Browser behavior can vary. Help contains no session data and does not start transcription.

Five terms you will see

Model: downloaded files that help a speech engine recognize words. Language and computer requirements vary.

Session: one saved transcript with its speakers, translations, notes, and optional recording. Each input file creates a separate session.

Turn: a timed piece of transcript text, called a segment in commands. It is not necessarily one sentence.

Job: a piece of work, such as a download or transcription. A job ID means accepted, not necessarily finished.

Service: Olenji's background process. It can keep working after a command or viewer closes.

Read command examples

Run commands in a terminal on the computer running Olenji. Replace SESSION_ID, MODEL_ID, JOB_ID, and similar uppercase names with real values returned by the app. Keep the model IDs written in lowercase exactly as shown.

Quote file paths that contain spaces. Copy commands without their Markdown backticks. The JSON example files avoid shell-quoting differences between operating systems.

Add --json when an agent needs a machine-readable response. Omit it for normal terminal output. Use olenji COMMAND --help to see options in your installed build; for example, replace COMMAND with transcribe.

@automatic.json means read automatic.json from your current folder. Create the file from the example, or copy it from the editable bundle's examples/ folder. Replace its placeholders before use.

Build scope: these instructions describe the inspected 1.0.0 development archive. Later changes are not automatically covered. The technical reference records the exact archive and verification limits.

Install or update OlenjiContents

Choose the route that matches your download: a source update, a built Python package, or a built npm package. They use the same application engine. The handbook alone is not an installer. Installing the app does not install every speech model.

Before you start

Prepare the tools for the route you choose:

Tool When you need it
Python Runs Olenji. Use standard Python 3.12 for the broadest reviewed model compatibility. The application accepts 3.11 or later, but some models have narrower requirements.
uv Installs Olenji as a command-line tool, or prepares the Python environment for the npm route. Install uv before using either example that requires it.
Node.js and npm Needed only for the npm installation route. They do not replace the Python application engine.
FFmpeg and ffprobe Read audio and video files. Make both commands available on the computer running the service.
Audio access Native microphone capture can require PortAudio and operating-system permission. Browser microphone capture requires permission in the supplying tab.

A Python virtual environment is a separate folder for an application's Python packages. Use one for the pip route rather than installing into your system Python. Your AI agent can help install these prerequisites; the commands below assume they are already available.

The commands here use files from the extracted Olenji release. Public PyPI and npm publication was not established for this build. Do not assume a package with the same name on a public registry is this project.

Run from a source update

A download labeled source update contains application code, but may not contain new wheel or npm installers. The dist commands in the next sections apply only when those built files are supplied. Do not substitute an older installer and expect it to include newer source changes.

From the extracted application folder, prepare and run the source version:

uv sync --frozen --python 3.12
uv run --frozen python -m olenji doctor --json

This step can download the reviewed application dependencies. It does not download speech models or upgrade another separately installed Olenji command. Use uv run --frozen before subsequent commands to keep using this source environment.

To read the included guide before installing dependencies, run python -m olenji docs --open from the same folder. Preparing new wheel and npm installers is a maintainer task described in docs/RELEASING.md in the source archive.

Install through Python

From the extracted application folder:

uv tool install ./dist/olenji-1.0.0-py3-none-any.whl
olenji --version
olenji doctor --json

If you do not use uv, activate a Python virtual environment, then run:

python -m pip install ./dist/olenji-1.0.0-py3-none-any.whl

doctor lists what is ready and what needs attention. A missing model is normal before you download one. It is not a reason to delete your workspace.

Install through npm

Use Node.js 22.14 or later and uv for the explicit setup step. From the extracted application folder:

  1. Install the supplied npm package:

    npm install --global ./dist/olenji-1.0.0.tgz --ignore-scripts
    
  2. Prepare its separate Python environment:

    olenji-bootstrap setup --python 3.12 --json
    
  3. Check the result:

    olenji-bootstrap status --json
    olenji doctor --json
    

Setup can download Python and application dependencies. It does not download speech models. Keep the prepared interpreter available. Bun is optional; it is not required by these instructions.

Update without losing transcripts

  1. Stop any recording normally. Wait for important jobs to finish, or cancel them deliberately.

  2. Stop the old service:

    olenji service stop
    
  3. Back up the workspace before an important upgrade. Then replace the application. For uv:

    uv tool install --force ./dist/olenji-1.0.0-py3-none-any.whl
    
  4. Run olenji doctor --json again. For npm, reinstall the local package and rerun olenji-bootstrap setup.

Keep the same workspace location to retain your transcripts and models. Stop the service first even when both development builds say 1.0.0. That version string does not identify every unpublished archive. See Back up or move your workspace.

Make your first transcriptContents

This example uses a small local model to check that the complete setup works. It does not claim that the smallest model gives the best accuracy.

Before you start: install Olenji and FFmpeg. Have a local audio or video file you are allowed to process.

  1. Inspect the model's requirements:

    olenji models inspect faster-whisper.tiny --json
    
  2. Download and prepare it:

    olenji models install faster-whisper.tiny
    

    The model stays on this computer and is reused. Wait for installation to finish.

  3. Transcribe your file:

    olenji transcribe interview.mp4 --model faster-whisper.tiny --retain-audio --open
    

    Replace interview.mp4 with your recording. --retain-audio saves an audio copy for playback. --open requests a local browser view.

  4. Confirm that transcription finished successfully, then keep the returned session ID. If you have a job ID, check it with olenji jobs get JOB_ID --json. Save a text copy:

    olenji export SESSION_ID --format txt --out interview.txt
    

Result: one saved session, a transcript, and interview.txt in the folder where you ran the export command. The original input file is not edited. The transcription command normally waits for completion; a visible session alone does not mean every word is ready.

Read a few passages and compare them with the audio before sharing the transcript. Check names, dates, numbers, and any important or uncertain wording. You can return to the saved session later with olenji sessions list and olenji ui open SESSION_ID.

To name different voices, prepare speaker recognition before processing the file. To translate the words into Turkish, add a separate translation afterward. Neither action happens just because you open a browser view.

If it fails: read the error and job state. A file extension such as .mp4 does not guarantee that your FFmpeg installation can decode the media inside it. See Solve common problems.

Choose, download, and remove modelsContents

Where the choices come from

Olenji searches a reviewed catalog included in the application. It does not search every model on the internet or accept any arbitrary model repository.

The inspected catalog has 29 speech-recognition entries and one speaker-recognition entry. It includes the 17 selectable FluidVoice speech entries in the pinned 25 October 2026 comparison. This is a dated comparison, not a promise that future FluidVoice updates are already included.

A different size or conversion can be a separate entry in the same family. The count does not mean 29 unrelated recognition methods.

olenji models list
olenji models search whisper
olenji models list --installed
olenji models inspect MODEL_ID --json

Use inspect to check supported languages, computer requirements, download information, model terms, and readiness. Choose by these requirements rather than the model's name alone:

  1. Check the spoken language. A Turkish recording needs Turkish recognition; English speech translated into Turkish does not.
  2. Check the computer and engine requirements. An Apple-only entry cannot run locally on Windows or Linux.
  3. Check the planned download and available storage. Model weights and the software that runs them are separate parts of installation.
  4. Try a short representative recording before processing a large batch or relying on a live session. Compare important words and the delay you observe.

A profile is a convenience list, not an accuracy ranking. No model is guaranteed to be best for every recording.

What gets downloaded

Part What it does Where it comes from
Speech-model files Help the recognizer turn audio into words. Reviewed Hugging Face repositories or the FluidVoice model host, depending on the entry.
Speaker model Helps group recurring voices. A specified Sherpa ONNX GitHub release.
Engine and supporting packages Run the selected model on your computer. The model's configured runtime installation route.
Apple speech assets Support Apple's operating-system speech features. Apple-managed APIs and assets. They are not ordinary Olenji weight downloads.

Downloaded speech models stay in models/MODEL_ID/ inside the local workspace on the computer running Olenji. They are not stored only in a browser tab. Supporting engines are stored separately under runtimes/. The storage section gives each operating system's default workspace.

Olenji reuses installed files for later recordings. Installation needs a network connection unless the required files are already available locally. Installing a local speech model does not install a text model for translation; that is a separate service choice.

Model licenses are separate from Olenji's application license. The inspected catalog leaves Pico's weight-license metadata unresolved. Check the actual model terms before sharing or redistributing its files.

Install one model or a preset group

Inspect the plan before starting a large download:

olenji models plan-install MODEL_ID --json
olenji models install MODEL_ID
olenji models verify MODEL_ID --json

A profile is a preset list of model IDs. It does not choose the best model automatically while someone speaks. The recommended profile includes Faster Whisper Tiny and the speaker model. The full profile list is in the reference.

To inspect the FluidVoice comparison set for this computer:

olenji models plan-install --profile fluidvoice-parity --compatible-only --json

Review skipped entries. --compatible-only does not make Apple-only models work on Windows or Linux. An installation that completes with skipped entries is not complete FluidVoice coverage on that computer.

Understand readiness and remove a model

Listed means the catalog knows the model. Installed means its local files are present. Runtime-ready means the engine is prepared. Successful recognition on your actual computer is a further check. These are not interchangeable promises.

Remove an unused model with:

olenji models remove MODEL_ID --json

Removal is refused while a worker is using the model or a live session still owns it, including silence, pause, and final recognition after stop. Finish the recording and wait for its finalization job before retrying removal. It removes managed weights, not your transcripts. Supporting runtimes can remain. Apple controls the lifecycle of its own speech assets. See Where files are stored before removing any folders yourself.

Transcribe files in different waysContents

All five routes create saved sessions, but they differ in how the file reaches Olenji.

Route How to use it Important detail
One file in the terminal olenji transcribe recording.wav A relative path is read from your command's current folder. Keep the input available until the job finishes.
Several files in the terminal Give transcribe several paths. Each file gets a separate session and job; the chosen options apply to the batch.
Browser upload Open Olenji, choose Transcribe a file, and select or drop a recording. One file per submission. Check Source recording before submitting.
Existing AI agent Ask the agent to use the transcription MCP tool. The agent supplies a local path on the service computer and checks the returned job.
Another application Use the local API to submit a path or upload bytes. This requires local authentication. Exact fields are in the reference.

Submit several files

olenji transcribe interview.mp4 lecture.wav call.m4a --model faster-whisper.tiny

The usual waiting mode processes submissions in order. Add --no-wait --json to return job IDs while the service works through them. This is not unlimited parallel processing.

Keep the session and job ID for each file. Review each result separately: one successful transcript does not establish that the whole batch finished. Check any existing job before retrying a submission. Export the sessions you need individually; batch input is not a single merged transcript.

Upload in the browser

  1. Run olenji ui open, then choose Transcribe a file.
  2. Choose a recording and review Recognition model and Input language.
  3. Set Source recording to Keep for playback and refinement or Temporary processing only.
  4. Optional: select Identify speaker turns.
  5. Click Transcribe recording and check the processing state.

The browser can install the selected speech model and speaker model first if needed. This can contact the model and package hosts. The file upload itself goes to the paired local service.

Audio preference: the file-upload form starts with your saved retain_audio choice. Select a different Source recording value to override it for this upload. The file is still sent to Olenji for processing; choosing temporary processing means the recording is not kept for later playback or refinement.

Choose options deliberately

Choice What changes
--model MODEL_ID The speech model. It must be installed and usable on this computer.
--language en, --language tr, or --language auto The language being spoken, when supported by that model. This is not a translation target.
--diarize Attempts to group speech by voice using the prepared speaker model.
--retain-audio or --no-retain-audio Whether a managed audio copy remains for playback and re-transcription.
--title "Team meeting" A recognizable session name.
--open Opens or reuses a browser view. It does not change model accuracy or translate text.

Omitted CLI model, language, and audio-retention choices use the saved preferences. Explicit choices win. Advanced processor and precision settings are in the reference.

Treat video transcription as a transcript of its audio, not a description of what appears on screen. FFmpeg determines which media formats can be decoded. Olenji does not provide a general website-video or URL downloader in this build. Recognition can return word, segment, or whole-clip timings depending on the model; exact word alignment is not universal.

Transcribe live audioContents

Before you start: prepare a speech model that runs on this computer. Prepare the speaker model as well if you need separate voice labels. Test the input and permissions before an important conversation.

Discover the available inputs:

olenji live sources --json
Source Command value What must stay open
Default computer microphone microphone The Olenji service. A separate viewer can close.
Another native input device device:NUMBER The service. Use a device number returned by source discovery.
Supported system output system The service and the supported operating-system capture route.
This browser's microphone browser The tab that supplies the microphone, plus the service.

System audio is audio played by your computer. It is not the same as your microphone. The reviewed start command selects one source; it does not promise simultaneous microphone-and-system tracks, per-app capture, or arbitrary browser-tab audio capture.

Start and monitor a recording

For your computer microphone:

olenji live start --source microphone --retain-audio --open

For a microphone supplied by the browser:

olenji live start --source browser --retain-audio --open

Use the tab's microphone control and approve the browser's permission request. Starting a session does not itself grant permission or send audio. Check the input meter and the arrival of transcript text before relying on the recording.

The saved model preference is used unless you specify --model. Add --diarize after preparing the speaker model. Keep the returned session ID.

Pause, resume, and stop

olenji live pause SESSION_ID
olenji live resume SESSION_ID
olenji live stop SESSION_ID
olenji live status SESSION_ID --json

Pause stops new capture temporarily. Stop finishes the session and flushes accepted audio. If stop returns a finalization job, wait for that job before exporting the final transcript.

Closing a viewer or detaching the terminal does not stop service-owned recording. Closing the tab supplying browser-microphone audio removes that audio source. Use live stop to end work deliberately rather than killing the service.

What to expect from live text

Draft words can change. Completed turns are saved, but later corrections can still revise them. Text appears after buffered speech is processed; this build does not promise instantaneous captions or the same delay on every model.

A reported audio gap means some audio was missing. Olenji records the gap; it cannot recreate words it never received. A model with “streaming” in its name does not by itself establish a continuous decoder inside this app.

Linux system capture requires a supported PulseAudio/PipeWire setup and tools. Windows uses its WASAPI loopback route. macOS uses a ScreenCaptureKit helper and recording permission. See Check platform support for the remaining hardware checks.

Identify and name speakersContents

Olenji can group similar voices into labels such as Speaker 1 and Speaker 2. It does not know their real names. Naming a speaker is your decision or your agent's informed action.

Turn on speaker grouping

Prepare the speaker model, then request speaker grouping when you transcribe or record:

olenji models install diarization.wespeaker.en
olenji transcribe interview.wav --diarize --retain-audio

The speaker model is separate from the model that recognizes words. Installing it alone does not rerun earlier transcripts. For an existing session, re-transcribe saved audio with speaker grouping enabled.

Recover from changed speaker weights

Before starting a speaker worker, Olenji checks its model files against the saved integrity manifest. A same-size content change can pass the initial readiness check but fails this verification with model_corrupt, before the worker loads the changed weights.

Stop capture and wait for jobs using the speaker model to finish, then check its files:

olenji models verify diarization.wespeaker.en --json

If verification reports damaged files, reinstall the speaker model:

olenji models install diarization.wespeaker.en

After verification succeeds, retry transcription or start a new live capture with speaker grouping. Reinstalling does not automatically restart capture or change earlier speaker assignments.

Change a name, color, or assignment

Use the browser's speaker controls, or read the speaker IDs and edit a label:

olenji speakers list SESSION_ID --json
olenji speakers rename SESSION_ID SPEAKER_ID "Ada"
olenji speakers color SESSION_ID SPEAKER_ID "#1565C0"

To correct one turn's speaker, use that turn's edit control. Its Speaker menu includes Unassigned. You can also create a label before assigning turns to it.

Combine duplicate labels

Use Merge assignments in the speaker dialog, or:

olenji speakers merge SESSION_ID SOURCE_SPEAKER_ID TARGET_SPEAKER_ID

The target label remains. Merging changes assignments and can make related translations need review. This is more than changing a display name. There is no one-command unmerge, so inspect the turns first.

Short speech, similar voices, background sound, and overlapping speakers can be difficult to separate. An unknown assignment is preferable to a guessed identity. Speaker labels apply to this session, not a verified identity across recordings.

Review, correct, and organize transcriptsContents

Find the session and the words

olenji sessions list
olenji sessions search "planning"
olenji ui open SESSION_ID

Session search checks titles and source text. Within a session, the browser can also search translated text. It shows a page of turns rather than loading every turn into the display at once. Speaker filters and search change what you see, not the saved transcript.

Correct a turn

  1. Open the turn's edit control in the browser.
  2. Change Transcript text or Speaker.
  3. Click Save correction.

Revision history shows previous versions. The current version number is called a revision. If an agent or another viewer changed the turn first, Olenji asks you to reread it rather than overwrite newer work.

For a command-line correction, read the current turn and its revision number first:

olenji segments list SESSION_ID --limit 50 --json
olenji segments edit SESSION_ID SEGMENT_ID --revision 1 --text "We meet on Tuesday."

The 1 in the example is only a sample revision. Use the actual number returned for that turn. History is available; an automatic undo command is not.

Split, combine, or supply text

The editor offers Split turn and Merge with next. Splitting requires a time and the text for both pieces. Merging combines 2–100 adjacent source turns assigned to the same speaker, not simply neighboring rows in a filtered view.

Notes linked to a whole turn follow both pieces after a split. After a merge, links to the combined turns point to the surviving turn once. The note itself is preserved.

Source edits can mark old translations as needing review. They do not silently rewrite every translated language.

You or an agent can also create a session and add timed text without recognizing audio:

olenji sessions create --title "Imported transcript" --language en --json
olenji segments add SESSION_ID --start 0 --end 3.5 --text "Hello, everyone."

This is supplied text, not evidence that Olenji heard those words. Advanced edit examples are in the reference.

Rename or delete a session

olenji sessions rename SESSION_ID "Team planning"

Use session settings to add tags. Do not delete a session just to correct its title or text.

Warning: olenji sessions delete SESSION_ID permanently removes an inactive session and its managed data. There is no Trash or built-in restore command. Original external input files are separate. Finish active work and export or back up anything you need first.

Play or re-transcribe saved audioContents

Keep audio when you need review

Use --retain-audio when starting transcription or live capture. In the browser, choose the option that keeps the source recording. Without retained audio, the transcript can remain available after the temporary recording is removed.

Playback uses Olenji's managed audio copy. This is not an original-video player or video editor. Your browser may require a click before audible playback can start.

Keeping audio later cannot recreate samples that were already deleted. For a file recording, import the original file again with audio retention enabled.

Try another model on the saved recording

Install the intended model, then run:

olenji models install faster-whisper.small
olenji sessions refine SESSION_ID --model faster-whisper.small

Refine means transcribe the retained audio again. Olenji protects human-edited regions and replaces eligible machine-generated text. Some conflicting regions can remain unchanged and are reported. Failed refinement preserves the previous transcript.

Add --diarize to request speaker processing. Model changes can produce different wording, timings, and assignments. Review the result before relying on it. Affected translations can require an update.

Remove the audio but keep the transcript

  1. Stop capture and finish or cancel active work for the session.

  2. Save this in retention-off.json:

    {"retain_audio": false}
    
  3. Apply the change:

    olenji sessions configure SESSION_ID --metadata @retention-off.json --json
    

Result: the transcript remains, but playback and re-transcription need audio that is no longer available. This does not delete your original external input file.

If the operating system prevents cleanup, Olenji reports an error. Fix the file-access problem and repeat the request; do not assume that an error means the audio was removed.

Translate a transcriptContents

Speech recognition writes down the spoken words. Translation creates another language's text from those words. English audio can be recognized with an English-capable model and then translated into Turkish. Those are two separate stages.

Olenji keeps the original wording and translations separate. Choosing a bilingual layout only changes the display; it does not create translations.

Choose a translation route

Route What you provide How it works
Your existing AI agent A request to translate selected or completed turns. The agent reads the source and submits a separate translation with the source IDs and versions.
One request to a text-model service A configured service and model. olenji translate sends the selected source text to that service.
Automatic translation A service, target language, and per-session setting. Olenji sends newly completed text as the session develops.

A provider is the configured text-model service. It may run on your computer or online. Adding one does not download a language model through Olenji's speech-model catalog.

Ask your agent to translate

Give your agent a request such as:

Translate the completed turns in Olenji session SESSION_ID into Turkish. Keep the original wording. Preserve names and technical terms. Save the translations against the exact source versions, and show both languages in the browser.

Replace the session ID first. The agent must be connected to Olenji; merely pasting the prompt does not connect it. The browser's agent-translation dialog can help prepare a request. Your agent's own data policy applies when it reads the transcript. A translation displayed only in the agent's chat is not yet saved in Olenji; ask the agent to submit it and confirm it appears in the intended session.

One translated sentence can refer to several source turns. The reference includes the exact submission format for agent builders.

Use a configured text-model service

The following address is an example of a local service. Use the address and model you have actually installed and started:

olenji providers add local --base-url http://127.0.0.1:11434/v1 --model TEXT_MODEL_ID
olenji translate SESSION_ID --provider local --to tr

Olenji does not start that service for you. Test a short transcript before enabling automatic translation on a long session.

Online services require their actual HTTPS address, credentials when required, and your permission for that session to send text. Keep API keys out of command-line literals; use --api-key-env or --api-key-stdin. The reference shows the privacy setting and credential options.

Use the service's API address, not a website login link. Do not include a username, password, spaces, or extra parts starting with ? or #. Local addresses such as localhost, 127.0.0.1, and [::1] can use HTTP. Other addresses require HTTPS. A saved label cannot make an online address local: Olenji checks the address again when choosing the service.

Providers must honor requests for uncompressed JSON. Olenji rejects a compressed response before reading it, so response compression cannot bypass its size limit. If this happens, configure the service or its proxy to disable response compression, then retry the translation.

Repair an invalid saved provider: run providers add again with the same provider ID and a valid address, or use providers remove to delete that provider. Other entries are preserved. Correcting an address does not reuse its previous API key unless the address is unchanged; supply a new key when needed. If the entire settings file is unreadable rather than just one entry, preserve a private copy and repair the file before retrying. Do not share it in an issue report.

Translate new text automatically

In the browser, open the translation controls, choose the language and provider, then enable automatic translation. Keep local processing selected unless you intend to send the transcript to an online provider.

Or create automatic.json:

{
  "auto_translate": true,
  "translation_language": "tr",
  "translation_provider": "local"
}

Apply it:

olenji sessions configure SESSION_ID --metadata @automatic.json --json

The status distinguishes waiting, translating, retrying, blocked, and canceled work. Temporary failures have limited automatic retries. A blocked status needs attention; silence from the provider does not mean translation finished.

Check the result: confirm that the target-language text appears beside the intended source turns and is not marked stale. Review important wording. A successful provider request or a bilingual layout alone does not prove the translation is complete or accurate.

Turn automatic translation off to prevent future automatic requests. Cancel the reported job to stop current owned work. A separate one-time translation request has its own job.

Keep corrections and languages separate

When source text changes, a previous translation can become stale: it no longer matches the current source version. It stays inspectable but is left out of readable exports until corrected.

Human translation corrections receive extra protection from automatic replacement. An agent should not label its output as a human correction. Changing the target language does not delete earlier language tracks. Use an explicit target such as tr; auto is not a translation target.

Choose a browser viewContents

Open a session in a normal local tab:

olenji ui open SESSION_ID

Olenji tries to reuse a connected viewer. Use --new-tab for a separate one. It can request a browser launch; your browser and operating system decide whether that appears in a new tab or window and whether it receives focus.

If the computer cannot launch a browser, the command returns the created view and a temporary pairing link instead of losing the result. Open that link in a browser on the same computer. You can also ask for the link without a launch:

olenji ui open SESSION_ID --print-url --json

Keep the link private. A requested launch or a returned link does not mean a viewer has connected.

Pick the layout

Layout Best use
Conversation Read turns with speaker labels.
Bilingual Compare original wording with an available translation.
Captions Show large, recent text with fewer controls.
Review Read and correct text while playing retained audio.
Timeline Inspect the conversation's timing and speaker turns.
Operations See jobs, processing state, and reported problems.

For Turkish beside the original:

olenji ui open SESSION_ID --layout bilingual --translation tr

For large captions:

olenji ui open SESSION_ID --layout captions --font-scale 1.4

Change the presentation

View settings include theme, text scale, separate original and translation sizes, source visibility, speaker filters, and whether to follow new speech. Scrolling back can pause following so the page does not pull you away from older text.

These choices change a view, not the saved words. Search highlighting leaves the original spelling, punctuation, and translation unchanged, including text that looks like markup. Hiding original text does not delete it. A speaker filter does not remove other speakers from an export.

Source and translation text carry their known language for assistive technology, and each text block determines its own reading direction. This helps screen readers and mixed Arabic, Hebrew, and Latin text. If recognition has not identified a source language, the view uses the session language when available.

Your agent can request a layout and check whether the connected viewer applied it. Applied does not necessarily mean the tab is visible or focused. A successful command is not proof that browser permission or playback succeeded.

Close or disconnect a viewer

Closing a tab or detaching a view does not cancel a file job or service-owned microphone capture. The exception is the tab supplying browser-microphone audio: closing it removes that source.

Pairing links grant access to the local workspace. Open the link returned by Olenji, and keep it private. Use olenji ui open again when pairing expires. Do not share an old pairing link as a public transcript link; use an export instead.

Follow speech in the terminalContents

olenji tui SESSION_ID --translation tr

The terminal shows recent turns, speaker labels and colors, available translations, draft text, and capture state. Input levels appear when available. It keeps the newest material visible within the terminal's size.

Press Ctrl-C to leave the viewer. This does not stop service-owned recording. To end the recording, use olenji live stop SESSION_ID.

For an agent or redirected output:

olenji tui SESSION_ID --translation tr --json

This returns one structured recent-transcript result, not an endless display. Use the events interface when an agent needs to follow saved changes over time. Draft words can change before they become completed turns; agents should normally translate completed source.

If the terminal disconnects, it can retain the last committed display during a limited reconnect attempt. That old text is not proof that capture is still active. Check olenji live status SESSION_ID --json.

Add notes and export resultsContents

Add notes, decisions, or markers

You or your agent can attach a note, action, highlight, chapter, bookmark, summary, decision, or task. A stored summary is supplied text; Olenji does not automatically produce one merely because the annotation type is summary.

olenji annotations add SESSION_ID "Review the launch date." --kind note
olenji annotations list SESSION_ID --json

Use --segment SEGMENT_ID to link a note to a turn. Use it more than once to link several turns. Splitting a linked turn keeps the note attached to both pieces; merging linked turns removes duplicate links. Notes without a turn link stay attached to the session. Deleting an annotation removes that note, not the transcript.

Choose an export format

Format Use it for
TXT A readable plain-text transcript.
Markdown A readable transcript and notes that you can edit.
SRT or VTT Subtitle files. Timing quality depends on recognition output.
HTML A standalone readable report that opens without the Olenji service.
JSON or JSONL Structured session data for another tool or an agent.

Save the original text:

olenji export SESSION_ID --format txt --out transcript.txt

Save original and Turkish subtitles together:

olenji export SESSION_ID --format srt --language bilingual --to tr --out bilingual.srt

Save Turkish text only:

olenji export SESSION_ID --format txt --language tr --out turkish.txt

SRT and VTT record times to the nearest thousandth of a second. If rounding would give a subtitle the same start and end time, Olenji moves its exported end forward by one thousandth of a second. This does not change the saved transcript timing.

Wait for transcription and required translations before exporting a final result. Bilingual readable exports keep original text where a current translation is missing. Translation-only readable exports omit turns without a current translation. Review omissions before sharing.

JSON and JSONL retain the structured session data, including translation records. Language display options do not turn them into translation-only or privacy-filtered files. Inspect them before sharing.

An export is a separate copy, not a live link. Later edits do not update it. The standalone HTML report is a transcript, not a bundled playable recording. Export formats do not imply that the app has an import or one-click restore for the same format.

Review the exported copy

Open the file you actually plan to share. Confirm the session, language, expected beginning and end, and any intended notes. For subtitles, also check timing in the target player. An export can be created before the session is complete, so file creation alone is not a completeness check.

Check important names, numbers, speaker labels, and passages without a current translation. Correct the session and export again when needed. Keep the earlier copy only if you mean to preserve that version; later session edits cannot update it automatically.

Use Check before sharing as the final review. A presentation choice in the browser is not a promise that the exported copy hides the same content.

Work with your agentContents

Your existing AI agent can use Olenji through terminal commands or MCP, a standard connection that exposes tools to the agent. Olenji does not require a built-in chatbot.

Connect an MCP-capable agent

In your agent's configuration, add Olenji as a local MCP server. In this connection mode, called stdio, the agent launches olenji mcp serve and exchanges messages with that process:

{
  "mcpServers": {
    "olenji": {
      "command": "olenji",
      "args": ["mcp", "serve"]
    }
  }
}

This is a common configuration shape, not a promise that every agent uses the same settings screen or file. The agent must be able to find the olenji executable. When using a separate workspace, give the agent the same --data-dir setting.

The inspected build exposes 41 MCP tools. The technical reference lists every name. Other operations can use the CLI or local API.

Ask for a complete outcome

For a file:

Inspect the installed Olenji models and choose one suitable for this recording's language and this computer. Transcribe FILE_PATH, distinguish the speakers, retain audio for review, and open the session. Report any missing model or permission before claiming success.

For live speech:

Start microphone transcription. Show recent speaker turns in a local browser tab. Translate completed turns into Turkish without changing the original words. Tell me whether the translation would leave this computer before using an online service.

For review:

Find the session about the launch. Show the part discussing dates, preserve my existing corrections, and export a bilingual text copy after all selected translations are current.

Replace example file paths and session descriptions with your own. A model download, microphone permission, online text processing, and permanent deletion are different actions; the agent should not treat one approval as permission for all of them.

What a reliable agent should check

The agent should check available models, wait for the correct job, preserve source versions when translating or editing, and report missing permissions honestly. It should not report a transcript complete merely because it received a job ID or report a view visible merely because a tab was requested.

Long tasks belong to the service. The agent can return later and read new saved changes. Advanced examples for bounded reads, safe retries, and event positions are in the reference.

Manage work and saved preferencesContents

Find out whether work finished

olenji jobs list --json
olenji jobs get JOB_ID --json
olenji jobs wait JOB_ID --json

A job can be waiting, running, completed, failed, or canceled. A transcript may be partly visible while its job is still running. Look at the job's final result before telling someone the task is complete.

To cancel deliberately:

olenji jobs cancel JOB_ID --json

Ending a waiting command or reaching its wait timeout does not cancel the service's job. Stop live capture with the live command so pending audio can finish normally.

Close a view, stop recording, or cancel work

These actions have different effects:

Your goal What to do What stays available
Leave the transcript viewer Close the view or press Ctrl-C in the terminal viewer. Saved text remains. File jobs and service-owned recording continue. A tab supplying browser audio must stay open to supply that audio.
Pause and continue later in the same recording Use live pause, then live resume. The session and accepted text remain; new capture pauses in between.
Finish a recording Use live stop. Check any returned finalization job. Saved text remains; audio remains only when retention is enabled.
Cancel a file or translation job Use jobs cancel for that job ID. Previously saved results remain inspectable. Check the job's final state; cancellation is not an undo operation.
Stop waiting for an answer End the waiting command or let its wait expire. The service's job may still be running. Inspect the same job ID instead of starting a duplicate.
Shut down Olenji for an update Finish or cancel work, then use service stop. Saved workspace data remains. The service is not running until started again.

For removal rather than stopping, see Know what removal means. Closing a view does not delete a transcript.

Change defaults

olenji config get --json
olenji config set default_translation_language tr
olenji config set ui_layout bilingual

The initial workspace model is Faster Whisper Tiny, recognition language is automatic, and the translation target is Turkish. No translation service is configured automatically. Automatic translation is off. The workspace audio-retention preference is off, with the browser upload exception described under File uploads.

Changing a default model does not install it. A default generally applies to a later operation that omits a choice; it does not replace a running session's model. Explicit choices override defaults.

The reference lists every setting, including upload limits and the number of ordinary jobs that can run at once.

Manage the local service

olenji service status --json
olenji service logs --lines 50
olenji service stop

Normal operations can start the service when needed. Stop capture and important work normally before stopping the service. Read logs to investigate an error, but inspect them for private paths or transcript content before sharing them publicly.

Understand your files and privacyContents

Where files are stored

The workspace is a folder on the computer running Olenji. The browser does not hold the only copy.

Computer Default workspace
Linux ~/.local/share/olenji, or the olenji folder under a valid absolute XDG_DATA_HOME.
macOS ~/Library/Application Support/Olenji
Windows %LOCALAPPDATA%\Olenji, with a user AppData fallback.

~ means your home folder. You can choose another workspace with --data-dir or OLENJI_DATA_DIR. Use the same location in the CLI, service, and agent; otherwise you will see different saved sessions.

Data Where it stays
Downloaded speech and speaker models models/MODEL_ID/ inside the workspace.
Supporting model engines runtimes/ inside the workspace.
Managed recordings and temporary session files sessions/SESSION_ID/ inside the workspace. Retained audio is audio.wav.
Text, edits, translations, labels, notes, and jobs The workspace's SQLite database.
Saved preferences settings.json.
Translation service addresses and keys providers.json. Treat it as a private file.
Local access token api.token. Do not share it.
Exported reports or subtitles The output location you chose.

The npm application environment is stored separately; olenji-bootstrap status --json shows it. Apple manages its own speech assets. Uninstalling an application package is not the same as deleting your workspace or exports.

What can leave the computer

Local recognition uses downloaded model files after installation. Installing models and runtimes contacts download hosts. An online translation provider receives transcript text when the session permits it. Your existing hosted AI agent can also receive text when you ask it to read the transcript.

local_only restricts Olenji-managed processing. For Apple Legacy recognition, it requires on-device recognition; an unsupported device or language can fail rather than use the network. Turning this setting off can allow Apple's network recognition as well as online text services.

Changing a session's local_only setting applies to subsequent recognition calls, including later chunks of an active recording. A request already sent cannot be recalled by changing the setting. Stop active work before changing privacy settings if you need a clear boundary with no request in progress.

The setting is not a firewall for your external agent, model downloads, a separate text-model service, or all network traffic. A local provider can have its own network behavior.

Workspace files are not encrypted by Olenji by default. Keep the computer and backups secure. Do not publish provider keys, access tokens, pairing links, private recordings, or transcript databases.

Back up or move your workspace

There is no built-in backup, migration, or restore command. For a manual backup:

  1. Stop active recordings normally and finish or cancel jobs.
  2. Stop the service.
  3. Copy the complete workspace folder to a private backup location. Include database sidecar files if present.
  4. Keep the original until you have checked the copy.

Moving is not fully portable: retained-media records and prepared runtimes can contain absolute paths. Copying the folder to a different location or OS can leave playback or runtimes pointing at the old location. This build has no automatic path-repair command. Keep original recordings and the old workspace.

To evaluate a move on the same computer, stop the service, copy rather than move, and start Olenji with --data-dir pointing to the copy. The CLI and agent must use that same folder. Check playback and model readiness before using it for new work. Reinstall compatible models or reimport originals when needed.

Know what removal means

Action What it removes What it does not remove
Remove a downloaded model Olenji-managed weights for that model, when no worker is using them. Transcripts, translations, original recordings, and possibly supporting runtimes.
Disable audio retention The managed audio copy, after successful cleanup. Transcript text and your original external input file. Playback and refinement need the removed copy.
Delete a session That inactive session and its managed data, permanently. Your original external input files and separately exported reports. There is no Trash recovery.
Delete an export The selected report or subtitle file. The saved session and other exports.
Uninstall Olenji The installed application package, according to the installer. Do not assume this removes the workspace, model downloads, backups, or exports. Inspect those separately.

Export or back up anything you need before permanent deletion. An error during cleanup is not confirmation that the files were removed.

Solve common problemsContents

Start with the error message and the relevant job or session. Do not delete the entire workspace as a first troubleshooting step.

Problem What to check or do
olenji is not found Confirm the chosen installation finished. Your terminal must be able to find the executable through its command search path, called PATH. For npm, complete olenji-bootstrap setup.
FFmpeg or ffprobe is missing Install both tools and make them available to the service's environment. Restart the service after changing that environment.
A model is listed but cannot run Inspect the model. Check its hardware, OS, engine, and language requirements. Installed files alone do not prove readiness.
The browser shows no transcript Check the selected session and its job. For browser capture, connect the microphone; an open view alone does not provide audio.
Your microphone meter stays flat Check source selection, mute, OS permission, browser permission where relevant, and device availability.
System audio is unavailable Use live sources and doctor. Not every OS/device setup exposes the required system-output capture route.
Words arrive slowly Try a smaller compatible model, reduce concurrent work, and check for reported gaps or processing backlog. A bigger model is not automatically better for live use.
Speakers are wrong Correct assignments or merge duplicate labels. Short or overlapping speech can remain uncertain. Names are not inferred identities.
Translation is blank Confirm a current translation exists. Bilingual view selection does not start translation. Check the agent or provider job. An answer in the agent chat must still be saved to the Olenji session.
An export is shorter than expected Check the transcription job and chosen language. Translation-only readable output omits turns without a current translation. Complete or correct the missing work, then export again.
Only part of a batch is available Check each returned session and job ID. A successful file does not establish the status of the other inputs.
Translation is blocked by local policy Decide whether the provider is genuinely local. Approve online text processing explicitly only if you intend it.
Translation is marked stale The source changed. Reread the current wording and versions before replacing the translation.
No audio is available for playback Check whether audio was retained. Turning it on later cannot recover already deleted samples.
TRANSLATION_ID_CONFLICT The submitted ID already belongs to another translation. Ask the agent to omit the ID when creating new text. Nothing from the rejected batch is saved. If it used an idempotency key, use a new key for the corrected request.
An edit conflicts Reread the latest turn, then edit that revision. Do not blindly repeat an old edit over newer changes.
A wait timed out Inspect the existing job ID. The task may still be running; a timeout is not an automatic cancellation.
The browser cannot be launched Use the returned view link, or request one with ui open --print-url --json. Open it on the same computer and keep it private. The transcription job does not depend on the launcher.
A saved provider address is invalid Replace it with providers add using the same ID and a valid API address, or remove that entry. Supply a key again when changing the address. Do not delete unrelated providers or share providers.json.
A tab needs pairing Use olenji ui open again. Keep the returned local access link private.
Saved sessions seem to have disappeared Check whether the CLI, agent, and service use the same workspace. A different --data-dir or OLENJI_DATA_DIR opens a different set of saved data; do not delete either folder while investigating.
A moved workspace opens but playback fails The media path may still refer to the old folder. Preserve the original and reimport available recordings; there is no automatic relocation repair.

For an issue report, include the build identity, OS, Python or Node route, model ID, command without secrets, error code, and a small permitted reproduction. Do not include a confidential recording or key just to make the report complete. The developer package contains the project's reporting guidance.

Check platform supportContents

The application has Linux, macOS, and Windows paths. That is not a claim that every capture device, model conversion, processor, or GPU was tested on every OS.

Area What this guide establishes
Commands, settings, model IDs, and saved data behavior Checked against the identified source branch. This edition includes note links after editing, subtitle timing, translation-ID recovery, and the earlier provider and browser fixes.
Linux CPU recognition and browser workflows The source bundle contains earlier execution evidence. Those are historical tests, not new inference results from this documentation refresh.
macOS and Apple models Require the stated Apple hardware, OS, permissions, and native helpers. Native execution remains a target-machine check.
Windows and system audio Include OS-specific paths; physical capture and installed behavior need validation on the actual machine.
GPUs and alternate processor settings Depend on the selected model, runtime, drivers, and host. A recognized option does not install drivers.
Turkish, multiple speakers, and overlapping voices Supported routes and example text do not establish accuracy on a representative corpus. Review important output.

The app does not claim perfect speaker identity, universal word-level timing, instant live captions, automatic summarization, direct website-video import, or automatic repair of relocated workspaces.

For exact commands, all model entries, API examples, and the source fingerprint, use the technical reference. For how this documentation is maintained, see the bundle's maintenance guide.

Small glossary

Term in the app Plain meaning
CLI Commands you run in a terminal.
MCP A connection through which an AI agent can call Olenji tools.
API The request interface another program uses to control Olenji.
JSON / JSONL Text formats used to exchange structured data; JSONL stores one JSON record per line.
ASR / transcription Turning spoken audio into written words.
Diarization Grouping speech by recurring voice.
Segment / turn One timed piece of source transcript.
Revision A saved version number used to prevent overwriting newer edits.
Provider The text-model service used for translation.
Runtime Supporting software that runs a model.
Retention Whether Olenji keeps its audio copy after processing.
Stale translation A translation that no longer matches the current source version.
Event cursor A position in the saved change stream so an agent can continue where it stopped.
Idempotency key A request label used to safely recognize a retry of the same work.

Olenji command and model reference

Companion to the user guide · Inspected 1.0.0 development build · 28 October 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.

CLI command directoryContents

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.
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.
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.

MCP tool directoryContents

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_capabilities Report actual platform, capture and inference readiness.
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 catalogContents

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 —

Model profilesContents

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.
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 settingsContents

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 settingsContents

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 examplesContents

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 setupContents

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 contractsContents

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 evidenceContents

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. The unchanged 1.0.0 version string is not a unique build identity; use the source fingerprints and review report.

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.

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.