lobes-cli 0.90.2__tar.gz → 0.91.0__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 (1193) hide show
  1. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/CHANGELOG.md +28 -0
  2. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/CLAUDE.md +3 -1
  3. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/PKG-INFO +1 -1
  4. lobes_cli-0.91.0/docs/hebrew-realtime.md +325 -0
  5. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin/base.toml +6 -0
  6. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin/orin.toml +6 -0
  7. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin/spark.toml +6 -0
  8. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin/thor.toml +6 -0
  9. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.whisper-stt +9 -0
  10. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/docker-compose.audio-he.yml +35 -0
  11. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/env.audio-he.example +77 -0
  12. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/env.example +5 -0
  13. lobes_cli-0.91.0/lobes/templates/fleet/listen_server_whisper.py +1503 -0
  14. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/pyproject.toml +1 -1
  15. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/base.env +2 -0
  16. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/orin.env +2 -0
  17. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/overlays/audio-he-defaults.env +10 -0
  18. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-associate__base.env +2 -0
  19. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-associate__orin.env +2 -0
  20. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-associate__spark.env +2 -0
  21. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-associate__thor.env +2 -0
  22. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-cortex__base.env +2 -0
  23. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-cortex__orin.env +2 -0
  24. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-cortex__spark.env +2 -0
  25. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-cortex__thor.env +2 -0
  26. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-decider__base.env +2 -0
  27. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-decider__orin.env +2 -0
  28. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-decider__spark.env +2 -0
  29. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-decider__thor.env +2 -0
  30. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-embed__base.env +2 -0
  31. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-embed__orin.env +2 -0
  32. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-embed__spark.env +2 -0
  33. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-embed__thor.env +2 -0
  34. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-lobe__base.env +2 -0
  35. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-lobe__orin.env +2 -0
  36. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-lobe__spark.env +2 -0
  37. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-lobe__thor.env +2 -0
  38. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-small__base.env +2 -0
  39. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-small__orin.env +2 -0
  40. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-small__spark.env +2 -0
  41. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/orin-small__thor.env +2 -0
  42. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/spark-innereye__base.env +2 -0
  43. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/spark-innereye__orin.env +2 -0
  44. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/spark-innereye__spark.env +2 -0
  45. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/spark-innereye__thor.env +2 -0
  46. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/spark-lobe__base.env +2 -0
  47. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/spark-lobe__orin.env +2 -0
  48. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/spark-lobe__spark.env +2 -0
  49. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/spark-lobe__thor.env +2 -0
  50. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-lobe__base.env +2 -0
  51. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-lobe__orin.env +2 -0
  52. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-lobe__spark.env +2 -0
  53. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-lobe__thor.env +2 -0
  54. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-muse__base.env +2 -0
  55. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-muse__orin.env +2 -0
  56. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-muse__spark.env +2 -0
  57. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-muse__thor.env +2 -0
  58. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-worker__base.env +2 -0
  59. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-worker__orin.env +2 -0
  60. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-worker__spark.env +2 -0
  61. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/thor-worker__thor.env +2 -0
  62. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/spark.env +2 -0
  63. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/thor.env +2 -0
  64. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_audio_he_stt_compose.py +63 -0
  65. lobes_cli-0.91.0/tests/test_listen_server_whisper.py +1337 -0
  66. lobes_cli-0.91.0/tests/test_pooling_gear_fingerprint.py +58 -0
  67. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_whisper_stt_dockerfile.py +23 -0
  68. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/uv.lock +1 -1
  69. lobes_cli-0.90.2/docs/hebrew-realtime.md +0 -161
  70. lobes_cli-0.90.2/lobes/templates/fleet/listen_server_whisper.py +0 -724
  71. lobes_cli-0.90.2/tests/test_listen_server_whisper.py +0 -544
  72. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.agex/data/pr/323/await.json +0 -0
  73. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.agex/data/pr/events.jsonl +0 -0
  74. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/ask-colleague/SKILL.md +0 -0
  75. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
  76. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/ask-colleague/prompts/review.md +0 -0
  77. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/ask-colleague/prompts/write.md +0 -0
  78. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
  79. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  80. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  81. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/challenge/SKILL.md +0 -0
  82. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/cicd/SKILL.md +0 -0
  83. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  84. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  85. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  86. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  87. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  88. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/communicate/SKILL.md +0 -0
  89. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  90. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  91. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  92. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  93. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  94. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/deviate/SKILL.md +0 -0
  95. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  96. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  97. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/lobes-deploy/SKILL.md +0 -0
  98. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/lobes-deploy/scripts/lobes-compose.sh +0 -0
  99. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/model-runner/SKILL.md +0 -0
  100. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/model-runner/scripts/model-runner.sh +0 -0
  101. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/recall/SKILL.md +0 -0
  102. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/recall/scripts/recall.sh +0 -0
  103. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/remember/SKILL.md +0 -0
  104. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/remember/scripts/remember.sh +0 -0
  105. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/run-tests/SKILL.md +0 -0
  106. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
  107. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/scope/SKILL.md +0 -0
  108. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/sonarclaude/SKILL.md +0 -0
  109. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  110. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  111. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  112. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/summarize-delivery/SKILL.md +0 -0
  113. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/think/SKILL.md +0 -0
  114. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/think/scripts/think.sh +0 -0
  115. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/validate-delivery/SKILL.md +0 -0
  116. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/version-bump/SKILL.md +0 -0
  117. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills/version-bump/scripts/bump.py +0 -0
  118. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.claude/skills.local.yaml.example +0 -0
  119. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/current +0 -0
  120. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/current_plan +0 -0
  121. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/capacity-relative-pool-routing.json +0 -0
  122. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/cortex-replica-pool-199.json +0 -0
  123. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/deployment-lock-per-box.json +0 -0
  124. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/dspark-speculation-on-the-spark-cortex.json +0 -0
  125. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
  126. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/flash-next-worker-on-thor.json +0 -0
  127. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/hand-lobe-lfm2-5-1-2b.json +0 -0
  128. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/hebrew-realtime.json +0 -0
  129. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/innereye-lobes-hosts-comfyui.json +0 -0
  130. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/lane-safety-and-quality-304-307-308-309.json +0 -0
  131. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/lightning-on-orin.json +0 -0
  132. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
  133. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/mesh-boot-window-and-capabilities-advert.json +0 -0
  134. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/mesh-brain-join.json +0 -0
  135. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/mesh-pool-load-sharing.json +0 -0
  136. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/nemotron-lightning-worker.json +0 -0
  137. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/orin-associate-at-1m.json +0 -0
  138. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/orin-decision-models.json +0 -0
  139. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/orin-embedding-specialist.json +0 -0
  140. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/qwen3-8-gguf-llamacpp.json +0 -0
  141. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/realtime-voice-to-voice-astro-test-site-151.json +0 -0
  142. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/reranker-calibration-227.json +0 -0
  143. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/thor-cortex-speculation.json +0 -0
  144. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
  145. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/unsloth-qat-senses-first-class-orin-variation.json +0 -0
  146. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/deliveries/vllm-0-31-0-fleet.json +0 -0
  147. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/capacity-relative-pool-routing.json +0 -0
  148. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/chatterbox-on-thor-sm-110.json +0 -0
  149. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/compose-chain-unification-init-repair-doctor-stale.json +0 -0
  150. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/cortex-replica-pool-199.json +0 -0
  151. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/deployment-lock-per-box.json +0 -0
  152. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/dspark-speculation-on-the-spark-cortex.json +0 -0
  153. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
  154. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/flash-next-on-vllm.json +0 -0
  155. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/flash-next-worker-on-thor.json +0 -0
  156. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/hand-lobe-lfm2-5-1-2b.json +0 -0
  157. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/hebrew-realtime.json +0 -0
  158. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/innereye-lobes-hosts-comfyui.json +0 -0
  159. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lane-safety-and-quality-304-307-308-309.json +0 -0
  160. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lightning-on-orin.json +0 -0
  161. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lightning-on-thor.json +0 -0
  162. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-adds-a-third-middle-model-tier-and-pressure.json +0 -0
  163. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
  164. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-exposes-the-full-colleague-runtime-stack-as.json +0 -0
  165. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-fits-the-machine-it-lands-on-one-command-det.json +0 -0
  166. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-gateway-relays-sse-streams-frame-by-frame-th.json +0 -0
  167. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-never-advertises-a-capability-it-cannot-serv.json +0 -0
  168. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.json +0 -0
  169. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-preserves-qwen-thinking-traces-across-multi.json +0 -0
  170. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-serves-strict-grammar-constrained-tool-calls.json +0 -0
  171. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-serves-the-brain-shape-you-choose-machine-as.json +0 -0
  172. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-serves-the-mesh-brain-end-state-one-lobe-per.json +0 -0
  173. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.json +0 -0
  174. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.json +0 -0
  175. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-ships-a-per-lobe-benchmark-suite-speed-paral.json +0 -0
  176. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-tells-clients-the-truth-about-a-fleet-a-cons.json +0 -0
  177. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/lobes-unifies-its-generate-lane-on-one-vllm-nightl.json +0 -0
  178. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/mesh-boot-window-and-capabilities-advert.json +0 -0
  179. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/mesh-brain-join.json +0 -0
  180. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/mesh-pool-load-sharing.json +0 -0
  181. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/model-gear-now-serves-an-embedding-gear-qwen3-embe-2.json +0 -0
  182. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/model-gear-now-serves-an-embedding-gear-qwen3-embe.json +0 -0
  183. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/model-gear-owns-the-audio-i-o-surface-end-to-end-m.json +0 -0
  184. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/nemotron-lightning-worker.json +0 -0
  185. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/orin-associate-at-1m.json +0 -0
  186. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/orin-decision-models.json +0 -0
  187. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/orin-embedding-specialist.json +0 -0
  188. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/peer-only-replica-pools.json +0 -0
  189. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/proxy-lobes-pairwise-auth.json +0 -0
  190. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/public-lobes-and-hebrew-site.json +0 -0
  191. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/quick-wins-finish-the-rename.json +0 -0
  192. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/qwen3-8-27b-gguf-on-the-spark.json +0 -0
  193. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/qwen3-8-cortex-upgrade.json +0 -0
  194. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/qwen3-8-flash-next-gguf-candidate.json +0 -0
  195. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/qwen3-8-flash-next-on-thor.json +0 -0
  196. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/qwen3-8-gguf-llamacpp.json +0 -0
  197. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/realtime-voice-to-voice-astro-test-site-151.json +0 -0
  198. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/realtime-ws-server-vad-149.json +0 -0
  199. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/reranker-calibration-227.json +0 -0
  200. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/stt-readiness-truth-155.json +0 -0
  201. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/targeted-ops-and-honest-streams.json +0 -0
  202. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/the-gemma-4-12b-gear-gets-speculative-decoding-lob.json +0 -0
  203. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/thor-cortex-speculation.json +0 -0
  204. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
  205. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/thor-worker-lobe-qwen3-6-35b-a3b.json +0 -0
  206. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/under-pressure-lobes-tells-you-the-cortex-model-is.json +0 -0
  207. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/unsloth-qat-senses-first-class-orin-variation.json +0 -0
  208. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/frames/vllm-0-31-0-fleet.json +0 -0
  209. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/capacity-relative-pool-routing.json +0 -0
  210. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/compose-chain-unification-init-repair-doctor-stale.json +0 -0
  211. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/cortex-replica-pool-199.json +0 -0
  212. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/deployment-lock-per-box.json +0 -0
  213. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/dspark-speculation-on-the-spark-cortex.json +0 -0
  214. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
  215. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/flash-next-worker-on-thor.json +0 -0
  216. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/hand-lobe-lfm2-5-1-2b.json +0 -0
  217. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/hebrew-realtime.json +0 -0
  218. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/innereye-lobes-hosts-comfyui.json +0 -0
  219. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lane-safety-and-quality-304-307-308-309.json +0 -0
  220. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lightning-on-orin.json +0 -0
  221. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-adds-a-third-middle-model-tier-and-pressure.json +0 -0
  222. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
  223. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-exposes-the-full-colleague-runtime-stack-as.json +0 -0
  224. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-fits-the-machine-it-lands-on-one-command-det.json +0 -0
  225. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-gateway-relays-sse-streams-frame-by-frame-th.json +0 -0
  226. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-never-advertises-a-capability-it-cannot-serv.json +0 -0
  227. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.json +0 -0
  228. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-preserves-qwen-thinking-traces-across-multi.json +0 -0
  229. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-serves-strict-grammar-constrained-tool-calls.json +0 -0
  230. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-serves-the-brain-shape-you-choose-machine-as.json +0 -0
  231. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-serves-the-mesh-brain-end-state-one-lobe-per.json +0 -0
  232. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.json +0 -0
  233. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.json +0 -0
  234. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-ships-a-per-lobe-benchmark-suite-speed-paral.json +0 -0
  235. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-tells-clients-the-truth-about-a-fleet-a-cons.json +0 -0
  236. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/lobes-unifies-its-generate-lane-on-one-vllm-nightl.json +0 -0
  237. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/mesh-boot-window-and-capabilities-advert.json +0 -0
  238. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/mesh-brain-join.json +0 -0
  239. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/mesh-pool-load-sharing.json +0 -0
  240. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/model-gear-now-serves-an-embedding-gear-qwen3-embe-2.json +0 -0
  241. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/model-gear-owns-the-audio-i-o-surface-end-to-end-m.json +0 -0
  242. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/nemotron-lightning-worker.json +0 -0
  243. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/orin-associate-at-1m.json +0 -0
  244. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/orin-decision-models.json +0 -0
  245. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/orin-embedding-specialist.json +0 -0
  246. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/peer-only-replica-pools.json +0 -0
  247. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/proxy-lobes-pairwise-auth.json +0 -0
  248. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/quick-wins-finish-the-rename.json +0 -0
  249. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/qwen3-8-cortex-upgrade.json +0 -0
  250. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/qwen3-8-flash-next-gguf-candidate.json +0 -0
  251. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/qwen3-8-gguf-llamacpp.json +0 -0
  252. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/realtime-voice-to-voice-astro-test-site-151.json +0 -0
  253. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/realtime-ws-server-vad-149.json +0 -0
  254. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/reranker-calibration-227.json +0 -0
  255. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/stt-readiness-truth-155.json +0 -0
  256. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/the-gemma-4-12b-gear-gets-speculative-decoding-lob.json +0 -0
  257. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/thor-cortex-speculation.json +0 -0
  258. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
  259. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/thor-worker-lobe-qwen3-6-35b-a3b.json +0 -0
  260. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/under-pressure-lobes-tells-you-the-cortex-model-is.json +0 -0
  261. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/unsloth-qat-senses-first-class-orin-variation.json +0 -0
  262. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.devague/plans/vllm-0-31-0-fleet.json +0 -0
  263. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.eidetic/memory/colleague__public.jsonl +0 -0
  264. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.eidetic/memory/default__public.jsonl +0 -0
  265. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.eidetic/memory/lobes__public.jsonl +0 -0
  266. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.flake8 +0 -0
  267. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.github/workflows/publish.yml +0 -0
  268. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.github/workflows/tests.yml +0 -0
  269. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.gitignore +0 -0
  270. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/.markdownlint-cli2.yaml +0 -0
  271. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/AGENTS.md +0 -0
  272. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/LICENSE +0 -0
  273. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/QWEN.md +0 -0
  274. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/README.md +0 -0
  275. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/culture.yaml +0 -0
  276. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/README.md +0 -0
  277. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/VARIATION.template.md +0 -0
  278. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/Dockerfile.decider-vllm +0 -0
  279. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/Dockerfile.embed-st +0 -0
  280. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/Dockerfile.gateway +0 -0
  281. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/VARIATION.md +0 -0
  282. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/deployment.lock.toml +0 -0
  283. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.embed.yml +0 -0
  284. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.gpu.yml +0 -0
  285. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.override.yml +0 -0
  286. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.shape.yml +0 -0
  287. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.yml +0 -0
  288. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/mg-logwrap.sh +0 -0
  289. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/qwen3_reranker.jinja +0 -0
  290. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-orin__orin-embed/qwen3_thinking_tool_parser.py +0 -0
  291. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/Dockerfile.gateway +0 -0
  292. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/Dockerfile.vllm-gemma4 +0 -0
  293. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/VARIATION.md +0 -0
  294. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/deployment.lock.toml +0 -0
  295. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/docker-compose.override.yml +0 -0
  296. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/docker-compose.shape.yml +0 -0
  297. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/docker-compose.yml +0 -0
  298. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/mg-logwrap.sh +0 -0
  299. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/qwen3_reranker.jinja +0 -0
  300. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/deployments/jetson-agx-thor__thor-worker/qwen3_thinking_tool_parser.py +0 -0
  301. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/chatterbox-tts.md +0 -0
  302. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/colleague-stack.md +0 -0
  303. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/comfyui-innereye.md +0 -0
  304. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/contracts/README.md +0 -0
  305. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/contracts/lane-safety-runtime.md +0 -0
  306. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/contracts/machine-cli-window.md +0 -0
  307. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/contracts/realtime-tool-calling.md +0 -0
  308. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/decider.md +0 -0
  309. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
  310. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
  311. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
  312. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-10-hand-lobe-lfm2-5-1-2b.md +0 -0
  313. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-20-nemotron-lightning-worker.md +0 -0
  314. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
  315. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-23-qwen3-8-gguf-llamacpp-deviation-ledger.md +0 -0
  316. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
  317. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-25-cortex-replica-pool-199.md +0 -0
  318. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-25-lightning-on-orin.md +0 -0
  319. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-25-thor-cortex-speculation.md +0 -0
  320. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-29-deployment-lock-per-box.md +0 -0
  321. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-30-peer-only-replica-pools.md +0 -0
  322. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-08-31-quick-wins-finish-the-rename.md +0 -0
  323. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
  324. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-09-11-mesh-brain-join.md +0 -0
  325. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
  326. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-09-13-orin-associate-at-1m.md +0 -0
  327. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
  328. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-09-18-hebrew-realtime.md +0 -0
  329. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-10-06-mesh-pool-load-sharing.md +0 -0
  330. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-10-07-orin-embedding-specialist.md +0 -0
  331. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-10-14-orin-decision-models.md +0 -0
  332. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
  333. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deliveries/2026-10-17-vllm-0-31-0-fleet.md +0 -0
  334. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deployment-lock.md +0 -0
  335. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/deployment-shapes.md +0 -0
  336. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/dspark-speculation.md +0 -0
  337. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/durable-logs.md +0 -0
  338. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/embeddinggemma-2.md +0 -0
  339. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-14-accept-referral-thor.txt +0 -0
  340. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-14-accept-spark-lobe-gb10.txt +0 -0
  341. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-14-accept-thor-lobe-live-referral-thor.txt +0 -0
  342. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-14-accept-thor-lobe-thor.txt +0 -0
  343. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-14-strict-tools-spark-lobe-spark.txt +0 -0
  344. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-16-proxy-lobes-live-spark-thor.txt +0 -0
  345. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-17-accept-muse-tool-calling-thor.txt +0 -0
  346. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-20-accept-embed-deep-gb10.txt +0 -0
  347. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-21-accept-realtime-spark.txt +0 -0
  348. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-21-accept-voice-loop-spark.txt +0 -0
  349. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-22-accept-realtime-voice-to-voice-spark.txt +0 -0
  350. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-25-accept-by-proxy-spark-f8a9.txt +0 -0
  351. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-31-accept-multimodal-cortex-spark.txt +0 -0
  352. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-31-accept-worker-proxy-spark.txt +0 -0
  353. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-07-31-accept-worker-thor.txt +0 -0
  354. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-04-accept-senses-unsloth-orin.txt +0 -0
  355. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-10-hand-lobe-budget-derivation.txt +0 -0
  356. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-10-partial-hand-orin.txt +0 -0
  357. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-10-partial-hand-spark.txt +0 -0
  358. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-19-accept-qwen38-1m-spark.txt +0 -0
  359. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-19-baseline-qwen3.6-cortex-spark.txt +0 -0
  360. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-19-spike-qwen3.8-official-nightly-spark.txt +0 -0
  361. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-accept-cortex-local-thor.txt +0 -0
  362. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-accept-cortex-repoint-orin.txt +0 -0
  363. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-accept-cortex-repoint-thor.txt +0 -0
  364. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-accept-dual-cortex-mesh.txt +0 -0
  365. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-accept-hand-spark.txt +0 -0
  366. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-accept-worker-hand-spark.txt +0 -0
  367. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-baseline-worker-qwen35b-thor.txt +0 -0
  368. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-hand-thor-blocked-reattributed.txt +0 -0
  369. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-spike-lightning-thor-no-go.txt +0 -0
  370. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-20-spike-nightly-sm110-thor.txt +0 -0
  371. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-21-measure-reasoning-effort-cortex-spark.txt +0 -0
  372. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-23-spike-qwen38-gguf-llamacpp-orin.txt +0 -0
  373. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-24-spike-dspark-cortex-spark.txt +0 -0
  374. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-25-accept-cortex-replica-pool-spark-thor.txt +0 -0
  375. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-25-accept-spark-lobe-dspark-render.txt +0 -0
  376. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-25-baseline-cortex-single-owner.txt +0 -0
  377. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-25-measure-associate-budget-orin.txt +0 -0
  378. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-25-orin-board-state-lightning-spikes.txt +0 -0
  379. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-25-spike-lightning-llamacpp-orin.txt +0 -0
  380. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-25-spike-lightning-vllm-orin.txt +0 -0
  381. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-25-spike-thor-cortex-speculation.txt +0 -0
  382. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-26-accept-orin-associate.txt +0 -0
  383. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-26-associate-gateway-auth-front.txt +0 -0
  384. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-28-accept-capacity-relative-pool-thor-spark.txt +0 -0
  385. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-30-accept-peer-only-pool-orin.txt +0 -0
  386. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-30-accept-reranker-template-spark.txt +0 -0
  387. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-30-baseline-orin-cortex-pinned.txt +0 -0
  388. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-08-30-baseline-reranker-untemplated-spark.txt +0 -0
  389. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-10-accept-nvidia-35b-a3b-thor.txt +0 -0
  390. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-10-accept-thor-worker-flip.txt +0 -0
  391. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-10-baseline-thor-cortex-pre-244.txt +0 -0
  392. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-10-spike-nvidia-35b-a3b-preboot-thor.txt +0 -0
  393. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-10-sweep-mtp-depth-nvidia-35b-a3b-thor.txt +0 -0
  394. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-10-thor-backup-and-rollback-dryrun-244.txt +0 -0
  395. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-10-thor-pressure-floor-244.txt +0 -0
  396. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-11-accept-thor-reranker-template-senses-unproxy.txt +0 -0
  397. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-11-accept-worker-proxy-spark-thor.txt +0 -0
  398. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-12-accept-mesh-boot-window-fleet.txt +0 -0
  399. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-12-accept-mesh-brain-join-fleet.txt +0 -0
  400. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-12-baseline-mesh-cutover.txt +0 -0
  401. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-13-accept-orin-associate-1m.txt +0 -0
  402. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-13-measure-associate-budget-orin-1m.txt +0 -0
  403. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-13-spike-lightning-thor-v029.txt +0 -0
  404. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-16-accept-innereye-spark.txt +0 -0
  405. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-16-baseline-comfyui-venv-spark.txt +0 -0
  406. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-16-innereye-render-via-thor.png +0 -0
  407. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-16-t2-comfyui-container-spark.txt +0 -0
  408. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-19-accept-multimodal-gemma26b-native-context-spark.txt +0 -0
  409. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-23-spike-flash-next-worker-thor.txt +0 -0
  410. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-hebrew-realtime-audio-hardware-spark.txt +0 -0
  411. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-hebrew-realtime-first-loop-spark.txt +0 -0
  412. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-hebrew-realtime-spike-spark.txt +0 -0
  413. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-hebrew-realtime-streaming-bluetts-spark.txt +0 -0
  414. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-hebrew-realtime-vad-ab-spark.txt +0 -0
  415. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-hebrew-stt-spike-spark.txt +0 -0
  416. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-hebrew-tts-ab-spark.txt +0 -0
  417. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-09-hebrew-voice-lane-senses12b-spark.txt +0 -0
  418. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-06-accept-mesh-member-lanes.txt +0 -0
  419. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-accept-innereye-replace-spark.txt +0 -0
  420. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-accept-orin-embed.txt +0 -0
  421. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-h2h/run1.json +0 -0
  422. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-h2h/run1.table.txt +0 -0
  423. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-h2h/run2-nomic.json +0 -0
  424. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-h2h/run2-nomic.table.txt +0 -0
  425. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-h2h/run3-qwen3vl.json +0 -0
  426. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-h2h/run3-qwen3vl.table.txt +0 -0
  427. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-h2h-code-retrieval-orin.txt +0 -0
  428. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-rollback-orin-embed-to-orin-associate.txt +0 -0
  429. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-spike-embeddinggemma2-sidecar-orin.txt +0 -0
  430. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-07-spike-orin-embed-vllm-8b.txt +0 -0
  431. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-14-ab-clef-vllm-vs-sidecar-orin.txt +0 -0
  432. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-14-accept-clef-bf16-interim-spark.txt +0 -0
  433. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-14-accept-decider-2b-spark2.txt +0 -0
  434. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-14-accept-orin-decider.txt +0 -0
  435. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-14-build-clef-sets.txt +0 -0
  436. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-14-spike-clef-nf4-transformers-orin.txt +0 -0
  437. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-14-verify-clef-quants.txt +0 -0
  438. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-accept-lane-safety-hardware.txt +0 -0
  439. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-accept-vllm-031-orin.txt +0 -0
  440. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-accept-vllm-031-spark-cortex.txt +0 -0
  441. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-accept-vllm-031-thor.txt +0 -0
  442. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-baseline-and-scaffold-orin.txt +0 -0
  443. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-baseline-and-scaffold-thor.txt +0 -0
  444. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-baseline-nightly-spark2.txt +0 -0
  445. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-dryrun-r1-rollout-spark-copy.txt +0 -0
  446. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-17-verify-cpucap-running-vllm-spark.txt +0 -0
  447. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-18-accept-vllm-031-spark-cortex.txt +0 -0
  448. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-18-accept-vllm-031-spark2.txt +0 -0
  449. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/2026-10-18-sweep-vllm-031-fleet.txt +0 -0
  450. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/README-dspark-arms.md +0 -0
  451. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/README-realtime-acceptance.md +0 -0
  452. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-a16-dspark-262k.json +0 -0
  453. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-a16-none-262k.json +0 -0
  454. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-dspark-262k.json +0 -0
  455. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-dspark-768k.json +0 -0
  456. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-mtp-n2-262k.json +0 -0
  457. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-mtp-n2-768k.json +0 -0
  458. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-mtp-n2.json +0 -0
  459. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-none-262k.json +0 -0
  460. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/evidence/arm-none-768k.json +0 -0
  461. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/experiments/README.md +0 -0
  462. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/experiments/qwen3.8-flash-next-gguf-llamacpp-vllm.md +0 -0
  463. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/experiments/qwen3.8-flash-next-nvfp4-thor-reference.md +0 -0
  464. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/gateway-fleet.md +0 -0
  465. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/gemma-4-12b-nvfp4.md +0 -0
  466. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/gemma-4-12b-qat-w4a16.md +0 -0
  467. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/gemma-4-31b-nvfp4.md +0 -0
  468. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/gemma4-mtp-draft.md +0 -0
  469. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/image-ledger.md +0 -0
  470. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/lfm2.5-1.2b-hand.md +0 -0
  471. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/machine-profiles.md +0 -0
  472. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/measuring-lane-performance.md +0 -0
  473. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/mistral-small-3.2-24b-nvfp4.md +0 -0
  474. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/model-switch-playbook.md +0 -0
  475. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/nemotron-3-embed-8b.md +0 -0
  476. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/nemotron-3.5-lightning-30b-a3b-nvfp4.md +0 -0
  477. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/nomic-embed-code.md +0 -0
  478. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/nvidia-qwen3.6-35b-a3b-nvfp4.md +0 -0
  479. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/openai-api.md +0 -0
  480. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/operating-a-deployment.md +0 -0
  481. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/orin-associate-deployment.md +0 -0
  482. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/orin-embed-deployment.md +0 -0
  483. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/orin-profiles.md +0 -0
  484. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/parakeet-stt.md +0 -0
  485. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-06-12-model-gear-owns-the-audio-i-o-surface-end-to-end-m.md +0 -0
  486. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-06-19-model-gear-now-serves-an-embedding-gear-qwen3-embe-2.md +0 -0
  487. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-06-26-lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.md +0 -0
  488. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-06-26-lobes-ships-a-per-lobe-benchmark-suite-speed-paral.md +0 -0
  489. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-06-29-lobes-adds-a-third-middle-model-tier-and-pressure.md +0 -0
  490. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-06-30-lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.md +0 -0
  491. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-06-30-lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.md +0 -0
  492. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-01-gemma-4-12b-gear-gets-speculative-decoding-draft.md +0 -0
  493. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-01-lobes-unifies-its-generate-lane-on-one-vllm-nightl.md +0 -0
  494. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-03-lobes-exposes-the-full-colleague-runtime-stack-as.md +0 -0
  495. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-03-under-pressure-lobes-tells-you-the-cortex-model-is.md +0 -0
  496. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-04-lobes-tells-clients-the-truth-about-a-fleet-a-cons.md +0 -0
  497. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-07-lobes-preserves-qwen-thinking-traces-across-multi.md +0 -0
  498. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-09-lobes-never-advertises-a-capability-it-cannot-serv.md +0 -0
  499. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-10-lobes-gateway-relays-sse-streams-frame-by-frame-th.md +0 -0
  500. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-13-lobes-fits-the-machine-it-lands-on-one-command-det.md +0 -0
  501. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-14-lobes-serves-strict-grammar-constrained-tool-calls.md +0 -0
  502. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-14-lobes-serves-the-brain-shape-you-choose-machine-as.md +0 -0
  503. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-14-lobes-serves-the-mesh-brain-end-state-one-lobe-per.md +0 -0
  504. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
  505. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-17-compose-chain-unification-init-repair-doctor-stale.md +0 -0
  506. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
  507. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-21-realtime-ws-server-vad-149.md +0 -0
  508. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-24-stt-readiness-truth-155.md +0 -0
  509. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-25-lobes-capabilities-tells-you-where-a-lobe-is-serve.md +0 -0
  510. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-31-every-lobe-in-the-mesh-can-see-the-spark-reaches-t.md +0 -0
  511. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-07-31-thor-worker-lobe-qwen3-6-35b-a3b.md +0 -0
  512. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
  513. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-10-hand-lobe-lfm2-5-1-2b.md +0 -0
  514. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-19-qwen3-8-cortex-upgrade.md +0 -0
  515. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-20-nemotron-lightning-worker.md +0 -0
  516. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
  517. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
  518. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-25-cortex-replica-pool-199.md +0 -0
  519. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-25-lightning-on-orin.md +0 -0
  520. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-25-thor-cortex-speculation.md +0 -0
  521. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-27-capacity-relative-pool-routing.md +0 -0
  522. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-29-deployment-lock-per-box.md +0 -0
  523. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-30-peer-only-replica-pools.md +0 -0
  524. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-30-reranker-calibration-227.md +0 -0
  525. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-08-31-quick-wins-finish-the-rename.md +0 -0
  526. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes-split.md +0 -0
  527. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
  528. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-11-mesh-brain-join-split.md +0 -0
  529. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-11-mesh-brain-join.md +0 -0
  530. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-12-mesh-boot-window-and-capabilities-advert-split.md +0 -0
  531. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
  532. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-13-orin-associate-at-1m-split.md +0 -0
  533. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-13-orin-associate-at-1m.md +0 -0
  534. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-16-innereye-lobes-hosts-comfyui-split.md +0 -0
  535. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
  536. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-18-hebrew-realtime-HANDOFF.md +0 -0
  537. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-18-hebrew-realtime-split.md +0 -0
  538. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-18-hebrew-realtime.md +0 -0
  539. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-09-23-flash-next-worker-on-thor.md +0 -0
  540. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-06-mesh-pool-load-sharing-split.md +0 -0
  541. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-06-mesh-pool-load-sharing.md +0 -0
  542. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-07-orin-embedding-specialist-split.md +0 -0
  543. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-07-orin-embedding-specialist.md +0 -0
  544. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-14-orin-decision-models-split.md +0 -0
  545. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-14-orin-decision-models.md +0 -0
  546. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-17-lane-safety-HANDOFF.md +0 -0
  547. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-17-lane-safety-and-quality-304-307-308-309-split.md +0 -0
  548. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
  549. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-17-vllm-0-31-0-fleet-split.md +0 -0
  550. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-17-vllm-0-31-0-fleet.md +0 -0
  551. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/2026-10-18-vllm-031-HANDOFF.md +0 -0
  552. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/colour_check.py +0 -0
  553. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/colour_spark.py +0 -0
  554. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/eg2_controls.py +0 -0
  555. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/fleet_sweep.sh +0 -0
  556. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/grammar_probe.py +0 -0
  557. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/mesh_roles.sh +0 -0
  558. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/shape_bench.py +0 -0
  559. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/strict-payload.json +0 -0
  560. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/strict_controls.py +0 -0
  561. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/strict_replay.py +0 -0
  562. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/xgr_post_think_probe.py +0 -0
  563. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/plans/vllm-031-probes/xgr_stop_probe.py +0 -0
  564. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3-14b-nvfp4.md +0 -0
  565. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3-32b-nvfp4.md +0 -0
  566. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3-embedding-0.6b.md +0 -0
  567. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3-embedding-4b.md +0 -0
  568. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3-reranker-0.6b.md +0 -0
  569. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3-vl-embedding-8b.md +0 -0
  570. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3-vl-reranker-8b.md +0 -0
  571. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3.5-4b-minor.md +0 -0
  572. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3.6-27b-nvfp4-multimodal.md +0 -0
  573. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3.6-27b-nvfp4.md +0 -0
  574. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3.6-27b-text-nvfp4-mtp.md +0 -0
  575. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3.6-35b-a3b-nvfp4.md +0 -0
  576. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3.8-27b-gguf-llamacpp.md +0 -0
  577. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen3.8-27b-nvfp4.md +0 -0
  578. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/qwen38-rollout-notes.md +0 -0
  579. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/realtime-pipeline.md +0 -0
  580. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/runbooks/lane-safety-r1-rollout.md +0 -0
  581. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/secret-rotation.md +0 -0
  582. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/skill-sources.md +0 -0
  583. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-06-12-model-gear-owns-the-audio-i-o-surface-end-to-end-m.md +0 -0
  584. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-06-19-model-gear-now-serves-an-embedding-gear-qwen3-embe-2.md +0 -0
  585. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-06-26-lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.md +0 -0
  586. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-06-26-lobes-ships-a-per-lobe-benchmark-suite-speed-paral.md +0 -0
  587. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-06-29-lobes-adds-a-third-middle-model-tier-and-pressure.md +0 -0
  588. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-06-30-lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.md +0 -0
  589. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-06-30-lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.md +0 -0
  590. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-01-gemma-4-12b-gear-gets-speculative-decoding-draft.md +0 -0
  591. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-01-lobes-unifies-its-generate-lane-on-one-vllm-nightl.md +0 -0
  592. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-03-lobes-exposes-the-full-colleague-runtime-stack-as.md +0 -0
  593. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-03-under-pressure-lobes-tells-you-the-cortex-model-is.md +0 -0
  594. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-04-lobes-tells-clients-the-truth-about-a-fleet-a-cons.md +0 -0
  595. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-07-lobes-preserves-qwen-thinking-traces-across-multi.md +0 -0
  596. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-09-lobes-never-advertises-a-capability-it-cannot-serv.md +0 -0
  597. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-10-lobes-gateway-relays-sse-streams-frame-by-frame-th.md +0 -0
  598. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-13-lobes-fits-the-machine-it-lands-on-one-command-det.md +0 -0
  599. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-14-lobes-serves-strict-grammar-constrained-tool-calls.md +0 -0
  600. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-14-lobes-serves-the-brain-shape-you-choose-machine-as.md +0 -0
  601. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-14-lobes-serves-the-mesh-brain-end-state-one-lobe-per.md +0 -0
  602. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
  603. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-17-compose-chain-unification-init-repair-doctor-stale.md +0 -0
  604. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
  605. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-21-realtime-ws-server-vad-149.md +0 -0
  606. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-24-stt-readiness-truth-155.md +0 -0
  607. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-25-lobes-capabilities-tells-you-where-a-lobe-is-serve.md +0 -0
  608. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-31-every-lobe-in-the-mesh-can-see-the-spark-reaches-t.md +0 -0
  609. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-07-31-thor-worker-lobe-qwen3-6-35b-a3b.md +0 -0
  610. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
  611. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-09-hand-lobe-lfm2-5-1-2b.md +0 -0
  612. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-19-qwen3-8-cortex-upgrade.md +0 -0
  613. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-20-nemotron-lightning-worker.md +0 -0
  614. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
  615. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
  616. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-25-cortex-replica-pool-199.md +0 -0
  617. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-25-lightning-on-orin.md +0 -0
  618. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-25-thor-cortex-speculation.md +0 -0
  619. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-27-capacity-relative-pool-routing.md +0 -0
  620. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-27-flash-next-on-vllm.md +0 -0
  621. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-27-qwen3-8-flash-next-gguf-candidate.md +0 -0
  622. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-29-deployment-lock-per-box.md +0 -0
  623. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-30-peer-only-replica-pools.md +0 -0
  624. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-30-reranker-calibration-227.md +0 -0
  625. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-08-31-quick-wins-finish-the-rename.md +0 -0
  626. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
  627. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-09-11-mesh-brain-join.md +0 -0
  628. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
  629. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-09-13-orin-associate-at-1m.md +0 -0
  630. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
  631. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-09-18-hebrew-realtime.md +0 -0
  632. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-09-23-flash-next-worker-on-thor.md +0 -0
  633. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-10-06-mesh-pool-load-sharing.md +0 -0
  634. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-10-07-orin-embedding-specialist.md +0 -0
  635. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-10-14-orin-decision-models.md +0 -0
  636. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
  637. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/specs/2026-10-17-vllm-0-31-0-fleet.md +0 -0
  638. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/superpowers/plans/2026-05-22-scaffold-cli-sibling.md +0 -0
  639. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/superpowers/specs/2026-05-22-scaffold-cli-sibling-design.md +0 -0
  640. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/tensorrt-llm-investigation.md +0 -0
  641. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/thor-worker-flip-rollout-notes.md +0 -0
  642. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/tuning-profiles.md +0 -0
  643. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/validate-tiers.md +0 -0
  644. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/vllm-nightly-migration.md +0 -0
  645. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/docs/worker-lightning-rollout-notes.md +0 -0
  646. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/examples/minor-evals/smoke.jsonl +0 -0
  647. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/__init__.py +0 -0
  648. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/__main__.py +0 -0
  649. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/_metrics.py +0 -0
  650. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/assess.py +0 -0
  651. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/bench/__init__.py +0 -0
  652. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/bench/cat_probe.py +0 -0
  653. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/bench/cat_score.py +0 -0
  654. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/bench/compare.py +0 -0
  655. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/bench/report.py +0 -0
  656. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/catalog.py +0 -0
  657. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/__init__.py +0 -0
  658. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/__init__.py +0 -0
  659. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/_doctor_lane_safety.py +0 -0
  660. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/_doctor_plugin.py +0 -0
  661. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/_role_probe.py +0 -0
  662. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/assess.py +0 -0
  663. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/benchmark.py +0 -0
  664. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/calibrate.py +0 -0
  665. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/capabilities.py +0 -0
  666. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/cli.py +0 -0
  667. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/doctor.py +0 -0
  668. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/eval.py +0 -0
  669. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/explain.py +0 -0
  670. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/fleet.py +0 -0
  671. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/governor.py +0 -0
  672. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/init.py +0 -0
  673. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/learn.py +0 -0
  674. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/logs.py +0 -0
  675. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/measure.py +0 -0
  676. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/mesh.py +0 -0
  677. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/overview.py +0 -0
  678. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/route.py +0 -0
  679. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/run.py +0 -0
  680. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/serve.py +0 -0
  681. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/status.py +0 -0
  682. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/stop.py +0 -0
  683. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/switch.py +0 -0
  684. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/tunnel.py +0 -0
  685. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/up.py +0 -0
  686. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/watcher.py +0 -0
  687. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_commands/whoami.py +0 -0
  688. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_errors.py +0 -0
  689. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_live.py +0 -0
  690. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_output.py +0 -0
  691. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_role_swap.py +0 -0
  692. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/cli/_runtime_ops.py +0 -0
  693. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/decider_sidecar/__init__.py +0 -0
  694. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/decider_sidecar/clef_vllm.py +0 -0
  695. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/decider_sidecar/server.py +0 -0
  696. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/embed_lanes.py +0 -0
  697. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/embed_sidecar/__init__.py +0 -0
  698. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/embed_sidecar/server.py +0 -0
  699. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/explain/__init__.py +0 -0
  700. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/explain/catalog.py +0 -0
  701. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/__init__.py +0 -0
  702. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/__main__.py +0 -0
  703. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_authlog.py +0 -0
  704. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_config.py +0 -0
  705. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_mesh_config.py +0 -0
  706. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_mesh_roster.py +0 -0
  707. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_mesh_routes.py +0 -0
  708. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_mesh_routing.py +0 -0
  709. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_mesh_wire.py +0 -0
  710. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_pressure_policy.py +0 -0
  711. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_readiness.py +0 -0
  712. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_realtime.py +0 -0
  713. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_replicas.py +0 -0
  714. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_routing.py +0 -0
  715. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_selection.py +0 -0
  716. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/_tier_request.py +0 -0
  717. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/gateway/server.py +0 -0
  718. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/lane_keys.py +0 -0
  719. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/__init__.py +0 -0
  720. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/_registry.py +0 -0
  721. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/_strategy.py +0 -0
  722. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/_traits.py +0 -0
  723. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/blackwell.py +0 -0
  724. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/generic.py +0 -0
  725. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/orin.py +0 -0
  726. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/spark.py +0 -0
  727. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/machines/thor.py +0 -0
  728. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/minor/__init__.py +0 -0
  729. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/minor/_client.py +0 -0
  730. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/minor/governance.py +0 -0
  731. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/__init__.py +0 -0
  732. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin/__init__.py +0 -0
  733. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/__init__.py +0 -0
  734. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/gateway-only.toml +0 -0
  735. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/machine-as-brain.toml +0 -0
  736. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/orin-associate.toml +0 -0
  737. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/orin-cortex.toml +0 -0
  738. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/orin-decider.toml +0 -0
  739. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/orin-embed.toml +0 -0
  740. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/orin-lobe.toml +0 -0
  741. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/orin-small.toml +0 -0
  742. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/spark-innereye.toml +0 -0
  743. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/spark-lobe.toml +0 -0
  744. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/thor-lobe.toml +0 -0
  745. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/thor-muse.toml +0 -0
  746. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/builtin_shapes/thor-worker.toml +0 -0
  747. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/loader.py +0 -0
  748. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/render.py +0 -0
  749. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/schema.py +0 -0
  750. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/shape_render.py +0 -0
  751. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/profiles/shapes.py +0 -0
  752. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/__init__.py +0 -0
  753. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/__main__.py +0 -0
  754. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_conversation.py +0 -0
  755. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_floor.py +0 -0
  756. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_pcm.py +0 -0
  757. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_readiness.py +0 -0
  758. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_segmenter.py +0 -0
  759. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_sentences.py +0 -0
  760. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_session.py +0 -0
  761. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_settings.py +0 -0
  762. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_speculation.py +0 -0
  763. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_timings.py +0 -0
  764. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_tts_text.py +0 -0
  765. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_turn.py +0 -0
  766. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_vocalize.py +0 -0
  767. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/_wire.py +0 -0
  768. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/app.py +0 -0
  769. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/audio_facade.py +0 -0
  770. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/bluetts_server.py +0 -0
  771. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/chatterbox_multilingual_server.py +0 -0
  772. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/chatterbox_server.py +0 -0
  773. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/protocol.py +0 -0
  774. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/realtime/tts_client.py +0 -0
  775. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/roles.py +0 -0
  776. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/roles_measure.py +0 -0
  777. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/__init__.py +0 -0
  778. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_buildability.py +0 -0
  779. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_compose.py +0 -0
  780. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_detect.py +0 -0
  781. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_env.py +0 -0
  782. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_governor.py +0 -0
  783. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_health.py +0 -0
  784. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_lanes.py +0 -0
  785. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_lock.py +0 -0
  786. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_machine.py +0 -0
  787. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_parser.py +0 -0
  788. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_pressure.py +0 -0
  789. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_tunnel.py +0 -0
  790. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/runtime/_window.py +0 -0
  791. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/__init__.py +0 -0
  792. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/cf-tunnel.env.example +0 -0
  793. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/docker-compose.yml +0 -0
  794. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/env.example +0 -0
  795. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.bluetts +0 -0
  796. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.chatterbox +0 -0
  797. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.chatterbox-ml +0 -0
  798. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.comfyui +0 -0
  799. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.decider +0 -0
  800. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.decider-vllm +0 -0
  801. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.embed-st +0 -0
  802. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.gateway +0 -0
  803. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.parakeet +0 -0
  804. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.realtime +0 -0
  805. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/Dockerfile.vllm-gemma4 +0 -0
  806. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/__init__.py +0 -0
  807. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/_readiness.py +0 -0
  808. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/docker-compose.audio.yml +0 -0
  809. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/docker-compose.embed.yml +0 -0
  810. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/docker-compose.yml +0 -0
  811. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/env.audio.example +0 -0
  812. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/listen_server.py +0 -0
  813. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/fleet/qwen3_reranker.jinja +0 -0
  814. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/lobes-watcher.service.in +0 -0
  815. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/templates/mg-logwrap.sh +0 -0
  816. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/variation.py +0 -0
  817. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/variation_catalog.py +0 -0
  818. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/vllm_plugins/__init__.py +0 -0
  819. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/vllm_plugins/qwen3_thinking_tool_parser.py +0 -0
  820. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/watcher/__init__.py +0 -0
  821. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/watcher/_install.py +0 -0
  822. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/lobes/watcher/_run.py +0 -0
  823. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/packaging/model-gear/README.md +0 -0
  824. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/packaging/model-gear/pyproject.toml +0 -0
  825. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/accept-by-proxy.sh +0 -0
  826. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/accept-shape.sh +0 -0
  827. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/audio-smoke.py +0 -0
  828. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_eval/compare.py +0 -0
  829. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_eval/run_nf4_probe.py +0 -0
  830. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_eval/run_probe.py +0 -0
  831. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_quant/quantize.py +0 -0
  832. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_sets/build_sets.py +0 -0
  833. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_sets/calibration.manifest.jsonl +0 -0
  834. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_sets/incidents.py +0 -0
  835. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_sets/probe.manifest.jsonl +0 -0
  836. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/clef_sets/routing.py +0 -0
  837. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/concurrency-probe.py +0 -0
  838. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/embed_h2h/README.md +0 -0
  839. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/embed_h2h/build_corpus.py +0 -0
  840. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/embed_h2h/build_queries.py +0 -0
  841. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/embed_h2h/corpus.jsonl +0 -0
  842. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/embed_h2h/h2h.py +0 -0
  843. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/embed_h2h/prompts.json +0 -0
  844. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/embed_h2h/queries.jsonl +0 -0
  845. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/gen-api-key.py +0 -0
  846. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/live-check.sh +0 -0
  847. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/prefill-depth-curve.py +0 -0
  848. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/probe_reranker_calibration.py +0 -0
  849. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/realtime-he-accept.py +0 -0
  850. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/realtime-smoke.py +0 -0
  851. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/realtime-voice-loop.py +0 -0
  852. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/scan_deployment_secrets.py +0 -0
  853. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/spec-arms.py +0 -0
  854. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/spike-preflight.sh +0 -0
  855. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/stream-measure.py +0 -0
  856. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/scripts/validate-tiers.sh +0 -0
  857. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/.env.example +0 -0
  858. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/.gitignore +0 -0
  859. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/.nvmrc +0 -0
  860. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/README.md +0 -0
  861. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/astro.config.mjs +0 -0
  862. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/package-lock.json +0 -0
  863. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/package.json +0 -0
  864. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/proxy/gateway-proxy.mjs +0 -0
  865. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/public/favicon.svg +0 -0
  866. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/public/worklets/pcm-capture-processor.js +0 -0
  867. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/components/ConnectionPanel.astro +0 -0
  868. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/components/ConversationView.astro +0 -0
  869. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/components/EventStream.astro +0 -0
  870. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/components/Footer.astro +0 -0
  871. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/components/Header.astro +0 -0
  872. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/components/MicIsland.astro +0 -0
  873. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/components/SignalMesh.astro +0 -0
  874. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/layouts/Layout.astro +0 -0
  875. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/pages/dev-connection.astro +0 -0
  876. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/pages/dev-events.astro +0 -0
  877. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/pages/dev-mic.astro +0 -0
  878. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/pages/index.astro +0 -0
  879. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/audio-graph.ts +0 -0
  880. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/audio-playback.test.ts +0 -0
  881. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/audio-playback.ts +0 -0
  882. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/audio-test-doubles.ts +0 -0
  883. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/connection-panel.ts +0 -0
  884. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/conversation-view.ts +0 -0
  885. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/demo-tools.ts +0 -0
  886. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/dev-mic-harness.ts +0 -0
  887. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/event-fixtures.ts +0 -0
  888. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/event-icons.ts +0 -0
  889. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/event-log.test.ts +0 -0
  890. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/event-log.ts +0 -0
  891. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/mic-capture.test.ts +0 -0
  892. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/mic-capture.ts +0 -0
  893. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/mic-island.test.ts +0 -0
  894. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/mic-island.ts +0 -0
  895. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/no-mic-mute.test.ts +0 -0
  896. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/pcm-wire.test.ts +0 -0
  897. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/pcm-wire.ts +0 -0
  898. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/realtime-connection.ts +0 -0
  899. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/scripts/realtime-events.ts +0 -0
  900. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/src/styles/global.css +0 -0
  901. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/test/connection-panel.test.ts +0 -0
  902. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/test/conversation-view.test.ts +0 -0
  903. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/test/demo-tools.test.ts +0 -0
  904. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/test/gateway-proxy.test.ts +0 -0
  905. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/test/realtime-connection.test.ts +0 -0
  906. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/tsconfig.json +0 -0
  907. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/site/vitest.config.ts +0 -0
  908. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/sonar-project.properties +0 -0
  909. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/__init__.py +0 -0
  910. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/conftest.py +0 -0
  911. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card/Dockerfile.gateway +0 -0
  912. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card/VARIATION.md +0 -0
  913. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card/deployment.lock.toml +0 -0
  914. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card/docker-compose.override.yml +0 -0
  915. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card/docker-compose.yml +0 -0
  916. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card__fixture-shape/VARIATION.md +0 -0
  917. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card__fixture-shape/deployment.lock.toml +0 -0
  918. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.override.yml +0 -0
  919. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.shape.yml +0 -0
  920. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.yml +0 -0
  921. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/upgrade_compat/README.md +0 -0
  922. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/upgrade_compat/fleet/docker-compose.yml +0 -0
  923. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/upgrade_compat/fleet/env.example +0 -0
  924. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/upgrade_compat/single/docker-compose.yml +0 -0
  925. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/fixtures/upgrade_compat/single/env.example +0 -0
  926. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/README.md +0 -0
  927. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/__init__.py +0 -0
  928. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/no-pool-gateway.json +0 -0
  929. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/regen.py +0 -0
  930. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/gateway-only__base.env +0 -0
  931. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/gateway-only__orin.env +0 -0
  932. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/gateway-only__spark.env +0 -0
  933. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/shapes/gateway-only__thor.env +0 -0
  934. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/switch-plans.txt +0 -0
  935. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/goldens/template-defaults.env +0 -0
  936. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_assess.py +0 -0
  937. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_assess_perf.py +0 -0
  938. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_associate_compose.py +0 -0
  939. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_associate_exposure.py +0 -0
  940. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_associate_gateway_boundaries.py +0 -0
  941. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_associate_role.py +0 -0
  942. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_audio_he_compose_chain.py +0 -0
  943. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_audio_he_goldens.py +0 -0
  944. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_audio_he_tts_compose.py +0 -0
  945. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_bench_compare.py +0 -0
  946. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_bench_report.py +0 -0
  947. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_benchmark_all_lobes.py +0 -0
  948. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_benchmark_window.py +0 -0
  949. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_bluetts_dockerfile.py +0 -0
  950. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_bluetts_server.py +0 -0
  951. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_boundary_serves_only.py +0 -0
  952. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_buildability_guard.py +0 -0
  953. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_calibration_knee.py +0 -0
  954. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_capabilities_member_lanes.py +0 -0
  955. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cat_probe.py +0 -0
  956. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cat_score.py +0 -0
  957. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_catalog.py +0 -0
  958. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_catalog_embed_lanes.py +0 -0
  959. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_catalog_tiers.py +0 -0
  960. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_chatterbox_ml_dockerfile.py +0 -0
  961. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_chatterbox_multilingual_server.py +0 -0
  962. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_chatterbox_pcm16.py +0 -0
  963. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_chatterbox_readiness.py +0 -0
  964. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_clef_eval.py +0 -0
  965. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_clef_quant_index.py +0 -0
  966. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_clef_sets.py +0 -0
  967. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli.py +0 -0
  968. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_benchmark_profiles.py +0 -0
  969. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_calibrate.py +0 -0
  970. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_capabilities.py +0 -0
  971. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_capabilities_replicas.py +0 -0
  972. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_eval.py +0 -0
  973. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_eval_cat.py +0 -0
  974. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_fleet.py +0 -0
  975. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_gateway_auth.py +0 -0
  976. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_introspection.py +0 -0
  977. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_lanes.py +0 -0
  978. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_logs.py +0 -0
  979. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_measure.py +0 -0
  980. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_mesh.py +0 -0
  981. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_route.py +0 -0
  982. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_run.py +0 -0
  983. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_runtime.py +0 -0
  984. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_tunnel.py +0 -0
  985. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_up.py +0 -0
  986. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_up_replace.py +0 -0
  987. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_cli_wiring.py +0 -0
  988. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_client_reasoning_roundtrip.py +0 -0
  989. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_colleague_contract.py +0 -0
  990. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_comfyui_compose.py +0 -0
  991. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_comfyui_dockerfile.py +0 -0
  992. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_comfyui_volumes.py +0 -0
  993. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_compose_chain.py +0 -0
  994. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_decider_render.py +0 -0
  995. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_decider_sidecar.py +0 -0
  996. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_decider_sidecar_vllm.py +0 -0
  997. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_deployment_lock.py +0 -0
  998. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_deployment_lock_doc.py +0 -0
  999. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_detect.py +0 -0
  1000. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor.py +0 -0
  1001. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_audio_he.py +0 -0
  1002. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_fix.py +0 -0
  1003. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_lane_safety.py +0 -0
  1004. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_machine_profile.py +0 -0
  1005. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_mesh_retirement.py +0 -0
  1006. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_passthrough.py +0 -0
  1007. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_refresh_plugin.py +0 -0
  1008. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_repin_version.py +0 -0
  1009. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_role_command.py +0 -0
  1010. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_doctor_role_probe.py +0 -0
  1011. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_dropped_lobe_honesty.py +0 -0
  1012. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_embed_finetune.py +0 -0
  1013. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_embed_h2h.py +0 -0
  1014. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_embed_lanes.py +0 -0
  1015. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_embed_lanes_import.py +0 -0
  1016. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_embed_overlay.py +0 -0
  1017. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_embed_sidecar.py +0 -0
  1018. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_fleet_audio_vad_env.py +0 -0
  1019. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_fleet_compose_mounts.py +0 -0
  1020. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_fleet_minor.py +0 -0
  1021. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_fleet_per_machine_knobs.py +0 -0
  1022. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_fleet_secrets_env_file.py +0 -0
  1023. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_fleet_template_gateway_env.py +0 -0
  1024. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_audio_peer.py +0 -0
  1025. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_audio_routing.py +0 -0
  1026. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_auth.py +0 -0
  1027. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_auth_rejection_log.py +0 -0
  1028. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_busy_e2e.py +0 -0
  1029. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_capabilities.py +0 -0
  1030. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_config_proxy.py +0 -0
  1031. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_config_replicas.py +0 -0
  1032. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_config_wiring.py +0 -0
  1033. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_decider.py +0 -0
  1034. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_decider_mesh.py +0 -0
  1035. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_embed_deep.py +0 -0
  1036. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_embed_lanes.py +0 -0
  1037. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_env_passthrough_guard.py +0 -0
  1038. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_feasibility.py +0 -0
  1039. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_fleet_doc.py +0 -0
  1040. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_force_strict.py +0 -0
  1041. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_get_relay.py +0 -0
  1042. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_hand_adapters.py +0 -0
  1043. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_member_lanes.py +0 -0
  1044. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_no_lifecycle_actuator.py +0 -0
  1045. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_peer_advert.py +0 -0
  1046. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_peer_only_pool.py +0 -0
  1047. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_pool.py +0 -0
  1048. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_pool_capacity_wiring.py +0 -0
  1049. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_pool_pressure.py +0 -0
  1050. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_pool_saturation.py +0 -0
  1051. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_proxy.py +0 -0
  1052. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_readiness.py +0 -0
  1053. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_realtime_ws.py +0 -0
  1054. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_render_facade.py +0 -0
  1055. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_replicas.py +0 -0
  1056. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_routing.py +0 -0
  1057. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_selection.py +0 -0
  1058. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_serve_mesh_wiring.py +0 -0
  1059. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_server.py +0 -0
  1060. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_status.py +0 -0
  1061. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_stream_termination.py +0 -0
  1062. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gateway_tiers.py +0 -0
  1063. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gemma4_compose.py +0 -0
  1064. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gemma4_dockerfile.py +0 -0
  1065. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gen_api_key.py +0 -0
  1066. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_gitignore_convention.py +0 -0
  1067. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_governor.py +0 -0
  1068. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_init.py +0 -0
  1069. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_init_audio_he.py +0 -0
  1070. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_init_coresidency.py +0 -0
  1071. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_init_from_lock.py +0 -0
  1072. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_init_gpu_access.py +0 -0
  1073. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_init_profile.py +0 -0
  1074. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_init_shape.py +0 -0
  1075. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_innereye_ui_port.py +0 -0
  1076. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_lane_safety_compose.py +0 -0
  1077. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_lane_safety_knobs_documented.py +0 -0
  1078. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_lane_state_dir.py +0 -0
  1079. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_lifecycle_cache_clear.py +0 -0
  1080. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_live_capabilities.py +0 -0
  1081. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_lobes_compose_wrapper.py +0 -0
  1082. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_lock_drift.py +0 -0
  1083. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_logwrap_backoff.py +0 -0
  1084. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_logwrap_held.py +0 -0
  1085. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_logwrap_hold.py +0 -0
  1086. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_machine_adapter.py +0 -0
  1087. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_machines.py +0 -0
  1088. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_config.py +0 -0
  1089. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_flap_per_name.py +0 -0
  1090. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_heartbeat_live.py +0 -0
  1091. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_lanes.py +0 -0
  1092. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_member_lanes.py +0 -0
  1093. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_naming.py +0 -0
  1094. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_roster.py +0 -0
  1095. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_routes.py +0 -0
  1096. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_routing.py +0 -0
  1097. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_routing_wiring.py +0 -0
  1098. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_templates.py +0 -0
  1099. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_verify_reason.py +0 -0
  1100. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_mesh_wire.py +0 -0
  1101. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_minor_client.py +0 -0
  1102. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_minor_governance.py +0 -0
  1103. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_minor_integration.py +0 -0
  1104. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_minor_logprobs.py +0 -0
  1105. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_nightly_migration_doc.py +0 -0
  1106. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_no_config_byte_identity.py +0 -0
  1107. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_orin_associate_boot_order.py +0 -0
  1108. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_orin_associate_shape.py +0 -0
  1109. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_orin_cortex_shape.py +0 -0
  1110. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_orin_decider_shape.py +0 -0
  1111. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_orin_embed_shape.py +0 -0
  1112. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_orin_gateway_read_timeout.py +0 -0
  1113. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_orin_lobe_shape.py +0 -0
  1114. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_overview_live.py +0 -0
  1115. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_parser.py +0 -0
  1116. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_peer_referral.py +0 -0
  1117. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_preserve_thinking_diagnostic.py +0 -0
  1118. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_pressure.py +0 -0
  1119. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_pressure_policy.py +0 -0
  1120. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_profile_goldens.py +0 -0
  1121. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_profile_render.py +0 -0
  1122. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_profile_schema.py +0 -0
  1123. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_profiles.py +0 -0
  1124. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_proxy_integration.py +0 -0
  1125. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_readiness_peer_probe.py +0 -0
  1126. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_app_stream_structure.py +0 -0
  1127. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_audio_env_coverage.py +0 -0
  1128. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_audio_facade.py +0 -0
  1129. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_continuation.py +0 -0
  1130. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_conversation.py +0 -0
  1131. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_conversation_stream.py +0 -0
  1132. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_floor.py +0 -0
  1133. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_floor_segments.py +0 -0
  1134. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_generate_failure_surfacing.py +0 -0
  1135. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_generate_stream_settings.py +0 -0
  1136. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_he_accept_helpers.py +0 -0
  1137. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_imports.py +0 -0
  1138. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_parallel_tool_calls.py +0 -0
  1139. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_pcm.py +0 -0
  1140. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_protocol.py +0 -0
  1141. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_readiness.py +0 -0
  1142. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_segmenter.py +0 -0
  1143. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_segmenter_eager.py +0 -0
  1144. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_segmenter_level_gate.py +0 -0
  1145. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_sentences.py +0 -0
  1146. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_session.py +0 -0
  1147. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_settings.py +0 -0
  1148. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_smoke_helpers.py +0 -0
  1149. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_speculation.py +0 -0
  1150. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_stt_forward.py +0 -0
  1151. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_timings.py +0 -0
  1152. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_tts_gate.py +0 -0
  1153. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_tts_text.py +0 -0
  1154. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_turn.py +0 -0
  1155. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_turn_stream.py +0 -0
  1156. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_vocalize.py +0 -0
  1157. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_realtime_wire.py +0 -0
  1158. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_role_probes.py +0 -0
  1159. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_roles.py +0 -0
  1160. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_roles_audio_advert.py +0 -0
  1161. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_roles_audio_language.py +0 -0
  1162. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_roles_proxied.py +0 -0
  1163. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_roles_replicas.py +0 -0
  1164. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_routing_models_member_lanes.py +0 -0
  1165. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_scan_deployment_secrets.py +0 -0
  1166. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_senses_speculative_config.py +0 -0
  1167. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_shape_budgets.py +0 -0
  1168. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_shape_contract_matrix.py +0 -0
  1169. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_shape_gateway_only.py +0 -0
  1170. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_shape_goldens.py +0 -0
  1171. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_shape_host_env_rerender.py +0 -0
  1172. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_shapes.py +0 -0
  1173. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_smoke_duo.py +0 -0
  1174. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_spec_arms.py +0 -0
  1175. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_spike_preflight.py +0 -0
  1176. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_status_fleet.py +0 -0
  1177. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_status_pressure.py +0 -0
  1178. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_switch_bf16.py +0 -0
  1179. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_switch_plan_goldens.py +0 -0
  1180. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_templates_preserve_thinking.py +0 -0
  1181. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_tier_request.py +0 -0
  1182. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_tool_parser_plugin.py +0 -0
  1183. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_tts_client_hebrew_diacritizer.py +0 -0
  1184. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_tts_pause_and_truncation.py +0 -0
  1185. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_up_no_deps_isolation.py +0 -0
  1186. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_upgrade_compat.py +0 -0
  1187. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_variation.py +0 -0
  1188. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_variation_catalog.py +0 -0
  1189. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_vllm_plugin_thinking.py +0 -0
  1190. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_watcher.py +0 -0
  1191. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_wheel_excludes_deployments.py +0 -0
  1192. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_worker_compose.py +0 -0
  1193. {lobes_cli-0.90.2 → lobes_cli-0.91.0}/tests/test_worker_recipe_knobs.py +0 -0
