coderouter-cli 2.5.0__tar.gz → 2.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/CHANGELOG.md +32 -0
  2. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/PKG-INFO +17 -17
  3. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/README.en.md +16 -16
  4. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/README.md +16 -16
  5. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/cli.py +2 -2
  6. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/config/capability_registry.py +1 -1
  7. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/data/model-capabilities.yaml +2 -2
  8. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/ingress/launcher_routes.py +16 -5
  9. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/logging.py +2 -2
  10. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/routing/capability.py +1 -1
  11. coderouter_cli-2.5.1/docs/README.md +94 -0
  12. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/hf-ollama-models.md +2 -2
  13. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/launcher-gui.md +1 -1
  14. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/launcher-quickstart.md +1 -1
  15. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/launcher.md +2 -2
  16. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/llamacpp-direct.en.md +3 -3
  17. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/llamacpp-direct.md +4 -4
  18. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/lmstudio-direct.en.md +3 -3
  19. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/lmstudio-direct.md +3 -3
  20. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/concepts}/architecture.md +2 -2
  21. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/designs/v1.6-auto-router.md +1 -1
  22. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/guides}/free-tier-guide.en.md +5 -5
  23. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/guides}/free-tier-guide.md +7 -7
  24. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/guides}/troubleshooting.en.md +1 -1
  25. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/guides}/troubleshooting.md +1 -1
  26. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/guides}/usage-guide.en.md +5 -5
  27. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/guides}/usage-guide.md +4 -4
  28. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/start}/quickstart.en.md +9 -9
  29. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/start}/quickstart.md +9 -9
  30. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/start}/when-do-i-need-coderouter.en.md +1 -1
  31. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/start}/when-do-i-need-coderouter.md +1 -1
  32. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/providers.nvidia-nim.yaml +1 -1
  33. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/providers.yaml +3 -3
  34. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/pyproject.toml +1 -1
  35. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_examples_yaml.py +1 -1
  36. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_setup_sh.py +1 -1
  37. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/.gitignore +0 -0
  38. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/LICENSE +0 -0
  39. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/__init__.py +0 -0
  40. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/__main__.py +0 -0
  41. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/adapters/__init__.py +0 -0
  42. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/adapters/anthropic_native.py +0 -0
  43. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/adapters/base.py +0 -0
  44. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/adapters/openai_compat.py +0 -0
  45. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/adapters/registry.py +0 -0
  46. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/cli_stats.py +0 -0
  47. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/config/__init__.py +0 -0
  48. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/config/env_file.py +0 -0
  49. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/config/loader.py +0 -0
  50. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/config/schemas.py +0 -0
  51. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/cost.py +0 -0
  52. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/data/__init__.py +0 -0
  53. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/doctor.py +0 -0
  54. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/doctor_apply.py +0 -0
  55. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/env_security.py +0 -0
  56. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/errors.py +0 -0
  57. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/__init__.py +0 -0
  58. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/_fingerprint.py +0 -0
  59. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/backend_health.py +0 -0
  60. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/context_budget.py +0 -0
  61. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/continuous_probe.py +0 -0
  62. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/drift_actions.py +0 -0
  63. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/drift_detection.py +0 -0
  64. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/memory_pressure.py +0 -0
  65. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/self_healing.py +0 -0
  66. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/guards/tool_loop.py +0 -0
  67. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/ingress/__init__.py +0 -0
  68. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/ingress/anthropic_routes.py +0 -0
  69. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/ingress/app.py +0 -0
  70. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/ingress/dashboard_routes.py +0 -0
  71. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/ingress/metrics_routes.py +0 -0
  72. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/ingress/openai_routes.py +0 -0
  73. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/metrics/__init__.py +0 -0
  74. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/metrics/collector.py +0 -0
  75. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/metrics/prometheus.py +0 -0
  76. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/output_filters.py +0 -0
  77. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/plugins/__init__.py +0 -0
  78. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/plugins/base.py +0 -0
  79. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/plugins/loader.py +0 -0
  80. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/plugins/registry.py +0 -0
  81. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/routing/__init__.py +0 -0
  82. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/routing/adaptive.py +0 -0
  83. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/routing/auto_router.py +0 -0
  84. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/routing/budget.py +0 -0
  85. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/routing/fallback.py +0 -0
  86. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/state/__init__.py +0 -0
  87. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/state/audit_log.py +0 -0
  88. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/state/replay.py +0 -0
  89. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/state/request_log.py +0 -0
  90. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/state/store.py +0 -0
  91. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/state/suggest_rules.py +0 -0
  92. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/token_estimation.py +0 -0
  93. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/translation/__init__.py +0 -0
  94. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/translation/anthropic.py +0 -0
  95. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/translation/convert.py +0 -0
  96. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/coderouter/translation/tool_repair.py +0 -0
  97. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/assets/dashboard-demo.png +0 -0
  98. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/gguf_dl.md +0 -0
  99. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/backends}/verify-ollama-0.23.1.md +0 -0
  100. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/concepts}/context-budget.md +0 -0
  101. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/concepts}/continuous-probing.md +0 -0
  102. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/concepts}/drift-detection.md +0 -0
  103. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/concepts}/partial-stitch.md +0 -0
  104. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/designs/v1.5-dashboard-mockup.html +0 -0
  105. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/designs/v1.6-auto-router-verification.md +0 -0
  106. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/guides}/security.en.md +0 -0
  107. {coderouter_cli-2.5.0/docs → coderouter_cli-2.5.1/docs/guides}/security.md +0 -0
  108. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/openrouter-roster/CHANGES.md +0 -0
  109. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/openrouter-roster/README.md +0 -0
  110. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/openrouter-roster/latest.json +0 -0
  111. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/retrospectives/v0.4.md +0 -0
  112. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/retrospectives/v0.5-verify.md +0 -0
  113. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/retrospectives/v0.5.md +0 -0
  114. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/retrospectives/v0.6.md +0 -0
  115. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/retrospectives/v0.7.md +0 -0
  116. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/retrospectives/v1.0-verify.md +0 -0
  117. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/docs/retrospectives/v1.0.md +0 -0
  118. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/.env.example +0 -0
  119. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/providers.auto-custom.yaml +0 -0
  120. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/providers.auto.yaml +0 -0
  121. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/providers.llama-cpp-vllm.yaml +0 -0
  122. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/providers.note-2026.yaml +0 -0
  123. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/providers.raspberrypi.yaml +0 -0
  124. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/examples/providers.v2-context-budget.yaml +0 -0
  125. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/scripts/demo_traffic.sh +0 -0
  126. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/scripts/openrouter_roster_diff.py +0 -0
  127. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/scripts/smoke_v2_2.sh +0 -0
  128. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/scripts/verify-providers.yaml +0 -0
  129. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/scripts/verify_ollama_0_23.py +0 -0
  130. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/scripts/verify_v0_5.sh +0 -0
  131. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/scripts/verify_v1_0.sh +0 -0
  132. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/__init__.py +0 -0
  133. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/conftest.py +0 -0
  134. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_adapter_anthropic.py +0 -0
  135. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_audit_log.py +0 -0
  136. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_auto_router.py +0 -0
  137. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_backend_health.py +0 -0
  138. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_budget.py +0 -0
  139. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_capability.py +0 -0
  140. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_capability_degraded_payload.py +0 -0
  141. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_capability_registry.py +0 -0
  142. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_capability_registry_cache_control.py +0 -0
  143. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_claude_code_suitability.py +0 -0
  144. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_cli.py +0 -0
  145. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_cli_stats.py +0 -0
  146. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_config.py +0 -0
  147. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_context_budget.py +0 -0
  148. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_continuous_probe.py +0 -0
  149. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_dashboard_endpoint.py +0 -0
  150. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_doctor.py +0 -0
  151. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_doctor_apply.py +0 -0
  152. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_doctor_cache_probe.py +0 -0
  153. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_drift_actions.py +0 -0
  154. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_drift_detection.py +0 -0
  155. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_drift_detection_integration.py +0 -0
  156. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_env_file.py +0 -0
  157. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_env_security.py +0 -0
  158. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_errors.py +0 -0
  159. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_fallback.py +0 -0
  160. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_fallback_anthropic.py +0 -0
  161. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_fallback_cache_control.py +0 -0
  162. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_fallback_cache_observed.py +0 -0
  163. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_fallback_misconfig_warn.py +0 -0
  164. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_fallback_paid_gate.py +0 -0
  165. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_fallback_thinking.py +0 -0
  166. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_guards_tool_loop.py +0 -0
  167. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_ingress_anthropic.py +0 -0
  168. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_ingress_profile.py +0 -0
  169. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_memory_pressure.py +0 -0
  170. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_metrics_cache.py +0 -0
  171. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_metrics_collector.py +0 -0
  172. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_metrics_cost.py +0 -0
  173. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_metrics_endpoint.py +0 -0
  174. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_metrics_jsonl.py +0 -0
  175. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_metrics_prometheus.py +0 -0
  176. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_metrics_prometheus_cache.py +0 -0
  177. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_openai_compat.py +0 -0
  178. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_openrouter_roster_diff.py +0 -0
  179. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_output_filters.py +0 -0
  180. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_output_filters_adapters.py +0 -0
  181. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_partial_stitch.py +0 -0
  182. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_plugins_integration.py +0 -0
  183. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_plugins_loader.py +0 -0
  184. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_plugins_registry.py +0 -0
  185. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_reasoning_strip.py +0 -0
  186. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_request_log.py +0 -0
  187. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_routing_adaptive.py +0 -0
  188. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_self_healing.py +0 -0
  189. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_state_store.py +0 -0
  190. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_token_estimation.py +0 -0
  191. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_tool_repair.py +0 -0
  192. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_translation_anthropic.py +0 -0
  193. {coderouter_cli-2.5.0 → coderouter_cli-2.5.1}/tests/test_translation_reverse.py +0 -0
