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, a reasoning level, 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 | openai | openai, gemini, anthropic | Which provider runs the editing pass and evaluations. The help text: OpenAI is the default for new installations. gemini is Google Gemini and anthropic is Claude. Each provider uses its own API key and bills you directly. Existing provider choices are preserved; long transcripts are split into chunks and merged back on every provider. |
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 on Gemini. The field shows the current ID next to a Choose Model & Estimate… button, which lists the models your key can reach, accepts a custom ID, and estimates cost; Use Model fills the field and Save Configuration applies it. Gemini has no reasoning-level control in RoughCut. Expect different editing behaviour from a different model. |
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.6-sol | — | The model used for editing when the provider is OpenAI. The help text: Sol is the default. Sol and Astra use medium reasoning unless you choose another level; other model IDs use the provider's default. Choose the model and its reasoning level, and estimate cost, here. Save Configuration to apply it to future jobs. GPT-6 Astra is offered as an optional upgrade in Choose Model & Estimate…. The field reads <model> · reasoning <level>. |
OpenAI timeout (sec) | openai_timeout_sec | int | 600 | — | Also used as the Cloud transcription timeout. A reasoning level of high, xhigh or max raises the editing wait to at least 900, 1800 or 2700 seconds; a higher value you set is kept. |
OpenAI reasoning level | openai_reasoning_effort | string | default | the levels the model supports | Read-only here; choose it in Choose Model & Estimate… next to OpenAI model. The help text: How long the OpenAI model thinks before it answers. default keeps RoughCut's tested setting (medium on Sol and Astra). Higher levels are slower and cost more. Change it in Choose Model & Estimate, which lists the levels your model supports. Used by the first pass and Second Look. |
Claude API key | anthropic_api_key | secret | empty | — | Your own key from the Claude Console, stored in the Keychain. Anthropic bills its usage. |
Claude model | anthropic_model | string | claude-opus-5-5 | — | The model used for editing when the provider is anthropic. The help text: Claude model for the editor pass. Opus 5.5 is the starting choice; Claude models have not been scored on RoughCut's evaluation set yet. Choose the model and its reasoning level, and estimate cost, here. The field reads <model> · reasoning <level>. |
Claude timeout (sec) | anthropic_timeout_sec | int | 600 | — | The help text: Max seconds without any data from Claude before a call fails. Claude responses are streamed, so this is a silence limit. 600 covers most videos. The same reasoning-level floor as OpenAI applies. |
Claude reasoning level | anthropic_reasoning_effort | string | default | the levels the model supports | Read-only here; choose it in Choose Model & Estimate… next to Claude model. The help text: How long the Claude model thinks before it answers. default sends no level, so the model's own default applies. Higher levels are slower and cost more. Change it in Choose Model & Estimate, which lists the levels your model supports. Used by the first pass and Second Look. |
A job whose saved level is not offered by a reviewed model stops before any provider call. See Choose OpenAI, Gemini or Claude for the level lists.
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. |
Unreliable span: max speech activity to cut | unreliable_active_max | float | 0.15 | 0.0–1.0 | Transcription-noise loops are cut automatically when the audio underneath has at most this share of non-silent frames; loops over real speech are always kept and flagged for review. 0 cuts only loops over detected silence. Raising it risks cutting real speech. |
First-pass confidence gate | first_pass_gate | string | tangent:0.98 | — | Comma-separated <category>:<min confidence> floors for the first editor pass on English and other non-Arabic jobs. Spans below a floor are kept and listed as review suggestions. Type off to apply every span; an empty field restores the default. |
First-pass confidence gate (Arabic) | first_pass_gate_ar | string | empty | — | The same format, applied to Arabic jobs. Empty by default: the editor's Arabic tangent cuts measured precise enough to apply. |
Exemplar word budget | llm_editor_exemplar_max_words | int | 500 | min 100 | Words the few-shot exemplar block may use inside the editor prompt. 500 truncates after about five examples; 1500 lets sixteen through untruncated. |
Exemplar retrieval ranking | llm_editor_exemplar_retrieval | bool | false | — | Rank exemplars by vocabulary overlap with this transcript instead of by length, so the examples come from similar videos. |
Negative exemplars | llm_editor_exemplar_negatives | int | 0 | 0–16 | How many kept passages that looked cuttable to show the editor as counter-examples. Needs a bank mined with negatives. |
Editor samples (voting) | llm_editor_samples | int | 1 | 1–5 | Run the first editor pass this many times and cut only what a majority agrees on; the rest become review suggestions reading Only some editor samples cut this (…) — kept until you decide. Each extra sample is one more AI call. |
Snap cuts to loudness valleys | snap_rms_valley | bool | false | — | When a cut boundary falls in a gap without detected silence, place it at the quietest 50 ms of the gap instead of the midpoint. Uses the recording's loudness envelope; no AI call. |
Editor consistency post-pass | llm_editor_consistency | bool | false | — | After the first editor pass, merge cuts of the same take group separated by three words or fewer without a pause, and extend a retake or false start over a stranded echo to the next pause. No AI call. |
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. Claude Haiku 4.5 accepts at most 64,000 output tokens, so a job on that model fails with Claude HTTP 400 until you set this to 64000. |
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 condense pass | second_look_condense | bool | false | — | After the Second Look passes, one extra call proposes paragraph-scale passages of twenty words or more that this creator would drop, as Condense suggestion (…) — kept until you decide. Suggestions only — never applied automatically. Needs Second Look on. |
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 | 15.0 | 0.0–100.0 | Per-pass budget as a share of the words that survived so far. Proposals beyond the budget become review suggestions. |
Second Look max spans | second_look_max_spans | int | 20 | min 0 | Hard cap on automatically applied cuts per pass. Excess proposals become review suggestions. |
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, and this whole group is hidden in the App Store build — since RoughCut 1.9.2 the Evals group is development-only. Four of its keys (Eval dataset root, Full eval max clips, Langfuse tracing, Langfuse base URL) do still appear on the Basic tab, but the Evaluation dashboard and the golden-set folder picker are not in that build, so there is nothing for them to drive. The two Langfuse key fields appear nowhere, so tracing cannot be supplied with keys. 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.