@@ -4,6 +4,34 @@ All notable changes to this project are documented here. The format is based on
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
5
5
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.91.0] - 2026-10-23
8
+
9
+ ### Added
10
+
11
+ - Hebrew Whisper STT (audio-he overlay): decode-quality knobs for long recordings (issue #329) - STT_NO_REPEAT_NGRAM_SIZE (default 6), STT_REPETITION_PENALTY (default 1.0 = off), STT_COMPRESSION_RATIO_MAX (default 2.4), STT_TEMPERATURE_FALLBACK (default 0.2,0.4), STT_LOGPROB_STAT (default median; mean = legacy), STT_MAX_WORD_RUN (default 4; 0/off disables), STT_VAD (default auto) with STT_VAD_THRESHOLD / STT_VAD_MIN_SPEECH_MS; each has an off value that restores the previous decode exactly.
12
+ - Word-run knobs (#329 follow-up): STT_MAX_WORD_RUN (default 4; 0/off disables) TRIMS a run of one word, or one two-word phrase (Unicode word tokens, punctuation ignored), to 3 repeats and keeps the rest of the chunk, so emphatic speech is never dropped; STT_WORD_RUN_FAIL (default 8; 0/off disables) fails a multi-window chunk with a run that long like a compression-ratio failure - retried through the temperature ladder, then dropped with reason=word_run. stt_chunk lines carry word_run=, max_word_run= and word_run_fail=, and a trim logs event=trimmed.
13
+ - Structured stt_chunk (retry / dropped / trimmed / skipped) and per-request stt_request log lines in the stt container, so dropped and retried chunks are observable server-side; stt_request names the request policy (policy=single_window|multi_window stat=mean|median); the client-facing dropped[] field waits for verbose_json (#328).
14
+
15
+ ### Changed
16
+
17
+ - STT_LOGPROB_STAT now defaults to median (threshold STT_MIN_AVG_LOGPROB=-0.35 unchanged) for multi-window uploads: on a live A/B on the DGX Spark the mean gate dropped 118 of 215 decoded chunks and the median gate 39 of 215.
18
+ - Single-window requests (every realtime turn) keep the pre-#329 confidence gate exactly: the mean statistic, one greedy decode, no temperature fallback, a word run trimmed but never failed. A short silence hallucination (mean -0.58, median -0.15) would pass a median gate.
19
+ - The stt handler runs the whole transcription (resample, Silero scan, every Whisper decode) off the event loop in a worker thread, one transcription at a time behind one lock, so /v1/health/ready stays responsive during a long upload; the Silero wrapper's lock now covers a whole chunk scan (reset plus every window).
20
+ - DecodeSettings, DecodePolicy (both frozen), ChunkOutcome and RequestSummary are dataclasses; STT_MIN_AVG_LOGPROB accepts the same off tokens as the other knobs (false and no included).
21
+ - Dockerfile.whisper-stt installs silero-vad==6.2.1 with --no-deps (its torchaudio dependency would replace the base image torch); the server loads the bundled TorchScript model by path and falls back to decoding every chunk if it cannot.
22
+
23
+ ### Fixed
24
+
25
+ - Hebrew batch STT no longer passes a phrase looped to the token cap (n-gram block plus a per-character zlib compression-ratio check), and re-decodes a chunk failing either gate at sampling temperatures before dropping it (#329). The live A/B measured the median gate with a fail-at-4 word-run gate; the single-window policy and the trim-versus-fail word-run design have not run live.
26
+ - The last chunk of a multi-window upload is never VAD-skipped (a short closing word was lost), and a chunk too short for one VAD window counts as speech.
27
+ - A retry that comes back empty after an earlier attempt failed a gate is a drop (reason=empty_after_retry), logged and counted as one, never as a recovery.
28
+
29
+ ## [0.90.3] - 2026-10-18
30
+
31
+ ### Fixed
32
+
33
+ - Mesh: plain `embedder` / `reranker` on a box that does not host them (the DGX Spark) answered 404 even though several members serve identical lanes, because their fingerprints advertised `quantization: unknown` and the strict pool rule never pools an unknown (#297). Every card profile now declares `quantization = "none"` for both pooling gears (the lanes pass no `--quantization`), rendered as `EMBED_QUANTIZATION=none` / `RERANK_QUANTIZATION=none` and added to `env.example`; `lobes doctor --fix` appends them to existing deployments. The strict rule itself is unchanged.
34
+
7
35
  ## [0.90.2] - 2026-10-18
8
36
 
9
37
  ### Changed
@@ -977,7 +977,9 @@ rollback, restore the backup —, `...-accept-orin-embed.txt`). **UNVALIDATED:**
977
977
  everything beyond code retrieval — prose/docs/math, real image/video/audio
978
978
  retrieval (the probes were synthetic), MRL quality, cross-model agreement —
979
979
  is issue **#296**; the plain-`embedder`-on-the-Spark pooling finding is issue
980
- **#297** (a pre-existing strict-fingerprint rule, not caused by this shape). No
980
+ **#297** (a pre-existing strict-fingerprint rule, not caused by this shape;
981
+ fixed 2026-10-18 by declaring `quantization = "none"` for the embedder and
982
+ reranker in every card profile, so their fingerprints carry a real value). No
981
983
  consumer is switched implicitly: `EIDETIC_EMBED_MODEL` / `COHERENCE_EMBED_MODEL`
982
984
  opt in by lane id and switching means re-embedding. See
983
985
  `docs/orin-embed-deployment.md`, `docs/embeddinggemma-2.md` and `lobes explain
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: lobes-cli
3
- Version: 0.90.2
3
+ Version: 0.91.0
4
4
  Summary: lobes — run, assess, and switch the local vLLM model.
5
5
  Project-URL: Homepage, https://github.com/agentculture/lobes-cli
6
6
  Project-URL: Issues, https://github.com/agentculture/lobes-cli/issues
@@ -0,0 +1,325 @@
1
+ # Hebrew realtime — a duplex Hebrew voice session with tool calling
2
+
3
+ An **opt-in overlay** on top of the realtime audio overlay
4
+ ([`realtime-pipeline.md`](realtime-pipeline.md)): the same `GET /v1/realtime`
5
+ WebSocket session, serving Hebrew. A person speaks Hebrew, the box answers in
6
+ Hebrew, and the model can call tools that the **client** owns. The English
7
+ overlay's files are byte-identical with or without it.
8
+
9
+ If you are building a client, read the contract instead:
10
+ [`contracts/realtime-tool-calling.md`](contracts/realtime-tool-calling.md).
11
+
12
+ > **Status (the #108 rule).** Everything here was built and measured on ONE box
13
+ > — the DGX Spark GB10, 2026-09-18 — from a hand-carried deployment of this
14
+ > branch's wheel. The measurements are real and cited; the *packaged* path
15
+ > (`lobes init --audio --audio-lang he` from a released wheel) is
16
+ > **DECLARED / UNVALIDATED** until an acceptance transcript from that path
17
+ > lands under `docs/evidence/`. No Jetson has run any of it (issue #276).
18
+
19
+ ## The stack
20
+
21
+ | stage | engine | notes |
22
+ |---|---|---|
23
+ | VAD / turn-taking | Silero, `server_vad` | PulseVAD was tried and false-triggered on all four non-speech clips |
24
+ | STT | `ivrit-ai/whisper-large-v3-turbo`, transformers fp16 (`Dockerfile.whisper-stt`, `listen_server_whisper.py`) | ~170–200 ms per turn |
25
+ | generate | the gateway's own `/v1/chat/completions`, `OPENAI_MODEL=multimodal` | on the Spark: `nvidia/Gemma-4-26B-A4B-NVFP4`, `gemma4` tool + reasoning parsers, 32–44 tok/s; native 262144 window since 2026-09-19 (was 32768; `docs/evidence/2026-09-19-accept-multimodal-gemma26b-native-context-spark.txt`) |
26
+ | TTS (shipped default) | Chatterbox **Multilingual**, `language_id="he"`, phonikud niqqud (`Dockerfile.chatterbox-ml`) | seconds per sentence; needs niqqud; samples non-deterministically, hence a runaway guard |
27
+ | TTS (measured best) | **BlueTTS**, CPU ONNX (`Dockerfile.bluetts`, `lobes.realtime.bluetts_server`) | 93–305 ms per sentence, its own G2P, no niqqud wanted — see *BlueTTS* below for why it is not the default |
28
+
29
+ Evidence: `docs/evidence/2026-09-hebrew-*.txt` (seven files) and
30
+ `docs/evidence/2026-09-hebrew-realtime-streaming-bluetts-spark.txt`.
31
+
32
+ ### Three things that are easy to get wrong
33
+
34
+ - **Whisper hallucinates on non-speech** — this fine-tune emits plain text such
35
+ as `תודה רבה` for a door slam, and its `<|nospeech|>` probability reads 0.000.
36
+ The mean token log-probability separates cleanly (speech ≥ −0.12,
37
+ hallucination ≤ −0.58), so the sidecar drops a transcript below
38
+ `STT_MIN_AVG_LOGPROB` (default −0.35; `off` disables). 4/4 non-speech clips
39
+ dropped, 22/22 speech clips kept.
40
+ - **Chatterbox Multilingual without niqqud is unusable for Hebrew** (92 % → ~9 %
41
+ round-trip WER with phonikud), and a Latin-script word derails it.
42
+ - **An NVFP4A16 export of Gemma 4 12B damaged Hebrew** where bf16 and Google's
43
+ QAT checkpoint did not. Check Hebrew output before promoting a quantization.
44
+
45
+ ### Batch transcription: formats and long clips
46
+
47
+ `POST /v1/audio/transcriptions` takes any format the image's ffmpeg decodes —
48
+ m4a/aac, mp3, ogg/opus, webm, flac, and WAV at any bit depth — not only 16-bit
49
+ PCM WAV. A 16-bit RIFF/WAVE upload (the realtime bridge's own turn audio) is
50
+ still read directly and never touches ffmpeg; anything else is transcoded to
51
+ 16 kHz mono PCM16 first, and an undecodable upload is a 400 `invalid_audio`.
52
+
53
+ An upload longer than Whisper's 30 s window is **chunked**, not refused: each
54
+ cut goes at the quietest 20 ms frame in the last 5 s of its window, every
55
+ window is judged on its own (silence skip, gates and retries, below), and the
56
+ non-empty pieces are joined with a space. `STT_MAX_AUDIO_SECONDS` (default 600) caps the
57
+ total; past it the reply is a 413 `clip_too_long`. The upload byte cap
58
+ (`STT_MAX_UPLOAD_BYTES`, 16 MiB) still applies first, so ten minutes of
59
+ uncompressed 16 kHz WAV (~19 MB) needs it raised; a compressed voice note does
60
+ not. MEASURED on the DGX Spark, 2026-10-09, with synthetic BlueTTS speech: an
61
+ 80 s m4a was transcribed in 3 windows in 3.9 s with every sentence intact at
62
+ the seams; mp3, ogg/opus, webm, 24-bit WAV and m4a single sentences each came
63
+ back verbatim. A real microphone recording is still UNVALIDATED (#108).
64
+
65
+ ### Decode quality: loops, retries and silence (issue #329)
66
+
67
+ On a real 56-minute recording, the decode above failed in two ways. A two-word
68
+ phrase looped until the token cap, and a loop is high-confidence, so it passed
69
+ the gate. The gate also dropped 61 of 125 chunks whole with no second try, and
70
+ some of them were real speech. Each chunk now goes through the steps below.
71
+ Each step has a knob whose off value gives back the old decode exactly (for
72
+ `STT_LOGPROB_STAT`, the legacy value `mean`).
73
+
74
+ **Two request policies.** A request of **one** window (30 s or less), which
75
+ covers every realtime turn, and a **multi-window** upload are judged
76
+ differently. The `stt_request` log line names the policy a request used
77
+ (`policy=single_window stat=mean` or `policy=multi_window stat=median`).
78
+
79
+ | | single window (realtime) | multi-window upload |
80
+ |---|---|---|
81
+ | confidence statistic | `mean`, always (the pre-#329 gate) | `STT_LOGPROB_STAT` (default `median`) |
82
+ | decodes per chunk | one greedy decode, never retried | greedy, then `STT_TEMPERATURE_FALLBACK` |
83
+ | word run of 4–7 | trimmed to 3 | trimmed to 3 |
84
+ | word run of 8 or more | trimmed to 3 | fails the chunk: retry, then drop |
85
+ | Silero VAD | never consulted | every chunk except the last |
86
+
87
+ The −0.35 threshold was measured on the **mean**. A short silence
88
+ hallucination can fail the mean while passing a median gate: in live data,
89
+ 4 tokens with log-probabilities −1.9, −0.1, −0.1, −0.2 have a mean of −0.58
90
+ and a median of −0.15. Among short (6 tokens or fewer) first attempts that
91
+ failed the mean gate, 7 of 24 would have passed a median gate. A long upload
92
+ gains more from the median than it loses, but a realtime turn is usually
93
+ short, so it keeps the mean. It also keeps one greedy decode: re-sampling a
94
+ silent turn's hallucination at a higher temperature until one sample passes
95
+ would add up to two decodes of latency for nothing.
96
+
97
+ 1. **Silence skipping (`STT_VAD`).** On an upload longer than one window,
98
+ Silero VAD reads each chunk first. Three kinds of chunk are never skipped:
99
+ a single-window request (the bridge's own VAD already opened that turn, and
100
+ a one-word reply may hold very little speech), the **last** chunk of an
101
+ upload (`plan_chunks` leaves it 0–5 s long, so a closing word may hold less
102
+ than `STT_VAD_MIN_SPEECH_MS` of speech), and a chunk shorter than one 32 ms
103
+ VAD window (there is nothing to judge, so it counts as speech). If Silero
104
+ finds less than `STT_VAD_MIN_SPEECH_MS` of speech, Whisper never decodes
105
+ the chunk, so a silent chunk cannot turn into `תודה רבה`. The scan stops as
106
+ soon as it has found enough speech, so a speech chunk costs only a few VAD
107
+ calls. The image installs the `silero-vad` wheel `--no-deps`, because its
108
+ torchaudio dependency would replace the base image's torch. The server loads
109
+ the bundled TorchScript model by path. If Silero fails to load, or fails on
110
+ a call, the server logs a warning and decodes the chunk as before.
111
+ 2. **Loop prevention at decode time.** `STT_NO_REPEAT_NGRAM_SIZE` sets the
112
+ transformers n-gram block. `STT_REPETITION_PENALTY` is off by default,
113
+ because it penalises every recurring token, Hebrew prefix letters included.
114
+ Beam search was considered and left out. It would cost about 4× the GPU
115
+ time on a shared box, and the per-token log-probabilities the gate reads
116
+ would need different bookkeeping.
117
+ 3. **Gates per attempt.** The first is the confidence gate,
118
+ `STT_MIN_AVG_LOGPROB` (−0.35) on the request policy's statistic (above).
119
+ The second is OpenAI Whisper's zlib compression ratio,
120
+ `STT_COMPRESSION_RATIO_MAX`, default 2.4, on both policies. The ratio is
121
+ taken one byte per character, not over UTF-8. Every Hebrew letter shares
122
+ one UTF-8 lead byte, which alone pushes ordinary Hebrew prose to about 2.3.
123
+ Counted per character, the same prose scores about 1.7, like English. Those
124
+ figures come from synthetic text, not from a recording. The third is the
125
+ **word-run failure check**, `STT_WORD_RUN_FAIL`, default 8, on multi-window
126
+ uploads only (next step).
127
+ 4. **Word runs: trim, or fail only when far beyond speech.** A word run is one
128
+ word, or one two-word phrase, repeated back to back. Words are Unicode
129
+ word tokens compared case-folded and without niqqud, so punctuation between
130
+ the repeats does not break the run. The n-gram block misses such a run (the
131
+ punctuation tokens make every n-gram different), and so does the
132
+ compression ratio (one short run inside a full chunk of speech). Emphatic
133
+ speech repeats words too ("no no no no, I disagree", or a realtime "yes yes
134
+ yes yes"), and failing the whole chunk for it would drop 30 s of correct
135
+ text. So a run of `STT_MAX_WORD_RUN` (4) or more is **trimmed** to
136
+ `STT_MAX_WORD_RUN − 1` repeats, and the rest of the chunk is kept. The cut
137
+ goes from the last kept repeat to the end of the run, so the punctuation
138
+ and words after it follow on. Only a run of `STT_WORD_RUN_FAIL` (8) or
139
+ more, far beyond normal speech, fails a multi-window chunk with
140
+ `reason=word_run`. A single window only trims. The trade-off: the live A/B
141
+ below found hallucinated one-word runs of 11 and 5, both absent from a
142
+ reference transcript. With these defaults the 11 is re-decoded or dropped,
143
+ but the 5 is trimmed to 3, so three words of that hallucination stay in the
144
+ text.
145
+ 5. **Retry before dropping (`STT_TEMPERATURE_FALLBACK`, multi-window only).**
146
+ A chunk that fails any gate is decoded again at each sampling temperature
147
+ in turn. Sampling uses the full distribution, and the gate undoes the
148
+ temperature, so it reads the same quantity every time. The first result
149
+ that passes every gate is kept. If none passes, the chunk is dropped, as
150
+ before, with the failing gates as its `reason` (`low_logprob`,
151
+ `compression_ratio`, `word_run`). An empty or tags-only transcript on the
152
+ first attempt counts as silence and is never retried. An empty retry after
153
+ a failed attempt is a **drop** (`reason=empty_after_retry`), not a
154
+ recovery: the first attempt heard something, and it is gone.
155
+
156
+ | knob | default | off | what it does |
157
+ |---|---|---|---|
158
+ | `STT_LOGPROB_STAT` | `median` | `mean` | Which statistic the confidence gate reads on a multi-window upload. `median` ignores a few rare tokens, such as a name, in an otherwise confident chunk. A single window always reads `mean`. The log lines carry both. |
159
+ | `STT_NO_REPEAT_NGRAM_SIZE` | `6` | `0` | Blocks any repeated token n-gram within a chunk. |
160
+ | `STT_REPETITION_PENALTY` | `1.0` | `1.0` | transformers' repetition penalty. `1.1` is the issue's suggestion. |
161
+ | `STT_COMPRESSION_RATIO_MAX` | `2.4` | `off` | Treats a chunk whose text compresses better than this as a loop. |
162
+ | `STT_MAX_WORD_RUN` | `4` | `0` / `off` | Trims a run of one word or two-word phrase this long to one fewer repeats. Values below 2 fall back to the default. |
163
+ | `STT_WORD_RUN_FAIL` | `8` | `0` / `off` | Fails a multi-window chunk with a run this long (retry, then drop). Values below 2 fall back to the default. |
164
+ | `STT_TEMPERATURE_FALLBACK` | `0.2,0.4` | `off` | Re-decode temperatures for a failing multi-window chunk. Each one is another Whisper decode. |
165
+ | `STT_VAD` | `auto` | `off` | Skips non-speech chunks of a multi-window upload with Silero before decoding. |
166
+ | `STT_VAD_THRESHOLD` | `0.5` | — | Silero speech probability per 32 ms window. |
167
+ | `STT_VAD_MIN_SPEECH_MS` | `250` | — | How much speech makes a chunk worth decoding. |
168
+
169
+ **Off the event loop.** The handler runs the whole transcription (resample,
170
+ VAD scan and every Whisper decode) in a worker thread, as it already did the
171
+ ffmpeg transcode, so `/v1/health/ready` answers while a long upload decodes.
172
+ One transcription runs at a time, behind one lock, so concurrent requests
173
+ never share the GPU or Silero's recurrent state. A realtime turn that arrives
174
+ during a long upload still waits for that upload to finish.
175
+
176
+ **Observability.** The stt container logs one line for each retried, dropped,
177
+ trimmed or skipped chunk:
178
+
179
+ ```text
180
+ stt_chunk event=retry chunk=3/18 attempt=0 temperature=0.0 reason=compression_ratio avg_logprob=-0.04 median_logprob=-0.01 compression_ratio=9.80 word_run=30 policy=multi_window stat=median ... tokens=440
181
+ stt_chunk event=dropped chunk=7/18 attempt=2 temperature=0.4 reason=low_logprob ... text='...'
182
+ stt_chunk event=dropped chunk=8/18 attempt=1 temperature=0.2 reason=empty_after_retry ... previous_reason=compression_ratio
183
+ stt_chunk event=trimmed chunk=5/18 word_run=5 runs=1 max_word_run=4
184
+ stt_chunk event=skipped chunk=9/18 reason=no_speech
185
+ ```
186
+
187
+ It also logs one summary line per request:
188
+ `stt_request policy= stat= chunks= decoded= vad_skipped= retried= recovered= dropped= trimmed= decodes= seconds=`.
189
+ Clients cannot see any of this yet. A `dropped[]` field and per-segment
190
+ `avg_logprob` / `compression_ratio` wait for `response_format=verbose_json`
191
+ (#328).
192
+
193
+ **Live A/B, DGX Spark, 2026-10-23 — why the default is now the median.** The
194
+ first build of this section ran on the live Hebrew `stt` lane against two
195
+ private recordings, cut into 16 requests of 480 s (269 chunks). Counts only:
196
+
197
+ - **Loops are fixed.** The longest run of one phrase fell from 220 (pre-#329)
198
+ to 3 at the defaults of the time.
199
+ - **The mean gate was the binding constraint.** It still dropped 118 of 215
200
+ decoded chunks (55 %); retries recovered 7. Every drop was `low_logprob`.
201
+ - **The median gate dropped 39 of 215 (18 %)**, and every window then carried
202
+ at least as much text as a reference transcript of the same span (a rough
203
+ speech reference, not ground truth). That is why `median` became the
204
+ multi-window default.
205
+ - **It let through a confident hallucination.** In two windows a short word
206
+ was repeated 11 and 5 times in a row, with punctuation between, and a
207
+ two-word run of 5 sat in the same span. The word was absent from the
208
+ reference transcript. That is what the word-run knobs were added for.
209
+ - Silero loaded in the built image and skipped 54 of the 269 chunks.
210
+
211
+ A second run measured the median default with a word-run gate that **failed**
212
+ the chunk at 4 repeats (an earlier design of step 4): still 39 of 215 dropped
213
+ (18 %), the longest run of one phrase 3, three chunks hitting the word-run
214
+ gate. 15 of the 16 requests in both runs were multi-window. The 16th, the
215
+ 20 s tail of one recording, was a single window: it returned 6 characters
216
+ in the second run, where the pre-#329 build returned none. That one request
217
+ is the only single-window evidence, and it predates the single-window
218
+ policy.
219
+
220
+ **Status (#108).** The single-window/multi-window split, the trim-versus-fail
221
+ word-run design, the never-skipped last chunk, `empty_after_retry` and the
222
+ off-loop, serialized transcription are unit-tested with a fake decoder and a
223
+ fake VAD only; none of them has run live. 18 % still misses the issue's 10 %
224
+ drop target. To validate, re-run the recordings on the live lane, plus a set
225
+ of short realtime turns, and read the `stt_request` and `stt_chunk` lines.
226
+ Acceptance means no phrase repeated more than 3 times in a row, fewer than
227
+ 10 % of non-silent chunks dropped, and still no text from silence.
228
+
229
+ ## Latency: what was built, and what it bought
230
+
231
+ Measured live, a human on a reSpeaker XVF3800, from the moment the server
232
+ decides the turn ended to the first audio byte:
233
+
234
+ | configuration | first audio |
235
+ |---|---|
236
+ | whole-reply generate + Chatterbox Multilingual | 2.6 s (one sentence), 7.3 s (longer) |
237
+ | + sentence streaming (`GENERATE_STREAM`, default on) + BlueTTS | 0.67–1.0 s |
238
+ | + hidden speculation (`VAD_EAGER_MS=250`) | **1–113 ms** |
239
+
240
+ …plus, always, the silence the VAD waits through before it believes the turn
241
+ ended (`VAD_SILENCE_MS`). Once speculation is on, that wait is essentially the
242
+ whole perceived delay:
243
+
244
+ ```text
245
+ perceived delay ≈ max( VAD_SILENCE_MS , VAD_EAGER_MS + pipeline )
246
+ pipeline ≈ 600 ms = STT ~170 + first clause ~300 + TTS ~120
247
+ ```
248
+
249
+ | knob | default | what it does |
250
+ |---|---|---|
251
+ | `GENERATE_STREAM` | `true` | Stream the generate call; speak sentence by sentence. `false` is the exact previous path. **On for every language, English included.** |
252
+ | `REPLY_FIRST_CLAUSE_MIN_CHARS` | `24` | How long the opening clause must be before a comma may end the first spoken piece. `5` on the Spark: first audio ~1.1 s → ~0.6 s, at the price of a short first piece. |
253
+ | `VAD_MIN_LEVEL_PCT` | `0` (off) | **Ignore quiet voices** (background talk, a TV, the next room). A chunk counts as speech only while the PEAK input level — held ~250 ms, like a level meter — is at least this % of full scale; below it, speech opens no turn, interrupts no reply and does not keep a turn open. Silero cannot do this: a far voice scores as high as a near one. On a reSpeaker direct speech peaks at 15–55 % and the room floor at 1–2 %, so 3–5 is a sensible start (`4` on the Spark). Peak, not RMS — speech RMS is only 5–9 %. Depends on microphone gain and AGC: tune per device. |
254
+ | `VAD_EAGER_MS` | `0` (off) | **Hidden speculation.** At this much provisional silence the bridge runs STT → generate → TTS out of sight. Speech resumes → discarded without trace. Turn confirmed → adopted, but only if the real generate request is byte-identical to the speculative one. Costs a wasted STT + generate on every mid-sentence pause. |
255
+ | `CONTINUATION_WINDOW_MS` | `0` (off) | **Continuation merge.** An onset this soon after a silence commit is the speaker carrying on: the reply stops (inside the barge-in guard window too), the half-turn leaves history, both halves are re-transcribed as one turn. One take-back per utterance. What makes a short `VAD_SILENCE_MS` affordable. |
256
+ | `CONTINUATION_TOOL_HOLD_MS` | `500` | With the merge on, a finished tool call is held this long after the commit — a call the client already has cannot be taken back. Speech is never held. A fixed cost on every tool turn. |
257
+
258
+ The Spark runs `VAD_SILENCE_MS=500`, `VAD_EAGER_MS=160`,
259
+ `CONTINUATION_WINDOW_MS=1200`: plain replies 328–370 ms after the commit
260
+ (~830–870 ms after the speaker stops), tool turns 1.16–1.64 s.
261
+
262
+ **Honest limits.** The continuation merge has been proven on a recording only —
263
+ no live session has yet produced one. A noise burst with no words in it still
264
+ counts as a barge-in. A merged turn sends two `transcription.completed` events
265
+ (the half, then the whole) and nothing on the wire marks the second as
266
+ superseding the first. English words inside Hebrew speech are misheard and hard
267
+ to follow when spoken (issue #277).
268
+
269
+ ## BlueTTS — built, measured, deliberately not the default
270
+
271
+ `lobes.realtime.bluetts_server` is a drop-in for the `chatterbox` service (same
272
+ port keys, same `POST /v1/audio/synthesize` → raw PCM16 mono 24 kHz). CPU-only,
273
+ resamples its native 44.1 kHz, strips any niqqud (it runs its own RenikudPlus
274
+ G2P — leave the bridge's `PHONIKUD_MODEL_PATH` unset), and reports ready only
275
+ after a warm-up synthesis has loaded that G2P.
276
+
277
+ The engine **code** (github.com/maxmelichov/BlueTTS) is MIT and pinned by
278
+ commit; `Dockerfile.bluetts` installs its dependencies from the engine's own
279
+ `uv.lock`, because an unpinned resolve picked a `renikud-plus` that 404s at
280
+ warm-up. The **weights** repo declared **no licence** when this was written, so:
281
+
282
+ - nothing in this repo downloads the weights or names their repo as a default;
283
+ - the operator downloads them deliberately and mounts the directory at
284
+ `BLUETTS_ONNX_DIR`;
285
+ - the Hebrew overlay's shipped voice stays Chatterbox Multilingual, and no
286
+ compose file wires BlueTTS in.
287
+
288
+ To run it, add a service built from `Dockerfile.bluetts` with that mount and
289
+ point the bridge's `TTS_URL` at it. `BLUETTS_VOICE` (`noa`), `BLUETTS_STEPS`
290
+ (5; 2–3 buys ~20–25 %, quality not auditioned), `BLUETTS_SPEED`.
291
+
292
+ ## Audio hardware notes (both cost hours)
293
+
294
+ - **Check the pipewire card profile first.** The reSpeaker XVF3800 had flipped
295
+ to its *digital* output at 34 % volume: almost nothing reached the speaker on
296
+ its 3.5 mm jack, its echo canceller reported `converged: false` all day, and
297
+ the session interrupted itself (6 times in 7 turns). `pactl set-card-profile
298
+ <card> output:analog-stereo+input:analog-stereo` plus full sink volume →
299
+ `converged: true`, zero self-interruptions. The profile can flip when the
300
+ device re-enumerates, and the source/sink numeric suffixes change with it.
301
+ - **Wire the speaker to the device that owns the microphone.** An echo
302
+ canceller only cancels what it plays itself; audio sent to a monitor over
303
+ HDMI has no reference and makes echo worse. For the same reason you cannot
304
+ test a session by playing a recording through that speaker — the canceller
305
+ removes it.
306
+ - **A client must drain its player before exiting.** The server delivers ahead
307
+ of the playhead; closing the player on `response.done` cut replies
308
+ mid-sentence. In a browser the same gap shows up as stutter unless playback
309
+ (re)starts a jitter buffer ahead of now.
310
+
311
+ ## Selecting it
312
+
313
+ ```bash
314
+ lobes init --fleet --audio --audio-lang he # dry-run; add --apply
315
+ ```
316
+
317
+ materialises `docker-compose.audio-he.yml`, `env.audio-he.example` (merged
318
+ append-only into `.env`), `Dockerfile.whisper-stt`, `Dockerfile.chatterbox-ml`,
319
+ `Dockerfile.bluetts` and `listen_server_whisper.py`; `lobes fleet up` includes
320
+ the overlay when it is present. `--audio` alone, or `--audio-lang en`, is
321
+ exactly the English overlay. Language is an overlay choice — not a shape, not a
322
+ variation.
323
+
324
+ `GET /capabilities` names what is served: `stt`/`tts` carry the declared
325
+ `model`, `runtime` and — only when declared — `language`.
@@ -90,12 +90,18 @@ feasible = true
90
90
  model = "Qwen/Qwen3-Embedding-0.6B"
91
91
  gpu_mem_util = 0.06
92
92
  max_model_len = 8192
93
+ # quantization "none": the lane passes no --quantization, so the engine loads the
94
+ # bf16 checkpoint as-is. Declared so the mesh fingerprint is a real value, not
95
+ # "unknown", and identical members pool on a box that does not host them (#297).
96
+ quantization = "none"
93
97
 
94
98
  [roles.reranker]
95
99
  feasible = true
96
100
  model = "Qwen/Qwen3-Reranker-0.6B"
97
101
  gpu_mem_util = 0.06
98
102
  max_model_len = 8192
103
+ # quantization "none": as for the embedder above (#297).
104
+ quantization = "none"
99
105
 
100
106
  # The opt-in `innereye` render tenant (ComfyUI, issue #82) is vetoed on an
101
107
  # unrecognised card for the same reason as muse/worker/associate: this
@@ -494,6 +494,10 @@ feasible = true
494
494
  model = "Qwen/Qwen3-Embedding-0.6B"
495
495
  gpu_mem_util = 0.06
496
496
  max_model_len = 8192
497
+ # quantization "none": the lane passes no --quantization, so the engine loads the
498
+ # bf16 checkpoint as-is. Declared so the mesh fingerprint is a real value, not
499
+ # "unknown", and identical members pool on a box that does not host them (#297).
500
+ quantization = "none"
497
501
  # attention_backend: overlaid from lobes.machines.get("orin") — TRITON_ATTN, a
498
502
  # conservative first-boot carry-over of Thor's sm_110 pooling divergence that
499
503
  # was NOT independently re-tested on sm_87. This gear booted healthy that way
@@ -504,6 +508,8 @@ feasible = true
504
508
  model = "Qwen/Qwen3-Reranker-0.6B"
505
509
  gpu_mem_util = 0.06
506
510
  max_model_len = 8192
511
+ # quantization "none": as for the embedder above (#297).
512
+ quantization = "none"
507
513
  # attention_backend + enforce_eager: overlaid from lobes.machines.get("orin") —
508
514
  # TRITON_ATTN + enforce_eager=true, the same carried-over Jetson safe-boot
509
515
  # choice. This gear booted healthy that way and its ordering probe passed
@@ -106,12 +106,18 @@ feasible = true
106
106
  model = "Qwen/Qwen3-Embedding-0.6B"
107
107
  gpu_mem_util = 0.06
108
108
  max_model_len = 8192
109
+ # quantization "none": the lane passes no --quantization, so the engine loads the
110
+ # bf16 checkpoint as-is. Declared so the mesh fingerprint is a real value, not
111
+ # "unknown", and identical members pool on a box that does not host them (#297).
112
+ quantization = "none"
109
113
 
110
114
  [roles.reranker]
111
115
  feasible = true
112
116
  model = "Qwen/Qwen3-Reranker-0.6B"
113
117
  gpu_mem_util = 0.06
114
118
  max_model_len = 8192
119
+ # quantization "none": as for the embedder above (#297).
120
+ quantization = "none"
115
121
 
116
122
  # --- innereye: the declared peak-GiB figure (issue #268, plan
117
123
  # innereye-lobes-hosts-comfyui, t6) --------------------------------------
@@ -141,6 +141,10 @@ feasible = true
141
141
  model = "Qwen/Qwen3-Embedding-0.6B"
142
142
  gpu_mem_util = 0.06
143
143
  max_model_len = 8192
144
+ # quantization "none": the lane passes no --quantization, so the engine loads the
145
+ # bf16 checkpoint as-is. Declared so the mesh fingerprint is a real value, not
146
+ # "unknown", and identical members pool on a box that does not host them (#297).
147
+ quantization = "none"
144
148
  # attention_backend: overlaid from the shared SM_110 trait — TRITON_ATTN
145
149
  # (the FlashInfer/FLASH_ATTN pooling path hangs on sm_110).
146
150
 
@@ -149,5 +153,7 @@ feasible = true
149
153
  model = "Qwen/Qwen3-Reranker-0.6B"
150
154
  gpu_mem_util = 0.06
151
155
  max_model_len = 8192
156
+ # quantization "none": as for the embedder above (#297).
157
+ quantization = "none"
152
158
  # attention_backend + enforce_eager: overlaid from the shared SM_110 trait —
153
159
  # TRITON_ATTN + enforce_eager=true (CUDA-graph capture is unstable here).
@@ -39,6 +39,15 @@ RUN pip install --no-cache-dir uv \
39
39
  fastapi \
40
40
  "uvicorn[standard]"
41
41
 
42
+ # Silero VAD (issue #329, STT_VAD) — skips non-speech chunks before Whisper
43
+ # decodes them. The same package and version the realtime bridge pins in
44
+ # uv.lock, but installed --no-deps: its declared torchaudio dependency would
45
+ # pull a torchaudio wheel pinned to a DIFFERENT torch and replace the base
46
+ # image's validated one. listen_server_whisper.py loads the wheel's bundled
47
+ # TorchScript model by path (never `import silero_vad`, whose __init__
48
+ # imports torchaudio), and falls back to decoding every chunk if it cannot.
49
+ RUN uv pip install --system --no-cache-dir --no-deps "silero-vad==6.2.1"
50
+
42
51
  # Do NOT bake STT_MODEL into the image — it is served from the mounted HF
43
52
  # cache volume (docker-compose.audio.yml's `stt` service already mounts
44
53
  # ${HF_CACHE}), exactly like every other fleet lane. HF_HUB_DISABLE_XET=1
@@ -87,6 +87,41 @@ services:
87
87
  # 'תודה רבה'). Measured 2026-09-18: speech >= -0.12, hallucinations <= -0.58.
88
88
  # `off` disables the gate.
89
89
  - STT_MIN_AVG_LOGPROB=${STT_MIN_AVG_LOGPROB:--0.35}
90
+ # Decode-quality knobs (issue #329; docs/hebrew-realtime.md). Each has
91
+ # an OFF value that restores the pre-#329 decode exactly.
92
+ # STT_LOGPROB_STAT: `median` (default since the 2026-10-23 live A/B;
93
+ # ignores a few rare tokens in an otherwise confident chunk) or `mean`
94
+ # (the legacy statistic -0.35 was first measured on). Applies to
95
+ # multi-window uploads only: a single-window request (every realtime
96
+ # turn) always uses the mean and one greedy decode, as before #329.
97
+ - STT_LOGPROB_STAT=${STT_LOGPROB_STAT:-median}
98
+ # STT_NO_REPEAT_NGRAM_SIZE: block any repeated token n-gram at decode
99
+ # time (stops a phrase looping to the token cap). 0 = off.
100
+ - STT_NO_REPEAT_NGRAM_SIZE=${STT_NO_REPEAT_NGRAM_SIZE:-6}
101
+ # STT_REPETITION_PENALTY: transformers' repetition penalty. 1.0 = off
102
+ # (default: it penalises every recurring Hebrew prefix letter too).
103
+ - STT_REPETITION_PENALTY=${STT_REPETITION_PENALTY:-1.0}
104
+ # STT_COMPRESSION_RATIO_MAX: a chunk whose text compresses better than
105
+ # this (zlib, one byte per character) is a loop. `off` disables.
106
+ - STT_COMPRESSION_RATIO_MAX=${STT_COMPRESSION_RATIO_MAX:-2.4}
107
+ # STT_MAX_WORD_RUN: a run of one word (or two-word phrase) this many
108
+ # times in a row is TRIMMED to one fewer repeats. 0/`off` disables.
109
+ - STT_MAX_WORD_RUN=${STT_MAX_WORD_RUN:-4}
110
+ # STT_WORD_RUN_FAIL: a run this long fails a multi-window chunk like a
111
+ # loop (retry, then drop); a single window only trims. 0/`off` disables.
112
+ - STT_WORD_RUN_FAIL=${STT_WORD_RUN_FAIL:-8}
113
+ # STT_TEMPERATURE_FALLBACK: sampling temperatures a multi-window chunk
114
+ # failing any gate is re-decoded at before it is dropped (a single
115
+ # window is never retried). `off` = drop at once.
116
+ - STT_TEMPERATURE_FALLBACK=${STT_TEMPERATURE_FALLBACK:-0.2,0.4}
117
+ # STT_VAD: `auto` skips non-speech chunks of a multi-window upload with
118
+ # Silero before decoding (never a single-window/realtime turn; falls
119
+ # back to decoding everything if Silero cannot load); `off`.
120
+ - STT_VAD=${STT_VAD:-auto}
121
+ # STT_VAD_THRESHOLD / STT_VAD_MIN_SPEECH_MS: a chunk is speech once this
122
+ # many ms of 32 ms windows score at or above the threshold.
123
+ - STT_VAD_THRESHOLD=${STT_VAD_THRESHOLD:-0.5}
124
+ - STT_VAD_MIN_SPEECH_MS=${STT_VAD_MIN_SPEECH_MS:-250}
90
125
  # STT_RUNTIME: informational — names the serving stack for
91
126
  # GET /capabilities; the container fixed on transformers, not a
92
127
  # switchable knob.
@@ -117,6 +117,83 @@ STT_LANGUAGE=he
117
117
  # real speech >= -0.12, hallucinations <= -0.58. `off` disables it.
118
118
  STT_MIN_AVG_LOGPROB=-0.35
119
119
 
120
+ # --- Decode quality (issue #329) ------------------------------------------
121
+ # Measured on one real 56-minute recording before these knobs existed: a
122
+ # two-word phrase looped to the token cap (a loop is HIGH-confidence, so the
123
+ # gate above passes it) and half the chunks were dropped whole, some of them
124
+ # real speech. Every knob below has an OFF value that restores that previous
125
+ # decode exactly. The defaults are starting points (the issue's and OpenAI
126
+ # Whisper's); a live A/B on the DGX Spark (2026-10-23) then moved
127
+ # STT_LOGPROB_STAT to `median` and added the word-run knobs — see
128
+ # docs/hebrew-realtime.md. Every retried, dropped, trimmed or skipped chunk
129
+ # logs one `stt_chunk event=...` line (reason, avg/median log-probability,
130
+ # compression ratio, word run, attempt), and every request one
131
+ # `stt_request policy=...` summary line, in the stt container's log.
132
+ #
133
+ # Two request policies. A SINGLE-window request (<= 30 s — every realtime
134
+ # turn) keeps the pre-#329 gate exactly: the MEAN log-probability against
135
+ # STT_MIN_AVG_LOGPROB, one greedy decode, no retry, and a word run only
136
+ # trimmed. A MULTI-window upload uses STT_LOGPROB_STAT, the
137
+ # STT_TEMPERATURE_FALLBACK ladder and STT_WORD_RUN_FAIL.
138
+
139
+ # STT_LOGPROB_STAT: which statistic STT_MIN_AVG_LOGPROB is compared with on
140
+ # a multi-window upload. `median` (default — robust to a few rare tokens, e.g.
141
+ # a name, in an otherwise confident chunk; on the live A/B it dropped 39 of
142
+ # 215 decoded chunks against the mean's 118) or `mean` (the legacy statistic
143
+ # -0.35 was first measured on). A single-window request always uses `mean`.
144
+ STT_LOGPROB_STAT=median
145
+
146
+ # STT_NO_REPEAT_NGRAM_SIZE: forbid any token n-gram from repeating within a
147
+ # chunk at decode time. 0 = off.
148
+ STT_NO_REPEAT_NGRAM_SIZE=6
149
+
150
+ # STT_REPETITION_PENALTY: transformers' repetition penalty (>= 1.0). 1.0 = off,
151
+ # the default: it penalises EVERY recurring token, including Hebrew's prefix
152
+ # letters, so it is an accuracy risk the n-gram block is not. 1.1 to try it.
153
+ STT_REPETITION_PENALTY=1.0
154
+
155
+ # STT_COMPRESSION_RATIO_MAX: OpenAI Whisper's loop check — a chunk whose text
156
+ # compresses better than this under zlib is treated as a loop. Measured one
157
+ # byte per character, so ordinary Hebrew scores like English (~1.6-1.7).
158
+ # `off` disables.
159
+ STT_COMPRESSION_RATIO_MAX=2.4
160
+
161
+ # STT_MAX_WORD_RUN: a run of one word, or one two-word phrase, this many
162
+ # times in a row (punctuation between does not break the run) is TRIMMED to
163
+ # STT_MAX_WORD_RUN - 1 repeats; the rest of the chunk is kept. 4 = three
164
+ # repeats are left alone, 4-7 become three ("no no no no, I disagree" is
165
+ # ordinary speech). 0/`off` disables trimming.
166
+ STT_MAX_WORD_RUN=4
167
+
168
+ # STT_WORD_RUN_FAIL: a run this long is far beyond normal speech, so on a
169
+ # multi-window upload it fails the chunk like a loop: retried, then dropped
170
+ # with reason=word_run. Catches the confident short-word hallucination the
171
+ # n-gram block and the compression ratio miss (the live A/B found runs of 11
172
+ # and 5: 11 is re-decoded or dropped, 5 is trimmed to 3). A single-window
173
+ # request only trims. 0/`off` never fails on a word run.
174
+ STT_WORD_RUN_FAIL=8
175
+
176
+ # STT_TEMPERATURE_FALLBACK: comma-separated sampling temperatures in (0, 1]. A
177
+ # multi-window chunk failing the confidence gate, the compression check or
178
+ # the word-run check is re-decoded at each in turn and the first result
179
+ # passing all three is kept; if none does (or a retry comes back empty), the
180
+ # chunk is dropped. Each retry is one more Whisper decode. A single-window
181
+ # request is never retried. `off` = no retry.
182
+ STT_TEMPERATURE_FALLBACK=0.2,0.4
183
+
184
+ # STT_VAD: `auto` runs Silero VAD over each chunk of an upload longer than one
185
+ # 30 s window and skips the ones without speech, so silence never reaches
186
+ # Whisper (where it hallucinates text). A single-window request — every
187
+ # realtime turn — is never skipped, nor is the last (short) chunk of an
188
+ # upload or a chunk under one 32 ms VAD window. Falls back to decoding every
189
+ # chunk when Silero cannot load. `off` disables.
190
+ STT_VAD=auto
191
+
192
+ # STT_VAD_THRESHOLD / STT_VAD_MIN_SPEECH_MS: a chunk counts as speech once at
193
+ # least STT_VAD_MIN_SPEECH_MS of its 32 ms windows score >= STT_VAD_THRESHOLD.
194
+ STT_VAD_THRESHOLD=0.5
195
+ STT_VAD_MIN_SPEECH_MS=250
196
+
120
197
  # === Hebrew TTS: Chatterbox Multilingual sidecar (hebrew-realtime plan,
121
198
  # task t11 — approved deviation d5, operator 2026-09-18) ===================
122
199
  # docker-compose.audio-he.yml's `chatterbox` service overrides
@@ -149,6 +149,9 @@ EMBED_MAX_MODEL_LEN=8192
149
149
  # 0.06 load-tested 2026-06-19; 0.025 fails with "No available memory for the cache
150
150
  # blocks" (vLLM's pooling runner still reserves a cache-block budget).
151
151
  EMBED_GPU_MEM_UTIL=0.06
152
+ # Declared for the mesh fingerprint only (the lane passes no --quantization): a real
153
+ # value lets identical embedder members pool on a box that does not host one (#297).
154
+ EMBED_QUANTIZATION=none
152
155
  # Internal URL the gateway uses to reach the embedding backend.
153
156
  EMBED_URL=http://vllm-embed:8000
154
157
  # Attention backend for the pooling runner. "auto" (the shipped default) is
@@ -215,6 +218,8 @@ RERANK_MODEL=Qwen/Qwen3-Reranker-0.6B
215
218
  RERANK_SERVED_NAME=Qwen/Qwen3-Reranker-0.6B
216
219
  RERANK_MAX_MODEL_LEN=8192
217
220
  RERANK_GPU_MEM_UTIL=0.06
221
+ # As EMBED_QUANTIZATION above (#297).
222
+ RERANK_QUANTIZATION=none
218
223
  # Internal URL the gateway uses to reach the reranker backend.
219
224
  RERANK_URL=http://vllm-rerank:8000
220
225
  # Attention backend for the pooling runner — same "auto" sentinel/rationale as