@@ -6,6 +6,38 @@ versioning follows [SemVer](https://semver.org/).
6
6
 
7
7
  ---
8
8
 
9
+ ## [v2.5.1] — 2026-05-22 (MLX backend + docs reorganization)
10
+
11
+ Patch release: a third Launcher backend, a reorganized documentation
12
+ tree, and a security fix.
13
+
14
+ ### Added
15
+
16
+ - **MLX backend** for the Launcher (`launcher_gui.py` and
17
+ `coderouter/ingress/launcher_routes.py`): `mlx` joins `llama.cpp` and
18
+ `vllm`, aimed at Apple Silicon users. Launches
19
+ `python -m mlx_lm.server --model <m> --port <p>`. The backend
20
+ selectors (desktop GUI combobox / Web `<select>`) gain an `mlx`
21
+ option, and the binary-not-found error messages are now
22
+ backend-agnostic.
23
+
24
+ ### Changed
25
+
26
+ - **`docs/` reorganized** into role-based folders — `start/`, `guides/`,
27
+ `backends/`, `concepts/` — with a new bilingual (JA/EN) master index
28
+ at `docs/README.md` including a quick "what to read" table. Internal
29
+ cross-links, `README.md` / `README.en.md`, and code/config path
30
+ references were updated to the new layout.
31
+ - **`plan.md` restructured**: deduplicated, version ordering fixed,
32
+ sections compressed (1747 → 721 lines).
33
+
34
+ ### Security
35
+
36
+ - **starlette `1.0.0` → `1.0.1`** (`uv.lock`): fixes PYSEC-2026-161,
37
+ which failed the `cve-audit` CI job.
38
+
39
+ ---
40
+
9
41
  ## [v2.5.0] — 2026-05-22 (Launcher — llama.cpp / vllm GUI)
10
42
 
11
43
  Browser-based process manager for local inference backends, integrated
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coderouter-cli
3
- Version: 2.5.0
3
+ Version: 2.5.1
4
4
  Summary: Local-first, free-first, fallback-built-in LLM router. Claude Code / OpenAI compatible.
5
5
  Project-URL: Homepage, https://github.com/zephel01/CodeRouter
6
6
  Project-URL: Repository, https://github.com/zephel01/CodeRouter
@@ -54,7 +54,7 @@ Description-Content-Type: text/markdown
54
54
  </p>
55
55
 
56
56
  <p align="center">
57
- <a href="./README.en.md">English</a> · <strong>日本語</strong> · <a href="./docs/quickstart.md">10 分で動かす</a> · <a href="./docs/architecture.md">設計詳細</a>
57
+ <a href="./README.en.md">English</a> · <strong>日本語</strong> · <a href="./docs/start/quickstart.md">10 分で動かす</a> · <a href="./docs/concepts/architecture.md">設計詳細</a>
58
58
  </p>
59
59
 
60
60
  ---
@@ -121,7 +121,7 @@ ANTHROPIC_BASE_URL=http://localhost:8088 ANTHROPIC_AUTH_TOKEN=dummy claude
121
121
  | codex / gemini-cli + Ollama 直繋ぎで動いてる | オプション — フォールバックが欲しいなら |
122
122
  | Claude API を直接叩いてて問題ない | 不要 |
123
123
 
124
- 詳細は → [要否判定ガイド](./docs/when-do-i-need-coderouter.md)
124
+ 詳細は → [要否判定ガイド](./docs/start/when-do-i-need-coderouter.md)
125
125
 
126
126
  ---
127
127
 
@@ -186,7 +186,7 @@ launcher:
186
186
  "--max-model-len": 4096
187
187
  ```
188
188
 
189
- 詳細 → [Launcher ガイド](./docs/launcher.md)
189
+ 詳細 → [Launcher ガイド](./docs/backends/launcher.md)
190
190
 
191
191
  ---
192
192
 
@@ -213,7 +213,7 @@ providers:
213
213
  api_key_env: OPENROUTER_API_KEY
214
214
  ```
215
215
 
216
- もっと詳しい設定 → [利用ガイド](./docs/usage-guide.md) · [設計詳細](./docs/architecture.md)
216
+ もっと詳しい設定 → [利用ガイド](./docs/guides/usage-guide.md) · [設計詳細](./docs/concepts/architecture.md)
217
217
 
218
218
  ---
219
219
 
@@ -221,15 +221,15 @@ providers:
221
221
 
222
222
  | やりたいこと | ドキュメント |
223
223
  |---|---|
224
- | すぐ動かす | [Quickstart](./docs/quickstart.md) |
225
- | 使いこなす | [利用ガイド](./docs/usage-guide.md) |
226
- | 無料で回す | [無料枠ガイド](./docs/free-tier-guide.md) |
227
- | llama.cpp / vllm を GUI で起動 | [Launcher ガイド](./docs/launcher.md) |
228
- | 詰まった | [トラブルシューティング](./docs/troubleshooting.md) |
229
- | 設計を知りたい | [アーキテクチャ詳細](./docs/architecture.md) |
224
+ | すぐ動かす | [Quickstart](./docs/start/quickstart.md) |
225
+ | 使いこなす | [利用ガイド](./docs/guides/usage-guide.md) |
226
+ | 無料で回す | [無料枠ガイド](./docs/guides/free-tier-guide.md) |
227
+ | llama.cpp / vllm を GUI で起動 | [Launcher ガイド](./docs/backends/launcher.md) |
228
+ | 詰まった | [トラブルシューティング](./docs/guides/troubleshooting.md) |
229
+ | 設計を知りたい | [アーキテクチャ詳細](./docs/concepts/architecture.md) |
230
230
  | 全リリース履歴 | [CHANGELOG](./CHANGELOG.md) |
231
231
 
232
- English: [Quickstart](./docs/quickstart.en.md) · [Usage guide](./docs/usage-guide.en.md) · [Free-tier](./docs/free-tier-guide.en.md) · [Troubleshooting](./docs/troubleshooting.en.md)
232
+ English: [Quickstart](./docs/start/quickstart.en.md) · [Usage guide](./docs/guides/usage-guide.en.md) · [Free-tier](./docs/guides/free-tier-guide.en.md) · [Troubleshooting](./docs/guides/troubleshooting.en.md)
233
233
 
234
234
  ---
235
235
 
@@ -239,10 +239,10 @@ English: [Quickstart](./docs/quickstart.en.md) · [Usage guide](./docs/usage-gui
239
239
 
240
240
  | 症状 | 原因 | 詳細 |
241
241
  |---|---|---|
242
- | 401 エラー | API キー未設定 / `.env` に `export` 忘れ | [§1](./docs/troubleshooting.md#1-起動設定で踏みやすい-5-つの罠-v162-追加) |
243
- | 返信が空 / 意味不明 | Ollama の `num_ctx` が 2048 に切り詰め | [§3](./docs/troubleshooting.md#3-ollama-初心者--サイレント失敗-5-症状-v07-c) |
244
- | `<think>` タグが漏れる | `output_filters: [strip_thinking]` を付ける | [§3](./docs/troubleshooting.md#3-ollama-初心者--サイレント失敗-5-症状-v07-c) |
245
- | Claude Code でツール呼び出しがおかしい | tool-call 修復が効いてない | [§4](./docs/troubleshooting.md#4-claude-code-連携で踏みやすい罠-v162-追加) |
242
+ | 401 エラー | API キー未設定 / `.env` に `export` 忘れ | [§1](./docs/guides/troubleshooting.md#1-起動設定で踏みやすい-5-つの罠-v162-追加) |
243
+ | 返信が空 / 意味不明 | Ollama の `num_ctx` が 2048 に切り詰め | [§3](./docs/guides/troubleshooting.md#3-ollama-初心者--サイレント失敗-5-症状-v07-c) |
244
+ | `<think>` タグが漏れる | `output_filters: [strip_thinking]` を付ける | [§3](./docs/guides/troubleshooting.md#3-ollama-初心者--サイレント失敗-5-症状-v07-c) |
245
+ | Claude Code でツール呼び出しがおかしい | tool-call 修復が効いてない | [§4](./docs/guides/troubleshooting.md#4-claude-code-連携で踏みやすい罠-v162-追加) |
246
246
 
247
247
  `http://localhost:8088/dashboard` を開いておくと、ほとんどの問題が見て 10 秒でわかります。
248
248
 
@@ -268,7 +268,7 @@ CodeRouter は backend ルーター層として独立して動きます。`OPENA
268
268
 
269
269
  ## Security
270
270
 
271
- シークレットは環境変数に置きます。[`docs/security.md`](./docs/security.md) に完全な方針と報告手順があります。
271
+ シークレットは環境変数に置きます。[`docs/security.md`](./docs/guides/security.md) に完全な方針と報告手順があります。
272
272
 
273
273
  ## License
274
274
 
@@ -13,7 +13,7 @@
13
13
  </p>
14
14
 
15
15
  <p align="center">
16
- <strong>English</strong> · <a href="./README.md">日本語</a> · <a href="./docs/quickstart.en.md">Get started in 10 min</a> · <a href="./docs/architecture.md">Architecture</a>
16
+ <strong>English</strong> · <a href="./README.md">日本語</a> · <a href="./docs/start/quickstart.en.md">Get started in 10 min</a> · <a href="./docs/concepts/architecture.md">Architecture</a>
17
17
  </p>
18
18
 
19
19
  ---
@@ -80,7 +80,7 @@ That's it. Claude Code works as usual, but your local Ollama is answering behind
80
80
  | codex / gemini-cli + Ollama works fine | Optional — if you want fallback |
81
81
  | Using Claude API directly, no issues | Not needed |
82
82
 
83
- Full decision matrix → [Do I need CodeRouter?](./docs/when-do-i-need-coderouter.en.md)
83
+ Full decision matrix → [Do I need CodeRouter?](./docs/start/when-do-i-need-coderouter.en.md)
84
84
 
85
85
  ---
86
86
 
@@ -145,7 +145,7 @@ launcher:
145
145
  "--max-model-len": 4096
146
146
  ```
147
147
 
148
- Details → [Launcher guide](./docs/launcher.md)
148
+ Details → [Launcher guide](./docs/backends/launcher.md)
149
149
 
150
150
  ---
151
151
 
@@ -172,7 +172,7 @@ providers:
172
172
  api_key_env: OPENROUTER_API_KEY
173
173
  ```
174
174
 
175
- More detail → [Usage guide](./docs/usage-guide.en.md) · [Architecture](./docs/architecture.md)
175
+ More detail → [Usage guide](./docs/guides/usage-guide.en.md) · [Architecture](./docs/concepts/architecture.md)
176
176
 
177
177
  ---
178
178
 
@@ -180,15 +180,15 @@ More detail → [Usage guide](./docs/usage-guide.en.md) · [Architecture](./docs
180
180
 
181
181
  | Goal | Document |
182
182
  |---|---|
183
- | Get running fast | [Quickstart](./docs/quickstart.en.md) |
184
- | Use it well | [Usage guide](./docs/usage-guide.en.md) |
185
- | Run for free | [Free-tier guide](./docs/free-tier-guide.en.md) |
186
- | Launch llama.cpp / vllm via GUI | [Launcher guide](./docs/launcher.md) |
187
- | Stuck? | [Troubleshooting](./docs/troubleshooting.en.md) |
188
- | Understand the design | [Architecture](./docs/architecture.md) |
183
+ | Get running fast | [Quickstart](./docs/start/quickstart.en.md) |
184
+ | Use it well | [Usage guide](./docs/guides/usage-guide.en.md) |
185
+ | Run for free | [Free-tier guide](./docs/guides/free-tier-guide.en.md) |
186
+ | Launch llama.cpp / vllm via GUI | [Launcher guide](./docs/backends/launcher.md) |
187
+ | Stuck? | [Troubleshooting](./docs/guides/troubleshooting.en.md) |
188
+ | Understand the design | [Architecture](./docs/concepts/architecture.md) |
189
189
  | Full release history | [CHANGELOG](./CHANGELOG.md) |
190
190
 
191
- 日本語: [Quickstart](./docs/quickstart.md) · [利用ガイド](./docs/usage-guide.md) · [無料枠ガイド](./docs/free-tier-guide.md) · [トラブルシューティング](./docs/troubleshooting.md)
191
+ 日本語: [Quickstart](./docs/start/quickstart.md) · [利用ガイド](./docs/guides/usage-guide.md) · [無料枠ガイド](./docs/guides/free-tier-guide.md) · [トラブルシューティング](./docs/guides/troubleshooting.md)
192
192
 
193
193
  ---
194
194
 
@@ -198,10 +198,10 @@ More detail → [Usage guide](./docs/usage-guide.en.md) · [Architecture](./docs
198
198
 
199
199
  | Symptom | Cause | Details |
200
200
  |---|---|---|
201
- | 401 error | API key not set / missing `export` in `.env` | [§1](./docs/troubleshooting.en.md#1-five-startup--config-gotchas-added-in-v162) |
202
- | Empty / garbage replies | Ollama `num_ctx` truncated to 2048 | [§3](./docs/troubleshooting.en.md#3-ollama-beginner--5-silent-fail-symptoms-v07-c) |
203
- | `<think>` tags leaking | Add `output_filters: [strip_thinking]` | [§3](./docs/troubleshooting.en.md#3-ollama-beginner--5-silent-fail-symptoms-v07-c) |
204
- | Tool calls misbehaving in Claude Code | Tool-call repair not kicking in | [§4](./docs/troubleshooting.en.md#4-claude-code-integration-gotchas-added-in-v162) |
201
+ | 401 error | API key not set / missing `export` in `.env` | [§1](./docs/guides/troubleshooting.en.md#1-five-startup--config-gotchas-added-in-v162) |
202
+ | Empty / garbage replies | Ollama `num_ctx` truncated to 2048 | [§3](./docs/guides/troubleshooting.en.md#3-ollama-beginner--5-silent-fail-symptoms-v07-c) |
203
+ | `<think>` tags leaking | Add `output_filters: [strip_thinking]` | [§3](./docs/guides/troubleshooting.en.md#3-ollama-beginner--5-silent-fail-symptoms-v07-c) |
204
+ | Tool calls misbehaving in Claude Code | Tool-call repair not kicking in | [§4](./docs/guides/troubleshooting.en.md#4-claude-code-integration-gotchas-added-in-v162) |
205
205
 
206
206
  Open `http://localhost:8088/dashboard` while debugging — most issues become visible in 10 seconds.
207
207
 
@@ -227,7 +227,7 @@ CodeRouter runs as an independent backend router layer. Point any project's `OPE
227
227
 
228
228
  ## Security
229
229
 
230
- Secrets go in env vars, not config files. See [`docs/security.en.md`](./docs/security.en.md) for the full policy and reporting instructions.
230
+ Secrets go in env vars, not config files. See [`docs/security.en.md`](./docs/guides/security.en.md) for the full policy and reporting instructions.
231
231
 
232
232
  ## License
233
233
 
@@ -13,7 +13,7 @@
13
13
  </p>
14
14
 
15
15
  <p align="center">
16
- <a href="./README.en.md">English</a> · <strong>日本語</strong> · <a href="./docs/quickstart.md">10 分で動かす</a> · <a href="./docs/architecture.md">設計詳細</a>
16
+ <a href="./README.en.md">English</a> · <strong>日本語</strong> · <a href="./docs/start/quickstart.md">10 分で動かす</a> · <a href="./docs/concepts/architecture.md">設計詳細</a>
17
17
  </p>
18
18
 
19
19
  ---
@@ -80,7 +80,7 @@ ANTHROPIC_BASE_URL=http://localhost:8088 ANTHROPIC_AUTH_TOKEN=dummy claude
80
80
  | codex / gemini-cli + Ollama 直繋ぎで動いてる | オプション — フォールバックが欲しいなら |
81
81
  | Claude API を直接叩いてて問題ない | 不要 |
82
82
 
83
- 詳細は → [要否判定ガイド](./docs/when-do-i-need-coderouter.md)
83
+ 詳細は → [要否判定ガイド](./docs/start/when-do-i-need-coderouter.md)
84
84
 
85
85
  ---
86
86
 
@@ -145,7 +145,7 @@ launcher:
145
145
  "--max-model-len": 4096
146
146
  ```
147
147
 
148
- 詳細 → [Launcher ガイド](./docs/launcher.md)
148
+ 詳細 → [Launcher ガイド](./docs/backends/launcher.md)
149
149
 
150
150
  ---
151
151
 
@@ -172,7 +172,7 @@ providers:
172
172
  api_key_env: OPENROUTER_API_KEY
173
173
  ```
174
174
 
175
- もっと詳しい設定 → [利用ガイド](./docs/usage-guide.md) · [設計詳細](./docs/architecture.md)
175
+ もっと詳しい設定 → [利用ガイド](./docs/guides/usage-guide.md) · [設計詳細](./docs/concepts/architecture.md)
176
176
 
177
177
  ---
178
178
 
@@ -180,15 +180,15 @@ providers:
180
180
 
181
181
  | やりたいこと | ドキュメント |
182
182
  |---|---|
183
- | すぐ動かす | [Quickstart](./docs/quickstart.md) |
184
- | 使いこなす | [利用ガイド](./docs/usage-guide.md) |
185
- | 無料で回す | [無料枠ガイド](./docs/free-tier-guide.md) |
186
- | llama.cpp / vllm を GUI で起動 | [Launcher ガイド](./docs/launcher.md) |
187
- | 詰まった | [トラブルシューティング](./docs/troubleshooting.md) |
188
- | 設計を知りたい | [アーキテクチャ詳細](./docs/architecture.md) |
183
+ | すぐ動かす | [Quickstart](./docs/start/quickstart.md) |
184
+ | 使いこなす | [利用ガイド](./docs/guides/usage-guide.md) |
185
+ | 無料で回す | [無料枠ガイド](./docs/guides/free-tier-guide.md) |
186
+ | llama.cpp / vllm を GUI で起動 | [Launcher ガイド](./docs/backends/launcher.md) |
187
+ | 詰まった | [トラブルシューティング](./docs/guides/troubleshooting.md) |
188
+ | 設計を知りたい | [アーキテクチャ詳細](./docs/concepts/architecture.md) |
189
189
  | 全リリース履歴 | [CHANGELOG](./CHANGELOG.md) |
190
190
 
191
- English: [Quickstart](./docs/quickstart.en.md) · [Usage guide](./docs/usage-guide.en.md) · [Free-tier](./docs/free-tier-guide.en.md) · [Troubleshooting](./docs/troubleshooting.en.md)
191
+ English: [Quickstart](./docs/start/quickstart.en.md) · [Usage guide](./docs/guides/usage-guide.en.md) · [Free-tier](./docs/guides/free-tier-guide.en.md) · [Troubleshooting](./docs/guides/troubleshooting.en.md)
192
192
 
193
193
  ---
194
194
 
@@ -198,10 +198,10 @@ English: [Quickstart](./docs/quickstart.en.md) · [Usage guide](./docs/usage-gui
198
198
 
199
199
  | 症状 | 原因 | 詳細 |
200
200
  |---|---|---|
201
- | 401 エラー | API キー未設定 / `.env` に `export` 忘れ | [§1](./docs/troubleshooting.md#1-起動設定で踏みやすい-5-つの罠-v162-追加) |
202
- | 返信が空 / 意味不明 | Ollama の `num_ctx` が 2048 に切り詰め | [§3](./docs/troubleshooting.md#3-ollama-初心者--サイレント失敗-5-症状-v07-c) |
203
- | `<think>` タグが漏れる | `output_filters: [strip_thinking]` を付ける | [§3](./docs/troubleshooting.md#3-ollama-初心者--サイレント失敗-5-症状-v07-c) |
204
- | Claude Code でツール呼び出しがおかしい | tool-call 修復が効いてない | [§4](./docs/troubleshooting.md#4-claude-code-連携で踏みやすい罠-v162-追加) |
201
+ | 401 エラー | API キー未設定 / `.env` に `export` 忘れ | [§1](./docs/guides/troubleshooting.md#1-起動設定で踏みやすい-5-つの罠-v162-追加) |
202
+ | 返信が空 / 意味不明 | Ollama の `num_ctx` が 2048 に切り詰め | [§3](./docs/guides/troubleshooting.md#3-ollama-初心者--サイレント失敗-5-症状-v07-c) |
203
+ | `<think>` タグが漏れる | `output_filters: [strip_thinking]` を付ける | [§3](./docs/guides/troubleshooting.md#3-ollama-初心者--サイレント失敗-5-症状-v07-c) |
204
+ | Claude Code でツール呼び出しがおかしい | tool-call 修復が効いてない | [§4](./docs/guides/troubleshooting.md#4-claude-code-連携で踏みやすい罠-v162-追加) |
205
205
 
206
206
  `http://localhost:8088/dashboard` を開いておくと、ほとんどの問題が見て 10 秒でわかります。
207
207
 
@@ -227,7 +227,7 @@ CodeRouter は backend ルーター層として独立して動きます。`OPENA
227
227
 
228
228
  ## Security
229
229
 
230
- シークレットは環境変数に置きます。[`docs/security.md`](./docs/security.md) に完全な方針と報告手順があります。
230
+ シークレットは環境変数に置きます。[`docs/security.md`](./docs/guides/security.md) に完全な方針と報告手順があります。
231
231
 
232
232
  ## License
233
233
 
@@ -61,7 +61,7 @@ def _build_parser() -> argparse.ArgumentParser:
61
61
  "binding the server. Repeat to layer multiple files. By "
62
62
  "default, file values do NOT override variables already in "
63
63
  "the environment (the shell `export` wins). See "
64
- "docs/troubleshooting.md §5 for 1Password / direnv / sops "
64
+ "docs/guides/troubleshooting.md §5 for 1Password / direnv / sops "
65
65
  "integration recipes."
66
66
  ),
67
67
  )
@@ -116,7 +116,7 @@ def _build_parser() -> argparse.ArgumentParser:
116
116
  "POSIX file mode (0600 expected), .gitignore coverage, "
117
117
  "and git-tracking state. Bare `--check-env` (no PATH) "
118
118
  "looks for `./.env` then `~/.coderouter/.env`. "
119
- "See docs/troubleshooting.md §5 for the threat model."
119
+ "See docs/guides/troubleshooting.md §5 for the threat model."
120
120
  ),
121
121
  )
122
122
  doctor.add_argument(
@@ -109,7 +109,7 @@ class RegistryCapabilities(BaseModel):
109
109
  "harness. ``degraded`` = the model over-eagerly invokes "
110
110
  "tools/skills when given Claude Code's system prompt — e.g. "
111
111
  "Llama-3.3-70B treating small talk like ``こんにちは`` as "
112
- "``Skill(hello)`` invocations (see docs/troubleshooting.md "
112
+ "``Skill(hello)`` invocations (see docs/guides/troubleshooting.md "
113
113
  "§4-1 for the symptom log). ``ok`` = explicitly verified "
114
114
  "clean. ``None`` = no opinion (treated as ``ok`` at the "
115
115
  "startup check)."
@@ -35,7 +35,7 @@
35
35
  # Claude Code's agentic-coding harness;
36
36
  # "degraded" triggers a startup WARN when
37
37
  # the provider is on a `claude-code-*`
38
- # chain. See docs/troubleshooting.md §4-1.
38
+ # chain. See docs/guides/troubleshooting.md §4-1.
39
39
  #
40
40
  # First-match semantics: rules within a file are evaluated top-to-bottom
41
41
  # per flag; the first rule whose glob matches AND declares that flag
@@ -153,7 +153,7 @@ rules:
153
153
  # Llama-3.3-70B (verified 2026-04-24 against NVIDIA NIM) rewrites
154
154
  # ``こんにちは`` into ``Skill(hello)`` invocations and fabricates
155
155
  # ``AskUserQuestion("What is your name?")`` elicitations — see
156
- # docs/articles/note-nvidia-nim.md §6-2 + docs/troubleshooting.md §4-1.
156
+ # docs/articles/note/note-nvidia-nim.md §6-2 + docs/guides/troubleshooting.md §4-1.
157
157
  #
158
158
  # Glob coverage: NIM uses ``meta/llama-3.3-70b-instruct``, OpenRouter
159
159
  # uses ``meta-llama/llama-3.3-70b-instruct``, some local servers use
@@ -1,13 +1,13 @@
1
1
  """Launcher routes — ``GET /launcher`` + ``/api/launcher/*``.
2
2
 
3
- llama.cpp / vllm プロセス管理 UI。
3
+ llama.cpp / vllm / mlx プロセス管理 UI。
4
4
 
5
5
  設計方針:
6
6
  - ダッシュボードと同じ "1ファイル完結" スタイル (Tailwind CDN + inline JS)
7
7
  - プロセスレジストリは app.state.launcher に持たせる (再起動で消えるが意図通り)
8
8
  - option_profiles は providers.yaml の launcher: セクションで管理 → コード変更不要で拡張可
9
9
  - 複数プロセスの同時起動に対応 (UUID ベースの ID 管理)
10
- - llama.cpp / vllm どちらも同じ key-value args スキーマで統一
10
+ - llama.cpp / vllm / mlx いずれも同じ key-value args スキーマで統一
11
11
 
12
12
  エンドポイント:
13
13
  GET /launcher → HTML UI
@@ -62,7 +62,7 @@ class ManagedProcess:
62
62
 
63
63
  id: str
64
64
  name: str
65
- backend: str # "llama.cpp" | "vllm"
65
+ backend: str # "llama.cpp" | "vllm" | "mlx"
66
66
  model_path: str
67
67
  port: int
68
68
  options: dict[str, Any]
@@ -150,6 +150,7 @@ def _scan_models(model_dirs: list[str]) -> list[dict[str, Any]]:
150
150
  _BACKEND_DEFAULTS: dict[str, str] = {
151
151
  "llama.cpp": "llama-server",
152
152
  "vllm": "python",
153
+ "mlx": "python", # mlx_lm.server (Apple Silicon 向け)
153
154
  }
154
155
 
155
156
 
@@ -312,8 +313,17 @@ def _build_cmd(
312
313
  "--model", model_path,
313
314
  "--port", str(port),
314
315
  ]
316
+ elif backend == "mlx":
317
+ cmd = [
318
+ exe, "-m", "mlx_lm.server",
319
+ "--model", model_path,
320
+ "--port", str(port),
321
+ ]
315
322
  else:
316
- raise ValueError(f"Unknown backend: {backend!r}. Expected 'llama.cpp' or 'vllm'.")
323
+ raise ValueError(
324
+ f"Unknown backend: {backend!r}. "
325
+ "Expected 'llama.cpp', 'vllm' or 'mlx'."
326
+ )
317
327
 
318
328
  for flag, val in options.items():
319
329
  if isinstance(val, bool):
@@ -720,6 +730,7 @@ _LAUNCHER_HTML = r"""<!doctype html>
720
730
  <select id="f-backend" onchange="onBackendChange()">
721
731
  <option value="llama.cpp">llama.cpp</option>
722
732
  <option value="vllm">vllm</option>
733
+ <option value="mlx">mlx</option>
723
734
  </select>
724
735
  <div id="binary-hint" class="mt-1 text-xs text-slate-500 min-h-[1.2rem]"></div>
725
736
  </div>
@@ -961,7 +972,7 @@ _LAUNCHER_HTML = r"""<!doctype html>
961
972
  // Enable/disable launch button based on binary availability
962
973
  if (!info.found) {
963
974
  btn.disabled = true;
964
- showLaunchErr(`⚠ "${esc(info.resolved)}" が見つかりません。llama.cpp をインストールするか、providers.yaml の launcher.backends.llama\\.cpp.binary にフルパスを設定してください。`);
975
+ showLaunchErr(`⚠ "${esc(info.resolved)}" が見つかりません。選択中のバックエンド (${esc(backend)}) をインストールするか、providers.yaml の launcher.backends.${esc(backend)}.binary にフルパスを設定してください。`);
965
976
  } else {
966
977
  btn.disabled = false;
967
978
  // Clear error only if it was a binary-not-found error
@@ -779,7 +779,7 @@ def log_output_filter_applied(
779
779
  # v1.7-B: chain-claude-code-suitability-degraded log shape
780
780
  #
781
781
  # Motivation (plan.md §11.B.4 #2):
782
- # v1.6.2 documented in docs/troubleshooting.md §4-1 that putting
782
+ # v1.6.2 documented in docs/guides/troubleshooting.md §4-1 that putting
783
783
  # Llama-3.3-70B at the head of a Claude-Code-facing chain causes
784
784
  # over-eager tool invocation (small talk like ``こんにちは`` getting
785
785
  # rewritten to ``Skill(hello)`` calls). Docs alone require the operator
@@ -805,7 +805,7 @@ def log_output_filter_applied(
805
805
  _DEFAULT_CLAUDE_CODE_SUITABILITY_HINT: str = (
806
806
  "move the degraded provider(s) to the tail of the chain or replace "
807
807
  "with an agentic-coding-tuned model (e.g. qwen3-coder-480b-a35b-instruct); "
808
- "see docs/troubleshooting.md §4-1"
808
+ "see docs/guides/troubleshooting.md §4-1"
809
809
  )
810
810
 
811
811
 
@@ -312,7 +312,7 @@ def anthropic_request_has_cache_control(request: AnthropicRequest) -> bool:
312
312
  # v1.7-B: claude_code_suitability startup check
313
313
  #
314
314
  # Motivation (plan.md §11.B.4 #2):
315
- # v1.6.2 documented in docs/troubleshooting.md §4-1 the "Llama-3.3-70B
315
+ # v1.6.2 documented in docs/guides/troubleshooting.md §4-1 the "Llama-3.3-70B
316
316
  # over-eagerly invokes Skill() for small talk under Claude Code"
317
317
  # symptom. v1.7-B promotes that hint from prose-only to a structured
318
318
  # automatic startup WARN: at app startup we scan every profile whose
@@ -0,0 +1,94 @@
1
+ # CodeRouter ドキュメント / Documentation
2
+
3
+ CodeRouter の公開ドキュメント索引です。「やりたいこと」から読むべきページを引けるよう整理しています。
4
+ Index of CodeRouter's public documentation — find the right page by what you want to do.
5
+
6
+ > 開発者向けの内部メモ・記事原稿は `inside/` と `articles/` にあります(ローカル専用 / gitignored、公開リポジトリには含まれません)。
7
+ > Developer-internal notes and article drafts live in `inside/` and `articles/` (local-only, not shipped in the public repo).
8
+
9
+ ---
10
+
11
+ ## こういう時はこれを読む / Quick start by goal
12
+
13
+ | やりたいこと / Goal | 読むもの / Read |
14
+ |---|---|
15
+ | 今すぐ動かしたい / Get running now | [start/quickstart](start/quickstart.md) |
16
+ | 自分に必要か知りたい / Is it for me? | [start/when-do-i-need-coderouter](start/when-do-i-need-coderouter.md) |
17
+ | 無料で運用したい / Run for free | [guides/free-tier-guide](guides/free-tier-guide.md) |
18
+ | 機能を一通り知りたい / Learn the features | [guides/usage-guide](guides/usage-guide.md) |
19
+ | エラーで詰まった / Something broke | [guides/troubleshooting](guides/troubleshooting.md) |
20
+ | ローカル LLM を起動したい / Launch a local LLM | [backends/launcher-quickstart](backends/launcher-quickstart.md) |
21
+ | APIキー・機密の扱い / Secrets & security | [guides/security](guides/security.md) |
22
+ | 仕組みを理解したい / Understand the design | [concepts/architecture](concepts/architecture.md) |
23
+
24
+ ---
25
+
26
+ ## 構成 / Layout
27
+
28
+ ```
29
+ docs/
30
+ ├── start/ はじめに / Getting started
31
+ ├── guides/ 使い方ガイド / How-to guides
32
+ ├── backends/ ローカルLLMバックエンド / Local LLM backends
33
+ ├── concepts/ 設計・内部動作 / Architecture & internals
34
+ ├── designs/ 設計ドキュメント / Design docs
35
+ ├── retrospectives/ リリース振り返り / Release retrospectives
36
+ ├── evidence/ 検証ログ / Verification logs
37
+ ├── openrouter-roster/ OpenRouter モデル一覧 / OpenRouter model roster
38
+ └── assets/ 画像など / Images
39
+ ```
40
+
41
+ 各ドキュメントは日本語版 (`.md`) と英語版 (`.en.md`) が揃っているものがあります。
42
+ Many documents have a Japanese version (`.md`) and an English version (`.en.md`).
43
+
44
+ ---
45
+
46
+ ## 1. はじめに / Getting started — `start/`
47
+
48
+ 初めて CodeRouter に触れる人向け。 / For first-time users.
49
+
50
+ - **quickstart** — 最短セットアップで動かす / Get running in one sitting · [日本語](start/quickstart.md) · [English](start/quickstart.en.md)
51
+ - **when-do-i-need-coderouter** — 自分に必要かを判断する / Decide whether you need it · [日本語](start/when-do-i-need-coderouter.md) · [English](start/when-do-i-need-coderouter.en.md)
52
+
53
+ ## 2. 使い方ガイド / How-to guides — `guides/`
54
+
55
+ 日常的に使いこなすためのガイド。 / Day-to-day usage.
56
+
57
+ - **usage-guide** — 機能を一通り使いこなす / Full feature guide · [日本語](guides/usage-guide.md) · [English](guides/usage-guide.en.md)
58
+ - **free-tier-guide** — NVIDIA NIM × OpenRouter Free でコストゼロ運用 / Zero-cost operation · [日本語](guides/free-tier-guide.md) · [English](guides/free-tier-guide.en.md)
59
+ - **troubleshooting** — つまずいたときの解決集 / Fixing problems · [日本語](guides/troubleshooting.md) · [English](guides/troubleshooting.en.md)
60
+ - **security** — シークレット管理とセキュリティ方針 / Secrets handling & security posture · [日本語](guides/security.md) · [English](guides/security.en.md)
61
+
62
+ ## 3. ローカル LLM バックエンド / Local LLM backends — `backends/`
63
+
64
+ ローカル推論バックエンドの導入・起動・接続。 / Installing, launching, and connecting local inference backends.
65
+
66
+ - **launcher-quickstart** — バックエンド導入から起動までの最短手順 / Install a backend and launch · [日本語](backends/launcher-quickstart.md)
67
+ - **launcher** — ブラウザから使う Web 版ランチャー / Web launcher · [日本語](backends/launcher.md)
68
+ - **launcher-gui** — デスクトップ GUI ランチャー / Desktop GUI launcher · [日本語](backends/launcher-gui.md)
69
+ - **llamacpp-direct** — llama.cpp に直結する / Connect llama.cpp directly · [日本語](backends/llamacpp-direct.md) · [English](backends/llamacpp-direct.en.md)
70
+ - **lmstudio-direct** — LM Studio に直結する / Connect LM Studio directly · [日本語](backends/lmstudio-direct.md) · [English](backends/lmstudio-direct.en.md)
71
+ - **hf-ollama-models** — HuggingFace 配布モデルを Ollama で使う / Use HF models via Ollama · [日本語](backends/hf-ollama-models.md)
72
+ - **gguf_dl** — GGUF モデルのダウンロードツール / GGUF download helper · [日本語](backends/gguf_dl.md)
73
+ - **verify-ollama-0.23.1** — Ollama v0.23.1 実機検証チェックリスト / Ollama verification checklist · [日本語](backends/verify-ollama-0.23.1.md)
74
+
75
+ ## 4. 設計・内部動作 / Architecture & internals — `concepts/`
76
+
77
+ CodeRouter の仕組みと信頼性機構。 / How CodeRouter works and its reliability mechanisms.
78
+
79
+ - **architecture** — アーキテクチャ全体像 / Architecture overview · [日本語](concepts/architecture.md)
80
+ - **context-budget** — コンテキスト予算管理 (v2.0.0) / Context budget management · [日本語](concepts/context-budget.md)
81
+ - **drift-detection** — ドリフト検出 (v2.0-G) / Drift detection · [日本語](concepts/drift-detection.md)
82
+ - **partial-stitch** — ストリーム途中の部分ステッチ (v2.0-H) / Mid-stream partial stitching · [日本語](concepts/partial-stitch.md)
83
+ - **continuous-probing** — 継続プロービング (v2.0-I) / Continuous probing · [日本語](concepts/continuous-probing.md)
84
+
85
+ ## 5. 設計資料・記録 / Design docs & records
86
+
87
+ - **designs/** — 機能の設計ドキュメント / Feature design docs ([v1.6 auto-router](designs/v1.6-auto-router.md) ほか)
88
+ - **retrospectives/** — リリース振り返り / Release retrospectives ([v0.4](retrospectives/v0.4.md) 〜 [v1.0](retrospectives/v1.0.md))
89
+ - **evidence/** — 実機検証ログ / Verification run logs
90
+ - **openrouter-roster/** — OpenRouter 利用可能モデル一覧 / OpenRouter model roster — [README](openrouter-roster/README.md)
91
+
92
+ ---
93
+
94
+ 最終更新 / Last updated: 2026-05-22
@@ -256,5 +256,5 @@ ollama cp hf.co/unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:Q4_K_M qwen3-coder:30b
256
256
  - bartowski (品質重視の量子化版): <https://huggingface.co/bartowski>
257
257
  - Qwen3-Coder (Alibaba 公式): <https://huggingface.co/collections/Qwen/qwen3-coder>
258
258
  - Gemma 4 (Google 公式): <https://huggingface.co/collections/google/gemma-4>
259
- - CodeRouter doctor 詳細: [`docs/troubleshooting.md`](./troubleshooting.md)
260
- - providers.yaml 全体構造: [`examples/providers.yaml`](../examples/providers.yaml)
259
+ - CodeRouter doctor 詳細: [`docs/troubleshooting.md`](../guides/troubleshooting.md)
260
+ - providers.yaml 全体構造: [`examples/providers.yaml`](../../examples/providers.yaml)
@@ -197,4 +197,4 @@ launcher:
197
197
  - [Launcher クイックスタート](./launcher-quickstart.md) — llama.cpp / vLLM 導入からランチャー起動までの通し手順
198
198
  - [Launcher ガイド(Web版)](./launcher.md) — `/launcher` ページ版
199
199
  - [llama.cpp 直接接続ガイド](./llamacpp-direct.md)
200
- - [利用ガイド](./usage-guide.md)
200
+ - [利用ガイド](../guides/usage-guide.md)
@@ -183,5 +183,5 @@ ANTHROPIC_BASE_URL=http://localhost:8088 ANTHROPIC_AUTH_TOKEN=dummy claude
183
183
 
184
184
  - [Launcher ガイド(デスクトップGUI版)](./launcher-gui.md)
185
185
  - [Launcher ガイド(Web版)](./launcher.md)
186
- - [CodeRouter クイックスタート](./quickstart.md)
186
+ - [CodeRouter クイックスタート](../start/quickstart.md)
187
187
  - [llama.cpp 直接接続ガイド](./llamacpp-direct.md)
@@ -283,6 +283,6 @@ CodeRouter を再起動すると UI に反映されます。
283
283
 
284
284
  - [Launcher クイックスタート](./launcher-quickstart.md) — llama.cpp / vLLM 導入からランチャー起動までの通し手順
285
285
  - [Launcher ガイド(デスクトップGUI版)](./launcher-gui.md) — ブラウザ不要の tkinter アプリ版
286
- - [アーキテクチャ詳細 — Launcher セクション](./architecture.md#launcher--llamacpp--vllm-プロセス管理-v250)
287
- - [利用ガイド](./usage-guide.md)
286
+ - [アーキテクチャ詳細 — Launcher セクション](../concepts/architecture.md#launcher--llamacpp--vllm-プロセス管理-v250)
287
+ - [利用ガイド](../guides/usage-guide.md)
288
288
  - [llama.cpp 直接接続ガイド](./llamacpp-direct.md)
@@ -213,10 +213,10 @@ In the CodeRouter logs you should see `dropped=["reasoning", "reasoning_content"
213
213
 
214
214
  ## Related docs
215
215
 
216
- - [`troubleshooting.md` §4-2-A](./troubleshooting.md#4-2-a-qwen36) — known Qwen3.6 + Ollama pitfalls.
216
+ - [`troubleshooting.md` §4-2-A](../guides/troubleshooting.md#4-2-a-qwen36) — known Qwen3.6 + Ollama pitfalls.
217
217
  - [`hf-ollama-models.md`](./hf-ollama-models.md) — pulling HF models through Ollama.
218
- - [`examples/providers.yaml`](../examples/providers.yaml) — bundled `llamacpp-qwen3-6-35b-a3b` provider example.
219
- - The session that produced this guide: [v1.8.1 note](./articles/v1-saga/note-1-v1-8-1-reality-check.md) → [v1.8.2 note](./articles/v1-saga/note-2-v1-8-2-doctor-self-diagnosis.md) → [v1.8.3 note](./articles/v1-saga/note-3-v1-8-3-llamacpp-rescue.md).
218
+ - [`examples/providers.yaml`](../../examples/providers.yaml) — bundled `llamacpp-qwen3-6-35b-a3b` provider example.
219
+ - The session that produced this guide: [v1.8.1 note](../articles/v1-saga/note-1-v1-8-1-reality-check.md) → [v1.8.2 note](../articles/v1-saga/note-2-v1-8-2-doctor-self-diagnosis.md) → [v1.8.3 note](../articles/v1-saga/note-3-v1-8-3-llamacpp-rescue.md).
220
220
 
221
221
  ---
222
222
 
@@ -61,7 +61,7 @@ ls -lah ~/models/qwen3.6-35b-a3b-unsloth/
61
61
  # → Qwen3.6-35B-A3B-UD-Q4_K_M.gguf (~22GB) と tokenizer 関連ファイル
62
62
  ```
63
63
 
64
- > **旧 `huggingface-cli` からの移行**: コマンド名が `hf` に変わり、サブコマンド体系も更新されました (`huggingface-cli download` → `hf download`、`huggingface-cli login` → `hf auth login`)。本リポジトリの補助スクリプト [`gguf_dl.py`](../gguf_dl.py) を使えば、HF の URL を貼るだけで `hf download` 相当の処理を実行できます。
64
+ > **旧 `huggingface-cli` からの移行**: コマンド名が `hf` に変わり、サブコマンド体系も更新されました (`huggingface-cli download` → `hf download`、`huggingface-cli login` → `hf auth login`)。本リポジトリの補助スクリプト [`gguf_dl.py`](../../gguf_dl.py) を使えば、HF の URL を貼るだけで `hf download` 相当の処理を実行できます。
65
65
 
66
66
  > **`UD-Q4_K_M` の意味**: Unsloth Dynamic Quantization。同 GGUF サイズで通常の Q4_K_M より精度が高い variant。コミュニティ報告でも de facto 標準として使われています。
67
67
  >
@@ -270,10 +270,10 @@ provider-ok provider=llamacpp-qwen3-6-35b-a3b
270
270
 
271
271
  ## 関連ドキュメント
272
272
 
273
- - [troubleshooting.md §4-2-A](./troubleshooting.md#4-2-a-qwen36) — Qwen3.6 + Ollama の既知問題
273
+ - [troubleshooting.md §4-2-A](../guides/troubleshooting.md#4-2-a-qwen36) — Qwen3.6 + Ollama の既知問題
274
274
  - [hf-ollama-models.md](./hf-ollama-models.md) — Ollama 経由 HF モデル取得
275
- - [examples/providers.yaml](../examples/providers.yaml) — `llamacpp-qwen3-6-35b-a3b` provider 例同梱
276
- - 実機検証の経緯: [v1.8.1 note](./articles/v1-saga/note-1-v1-8-1-reality-check.md) → [v1.8.2 note](./articles/v1-saga/note-2-v1-8-2-doctor-self-diagnosis.md) → [v1.8.3 note](./articles/v1-saga/note-3-v1-8-3-llamacpp-rescue.md)
275
+ - [examples/providers.yaml](../../examples/providers.yaml) — `llamacpp-qwen3-6-35b-a3b` provider 例同梱
276
+ - 実機検証の経緯: [v1.8.1 note](../articles/v1-saga/note-1-v1-8-1-reality-check.md) → [v1.8.2 note](../articles/v1-saga/note-2-v1-8-2-doctor-self-diagnosis.md) → [v1.8.3 note](../articles/v1-saga/note-3-v1-8-3-llamacpp-rescue.md)
277
277
 
278
278
  ---
279
279
 
@@ -381,10 +381,10 @@ No `capability-degraded` log lines (Anthropic-native shape has nothing to strip)
381
381
  ## Related docs
382
382
 
383
383
  - [llamacpp-direct.en.md](./llamacpp-direct.en.md) — llama.cpp direct path (CLI build + Unsloth GGUF), Qwen3.6 35B-A3B verified.
384
- - [troubleshooting.md §4-2](./troubleshooting.md) — known issues across Ollama / llama.cpp / LM Studio.
384
+ - [troubleshooting.md §4-2](../guides/troubleshooting.md) — known issues across Ollama / llama.cpp / LM Studio.
385
385
  - [hf-ollama-models.md](./hf-ollama-models.md) — pulling HF models through Ollama.
386
- - [examples/providers.yaml](../examples/providers.yaml) — bundled `lmstudio-*` provider stanzas + `test-lmstudio-openai` / `test-lmstudio-anthropic` profiles.
387
- - Real-machine narrative: [v1.8.4 note (JP)](./articles/v1-saga/note-4-v1-8-4-lmstudio-revival.md) — the day a "framework wait" verdict expired in 24 hours.
386
+ - [examples/providers.yaml](../../examples/providers.yaml) — bundled `lmstudio-*` provider stanzas + `test-lmstudio-openai` / `test-lmstudio-anthropic` profiles.
387
+ - Real-machine narrative: [v1.8.4 note (JP)](../articles/v1-saga/note-4-v1-8-4-lmstudio-revival.md) — the day a "framework wait" verdict expired in 24 hours.
388
388
 
389
389
  ---
390
390