Advanced settings reference
Every configuration key in RoughCut with its default, range, effect, and the risk of changing it.
This is the complete reference for every key in RoughCut's configuration schema, grouped exactly as the Settings Full tab groups them: LLM, Pipeline v2, Transcription, Evals, and System. For each key it gives the interface label, the internal key name, the type, the shipping default, any enforced bounds, and what changing it actually does. Settings resolve in one order only — schema defaults, then your configuration file, then per-job overrides. Saving writes only values that differ from a default, and secrets never enter that file. Most users should change none of this: the ordinary workflow articles cover the controls that matter day to day.
On this page
Read this first
This page is advanced. Nothing here is required for normal use. The defaults are the tested configuration, and the ordinary controls on the New Rough Cut screen — covered in Create your first rough cut — are what most users should change.
Change a key here only when you have a documented problem or an evaluation result that justifies it, and note how to return to the default: clear the field or set it back to the value in the table, then Save Configuration. A value equal to its default is removed from the configuration file entirely.
Changing a provider, a model, or the transcription source invalidates comparability with earlier evaluation runs. Cached evaluation responses are keyed to those choices, so results before and after a change are not a clean comparison.
How settings resolve
There is exactly one resolution order:
schema default < configuration file < per-job override
A layer wins only when its value is meaningful — not missing, and not an empty string. Per-job overrides are the controls on the New Rough Cut and Transcribe Only screens; they apply to that job only.
The modified badge next to a field means the value differs from the shipping default. It does not mean unsaved. Secret fields never show it.
LLM
Which provider runs the editor pass, and how it is called.
| Label | Key | Type | Default | Range or choices | Effect and when to change |
|---|---|---|---|---|---|
LLM provider | llm_provider | select | gemini | gemini, openai | Which provider runs the editing pass and evaluations. Gemini is recommended: its long context usually fits a whole video in one pass. |
Gemini API key | gemini_api_key | secret | empty | — | Your own key, stored in the Keychain. Requires billing enabled on its Google project. |
Gemini model | gemini_model | string | gemini-3.1-pro-preview | — | The model used for editing. Change only if your project cannot access the default, and expect different editing behaviour. |
Gemini timeout (sec) | gemini_timeout_sec | int | 600 | — | Raise for very long transcripts on slow connections. |
OpenAI API key | openai_api_key | secret | empty | — | Your own key, stored in the Keychain. Also required for Cloud transcription. |
OpenAI model | openai_model | string | gpt-5.2 | — | The model used for editing when the provider is OpenAI. |
OpenAI timeout (sec) | openai_timeout_sec | int | 600 | — | Also used as the Cloud transcription timeout. |
Pipeline v2
How cuts are decided and shaped. These are the settings most likely to damage a cut.
| Label | Key | Type | Default | Range | Effect and when to change |
|---|---|---|---|---|---|
Min silence to cut (sec) | silence_min_cut_s | float | 0.7 | min 0.1 | The configuration-level floor for cutting a silence. Distinct from the per-job Min silence (sec), which defaults to 0.5. Raising it keeps more breathing room. |
Cut pad into removed (sec) | pad_into_removed_s | float | 0.05 | 0.0–0.5 | How far a kept segment extends into removed material. Raising it softens cuts; too high reintroduces the noise you cut. |
Min keep island (sec) | min_keep_island_s | float | 0.25 | min 0.0 | Kept fragments shorter than this are absorbed into the surrounding cut. Raising it removes more stray syllables. |
LLM editor max output tokens | llm_editor_max_output_tokens | int | 65536 | min 1024 | Always set, to prevent silent truncation. Lowering it risks a truncated edit list. |
LLM editor chunk size (words) | llm_editor_chunk_words | int | 24000 | min 2000 | How much transcript goes to the model at once. Also the ceiling above which Second Look cannot run. |
LLM editor chunk overlap (words) | llm_editor_overlap_words | int | 600 | min 0 | Overlap between chunks so cuts near a boundary are not missed. |
LLM editor exemplars | llm_editor_exemplars | int | 8 | min 0 | How many example removals are injected into the prompt. 0 disables exemplars. Needs an imported bank — see Exemplars. |
Exemplar bank path | exemplar_bank_path | path | empty | — | Overrides the default bank location. Empty means the standard location inside the app's container. |
Second Look passes | second_look_passes | int | 0 | 0–3 | 0 is off. The job toggle sets 1 when enabled. See Second Look. |
Second Look min confidence | second_look_min_confidence | float | 0.95 | 0.0–1.0 | Refine-pass proposals below this are never cut automatically; they become review suggestions. Lowering it makes automatic removal far more aggressive. |
Second Look max removal % | second_look_max_removal_pct | float | 10.0 | 0.0–100.0 | Per-pass budget as a share of the words that survived so far. |
Second Look max spans | second_look_max_spans | int | 10 | min 0 | Hard cap on automatically applied cuts per pass. |
Second Look auto categories | second_look_auto_categories | string | retake_verbatim,retake_reworded,false_start,noise | — | Which categories may be applied automatically. tangent is deliberately excluded as the known over-cutting risk. |
Transcription
| Label | Key | Type | Default | Choices | Effect and when to change |
|---|---|---|---|---|---|
Whisper model name | whisper_cpp_model_name | string | ggml-large-v3-turbo.bin | — | The tested default for word timestamps in English and Arabic. |
Whisper model path | whisper_cpp_model_path | path | empty | — | Overrides where the model is loaded from. Empty means the standard location. |
Whisper device | whisper_device | select | metal | auto, cpu, metal | metal is correct on Apple Silicon. cpu is for debugging and much slower. |
Silence-gated transcription | asr_silence_gated | bool | true | — | Transcribes speech regions rather than the whole file. Leave on. |
Hallucination loop recovery | asr_loop_recovery | bool | true | — | Re-transcribes regions where the model looped. Leave on. On-device only. |
OpenAI transcription model | openai_transcribe_model | string | whisper-1 | — | Cloud transcription requires word timestamps; only whisper-1 returns them today, and other models fail loudly. |
Cloud transcription by default | cloud_transcription_default | bool | false | — | Pre-selects Cloud for new jobs. Requires Pro and your OpenAI key; each job still shows the choice. |
Evals
Optional. See Evaluate RoughCut against your own edits.
| Label | Key | Type | Default | Range | Effect |
|---|---|---|---|---|---|
Eval dataset root | eval_dataset_root | path | empty | — | Your golden-set folder. Grant access through Models & Data rather than typing a path. |
Full eval max clips | eval_full_max_clips | int | 15 | min 0 | Cap on a full run. 0 runs all clips. |
Langfuse public key | langfuse_public_key | secret | empty | — | Keychain. Only needed for tracing. |
Langfuse secret key | langfuse_secret_key | secret | empty | — | Keychain. Only needed for tracing. |
Langfuse base URL | langfuse_base_url | string | https://cloud.langfuse.com | — | Change for a different region or a self-hosted instance. |
Langfuse tracing | langfuse_tracing | bool | false | — | Off means fully local: no telemetry leaves the machine. |
Langfuse sample rate | langfuse_sample_rate | float | 1.0 | 0.0–1.0 | Present in the schema. See the note below. |
Langfuse environment | langfuse_environment | string | revamp-v2 | — | Environment tag applied to traces. |
System
| Label | Key | Type | Default | Effect |
|---|---|---|---|---|
Job TTL hours | job_ttl_hours | int | 24 | Finished jobs older than this are cleaned up automatically. |
Max video GB | max_video_gb | int | 12 | Present in the schema. See the note below. |
Max audio GB | max_audio_gb | int | 10 | Present in the schema. See the note below. |
Max total GB | max_total_gb | int | 25 | The jobs folder is trimmed oldest-first to stay under this. |
Keep analysis audio | keep_analysis_audio | bool | false | Off deletes the extracted analysis audio (~115 MB per hour) when a cut finishes. Neither the FCPXML nor review needs it. |
Log level | log_level | select | INFO | Present in the schema. See the note below. |
Four keys —Max video GB,Max audio GB,Langfuse sample rate, andLog level— appear as editable fields but are not read anywhere in the current build. Setting them has no effect. In particular, do not rely on the two GB values as enforced file-size limits.
Keeping this page honest
This table is generated from the app's configuration schema at the version stated in the page metadata, and the drift check treats a change to that schema as a documentation-affecting change. If the app adds or renames a key, this page is regenerated before the change is published.