workspace: root: ./tmp/narratio-workspace storage: backend: local s3: bucket: "my-dnd-archive" root_prefix: "dnd" region: "us-east-1" endpoint: "" force_path_style: false spool: root: "/var/spool/narratio" delete_audio_after_archive: false archive: enabled: true upload_run: true promote_artifacts: - from: "transcripts/trimmed.json" to: "transcripts/trimmed.json" required: true - from: "artifacts/session_recap.md" to: "artifacts/session_recap.md" required: true secrets: # Optional: load environment variables from files in this directory. # File name = env var name; file contents = env var value. env_dir: /var/local/narratio/secrets whisperx: transcribe_url: "https://transcription.example.com/transcribe" language: "en" timeout: "30m" retries: 3 retry_delay: "2s" concurrency: 2 seriatim: binary: "seriatim" timeout: "10m" output_schema: "seriatim-intermediate" coalesce_gap: 3.0 report: true env: overlap_word_run_gap: 1.0 overlap_word_run_reorder_window: 1.0 backchannel_max_duration: 2.0 filler_max_duration: 1.25 audita: binary: "audita" timeout: "3h" llm_api_key_env: "AUDITA_LLM_API_KEY" # Optional: pass only when overriding Audita's default module sequence. modules: [] base_url: "https://openrouter.ai/api/v1" model: "openrouter/google/gemma-4-31b-it" transcript_description: "" config_path: "" output_schema: "audita-v1" work_dir_retention: "auto" total_llm_concurrency: 1 proposal_llm_concurrency: 1 validation_model: "" validation_llm_concurrency: 1 report: true normalize: # Session-workdir-relative when not absolute. output_path: "transcripts/normalized.json" output_schema: "seriatim-intermediate" report: true trim: enabled: true # Session-workdir-relative when not absolute. output_path: "transcripts/trimmed.json" bounds: prompt_id: "dnd_session.bounds" # Empty means use prompt default profile. profile_id: "" transcript_input_name: "transcript" output_path: "artifacts/session_bounds.json" timeout: "10m" render_debug: false render_output_path: "artifacts/session_bounds.render.json" seriatim: report: false scriptorium: binary: "scriptorium" config_path: "/etc/scriptorium/config.yml" timeout: "10m" render_debug: false artifacts: session_recap: enabled: true prompt_id: "dnd.session_recap" profile_id: "local-quality" output_path: "artifacts/session_recap.md" timeout: "10m" # Optional per-artifact override of global scriptorium.render_debug. # render_debug: true inputs: transcript: # Available transcript sources: # - trimmed_transcript (recommended for session_recap) # - normalized_transcript (recommended for future full-session analysis) # - processed_transcript (raw Audita-polished output) source: "trimmed_transcript" required: true previous_recap: source: "previous_session_artifact" artifact: "session_recap" # Optional: set when previous recap is available. path: "" required: false vars: session_id: true session_date: true campaign_name: true previous_session_id: true output_kind: "session_recap" analyzer: timeout: 20m artifacts: output_dir: artifacts notification: timeout: 10s