default_quality_mode: auto start_lanes: SIMPLE: A MEDIUM_OPS: A MEDIUM_CODE: A COMPLEX: B REASONING: B VISION_OCR: A VISION_UI: A quality_mode_map: economy: A balanced: B max: C lane_order: [A, B, C] budget_caps: warn_pct: 80 hard_pct: 95 warn_max_lane: B hard_max_lane: A escalation: repeat_prompt_window_sec: 300 context_tokens_min_lane_b: 32000 session_ttl_sec: 1800 redis: key_prefix: "ai-router:session:" ttl_sec: 1800 classifier: mode: hybrid llm_model: gigachat-classifier low_confidence_threshold: 0.6 timeout_sec: 15 max_tokens: 64 # Strong Max plan → cheap coder workers/executor → conditional DeepSeek verify hierarchical: enabled: true trigger_tiers: [COMPLEX, REASONING] header: X-AI-Orchestrate # off | auto | force planner_model: novita-planner verifier_model: novita-verifier planner_fallback: b-complex verifier_fallback: b-complex verify_policy: on_fail_or_hard verify_input: digests synthesize_model: a-medium-code plan_confirm: true agent_executor_model: a-medium-code agent_escalate_model: b-complex agent_escalate_after_edit_failures: 2 skip_synthesize_if_single: true max_subtasks: 3 max_verify_retries: 1 plan_max_tokens: 1024 verify_max_tokens: 384 synthesize_max_tokens: 1024 worker_max_tokens: 768 wall_clock_sec: 600 digest_chars: 300 call_timeout_sec: 300 # First turn (kickstart read) can stay longer; after read_file body Coder hangs — # tool_loop uses short timeout + escalate_after_read → DeepSeek. executor_timeout_sec: 90 executor_num_retries: 0 executor_input_chars: 16000 executor_tool_loop_chars: 12000 executor_tool_loop_timeout_sec: 45 executor_newest_tool_chars: 3500 executor_minimal_context: true executor_max_tools: 6 executor_tool_desc_chars: 120 executor_tools_full_chars: 8000 executor_max_tokens: 1024 executor_use_stream: false executor_synthetic_on_timeout: true # First turn only: synthetic read_file on plan path if model returns prose. # Mid-loop still stops (no fake edits). executor_synthetic_mode: kickstart_only executor_max_synthetic_continues: 1 executor_max_edit_failures: 4 executor_midloop_model_retry: true executor_midloop_escalate: true # After successful read_file skip DeepSeek (was 408→400 loop) → edit_file executor_force_edit_after_read: true # After a successful read_file, skip cheap coder — it stalls on fat tool results executor_escalate_after_read: true # Rewrite read_file on already-read paths → edit (breaks re-read loops) executor_rewrite_reread: true # When model returns 200 without tool_calls: one escalate retry before kickstart executor_no_tools_escalate: true # After plan approve: 1) deterministic path index 2) if gaps → cheap find_* model path_resolve_enabled: true path_resolve_model: a-simple path_resolve_timeout_sec: 45 path_resolve_max_tools: 3 # DevOps (*.calentiq.com / Bad Gateway): probe live ports before edit runtime_probe_enabled: true runtime_probe_timeout_sec: 8 # Optional: ssh host for docker inspect (empty = TCP probe from gateway only) runtime_probe_ssh_host: "" # Quiet Zed: milestones only (no ctx bars / LiteLLM waits / subtask dumps) progress_verbose: false show_context_fill: false progress_in_content: true stream_progress: true context_window_tokens: 32768 plan_input_chars: 48000 llm_cache_ttl_sec: 3600 worker_map: simple: a-simple medium_code: a-medium-code hard: b-complex worker_map_max: hard: c-complex