lobes-cli 0.90.3__tar.gz → 0.92.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.
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/CHANGELOG.md +32 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/CLAUDE.md +15 -2
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/PKG-INFO +1 -1
- lobes_cli-0.92.0/docs/evidence/2026-10-26-accept-nemotron-bolt-spark.txt +117 -0
- lobes_cli-0.92.0/docs/hebrew-realtime.md +325 -0
- lobes_cli-0.92.0/docs/nemotron-3.5-bolt-74b-a9b-24gb.md +105 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/nvidia-qwen3.6-35b-a3b-nvfp4.md +8 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/catalog.py +80 -3
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/switch.py +23 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/thor-worker.toml +7 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_parser.py +4 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.whisper-stt +9 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/docker-compose.audio-he.yml +35 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/env.audio-he.example +77 -0
- lobes_cli-0.92.0/lobes/templates/fleet/listen_server_whisper.py +1503 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/pyproject.toml +1 -1
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/no-pool-gateway.json +2 -2
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/overlays/audio-he-defaults.env +10 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/switch-plans.txt +16 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_associate_role.py +3 -1
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_audio_he_stt_compose.py +63 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_catalog.py +41 -23
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_catalog_tiers.py +3 -1
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_runtime.py +37 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_proxy.py +3 -1
- lobes_cli-0.92.0/tests/test_listen_server_whisper.py +1337 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_proxy_integration.py +5 -2
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_roles.py +3 -1
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_whisper_stt_dockerfile.py +23 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/uv.lock +12 -12
- lobes_cli-0.90.3/docs/hebrew-realtime.md +0 -161
- lobes_cli-0.90.3/lobes/templates/fleet/listen_server_whisper.py +0 -724
- lobes_cli-0.90.3/tests/test_listen_server_whisper.py +0 -544
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.agex/data/pr/323/await.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.agex/data/pr/events.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/ask-colleague/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/ask-colleague/prompts/review.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/ask-colleague/prompts/write.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/challenge/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/cicd/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/cicd/scripts/workflow.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/communicate/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/deviate/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/lobes-deploy/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/lobes-deploy/scripts/lobes-compose.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/model-runner/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/model-runner/scripts/model-runner.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/recall/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/recall/scripts/recall.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/remember/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/remember/scripts/remember.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/run-tests/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/scope/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/sonarclaude/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/spec-to-plan/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/summarize-delivery/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/think/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/think/scripts/think.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/validate-delivery/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/version-bump/SKILL.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills/version-bump/scripts/bump.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.claude/skills.local.yaml.example +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/current +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/current_plan +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/capacity-relative-pool-routing.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/cortex-replica-pool-199.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/deployment-lock-per-box.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/dspark-speculation-on-the-spark-cortex.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/flash-next-worker-on-thor.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/hand-lobe-lfm2-5-1-2b.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/hebrew-realtime.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/innereye-lobes-hosts-comfyui.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/lane-safety-and-quality-304-307-308-309.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/lightning-on-orin.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/mesh-boot-window-and-capabilities-advert.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/mesh-brain-join.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/mesh-pool-load-sharing.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/nemotron-lightning-worker.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/orin-associate-at-1m.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/orin-decision-models.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/orin-embedding-specialist.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/qwen3-8-gguf-llamacpp.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/realtime-voice-to-voice-astro-test-site-151.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/reranker-calibration-227.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/thor-cortex-speculation.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/unsloth-qat-senses-first-class-orin-variation.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/deliveries/vllm-0-31-0-fleet.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/capacity-relative-pool-routing.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/chatterbox-on-thor-sm-110.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/compose-chain-unification-init-repair-doctor-stale.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/cortex-replica-pool-199.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/deployment-lock-per-box.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/dspark-speculation-on-the-spark-cortex.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/flash-next-on-vllm.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/flash-next-worker-on-thor.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/hand-lobe-lfm2-5-1-2b.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/hebrew-realtime.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/innereye-lobes-hosts-comfyui.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lane-safety-and-quality-304-307-308-309.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lightning-on-orin.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lightning-on-thor.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-adds-a-third-middle-model-tier-and-pressure.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-exposes-the-full-colleague-runtime-stack-as.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-fits-the-machine-it-lands-on-one-command-det.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-gateway-relays-sse-streams-frame-by-frame-th.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-never-advertises-a-capability-it-cannot-serv.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-preserves-qwen-thinking-traces-across-multi.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-serves-strict-grammar-constrained-tool-calls.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-serves-the-brain-shape-you-choose-machine-as.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-serves-the-mesh-brain-end-state-one-lobe-per.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-ships-a-per-lobe-benchmark-suite-speed-paral.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-tells-clients-the-truth-about-a-fleet-a-cons.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/lobes-unifies-its-generate-lane-on-one-vllm-nightl.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/mesh-boot-window-and-capabilities-advert.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/mesh-brain-join.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/mesh-pool-load-sharing.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/model-gear-now-serves-an-embedding-gear-qwen3-embe-2.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/model-gear-now-serves-an-embedding-gear-qwen3-embe.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/model-gear-owns-the-audio-i-o-surface-end-to-end-m.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/nemotron-lightning-worker.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/orin-associate-at-1m.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/orin-decision-models.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/orin-embedding-specialist.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/peer-only-replica-pools.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/proxy-lobes-pairwise-auth.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/public-lobes-and-hebrew-site.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/quick-wins-finish-the-rename.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/qwen3-8-27b-gguf-on-the-spark.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/qwen3-8-cortex-upgrade.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/qwen3-8-flash-next-gguf-candidate.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/qwen3-8-flash-next-on-thor.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/qwen3-8-gguf-llamacpp.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/realtime-voice-to-voice-astro-test-site-151.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/realtime-ws-server-vad-149.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/reranker-calibration-227.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/stt-readiness-truth-155.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/targeted-ops-and-honest-streams.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/the-gemma-4-12b-gear-gets-speculative-decoding-lob.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/thor-cortex-speculation.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/thor-worker-lobe-qwen3-6-35b-a3b.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/under-pressure-lobes-tells-you-the-cortex-model-is.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/unsloth-qat-senses-first-class-orin-variation.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/frames/vllm-0-31-0-fleet.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/capacity-relative-pool-routing.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/compose-chain-unification-init-repair-doctor-stale.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/cortex-replica-pool-199.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/deployment-lock-per-box.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/dspark-speculation-on-the-spark-cortex.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/every-lobe-in-the-mesh-can-see-the-spark-reaches-t.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/flash-next-worker-on-thor.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/hand-lobe-lfm2-5-1-2b.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/hebrew-realtime.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/innereye-lobes-hosts-comfyui.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lane-safety-and-quality-304-307-308-309.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lightning-on-orin.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-adds-a-third-middle-model-tier-and-pressure.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-capabilities-tells-you-where-a-lobe-is-serve.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-exposes-the-full-colleague-runtime-stack-as.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-fits-the-machine-it-lands-on-one-command-det.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-gateway-relays-sse-streams-frame-by-frame-th.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-never-advertises-a-capability-it-cannot-serv.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-preserves-qwen-thinking-traces-across-multi.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-serves-strict-grammar-constrained-tool-calls.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-serves-the-brain-shape-you-choose-machine-as.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-serves-the-mesh-brain-end-state-one-lobe-per.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-ships-a-per-lobe-benchmark-suite-speed-paral.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-tells-clients-the-truth-about-a-fleet-a-cons.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/lobes-unifies-its-generate-lane-on-one-vllm-nightl.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/mesh-boot-window-and-capabilities-advert.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/mesh-brain-join.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/mesh-pool-load-sharing.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/model-gear-now-serves-an-embedding-gear-qwen3-embe-2.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/model-gear-owns-the-audio-i-o-surface-end-to-end-m.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/nemotron-lightning-worker.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/orin-associate-at-1m.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/orin-decision-models.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/orin-embedding-specialist.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/peer-only-replica-pools.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/proxy-lobes-pairwise-auth.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/quick-wins-finish-the-rename.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/qwen3-8-cortex-upgrade.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/qwen3-8-flash-next-gguf-candidate.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/qwen3-8-gguf-llamacpp.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/realtime-voice-to-voice-astro-test-site-151.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/realtime-ws-server-vad-149.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/reranker-calibration-227.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/stt-readiness-truth-155.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/the-gemma-4-12b-gear-gets-speculative-decoding-lob.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/thor-cortex-speculation.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/thor-worker-arm-qwen3-6-35b-a3b-recipes.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/thor-worker-lobe-qwen3-6-35b-a3b.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/under-pressure-lobes-tells-you-the-cortex-model-is.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/unsloth-qat-senses-first-class-orin-variation.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.devague/plans/vllm-0-31-0-fleet.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.eidetic/memory/colleague__public.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.eidetic/memory/default__public.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.eidetic/memory/lobes__public.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.flake8 +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.github/workflows/publish.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.github/workflows/tests.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.gitignore +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/.markdownlint-cli2.yaml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/AGENTS.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/LICENSE +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/QWEN.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/culture.yaml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/VARIATION.template.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/Dockerfile.decider-vllm +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/Dockerfile.embed-st +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/Dockerfile.gateway +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/VARIATION.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/deployment.lock.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.embed.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.gpu.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.override.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.shape.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/docker-compose.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/mg-logwrap.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/qwen3_reranker.jinja +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-orin__orin-embed/qwen3_thinking_tool_parser.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/Dockerfile.gateway +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/Dockerfile.vllm-gemma4 +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/VARIATION.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/deployment.lock.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/docker-compose.override.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/docker-compose.shape.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/docker-compose.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/mg-logwrap.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/qwen3_reranker.jinja +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/deployments/jetson-agx-thor__thor-worker/qwen3_thinking_tool_parser.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/chatterbox-tts.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/colleague-stack.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/comfyui-innereye.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/contracts/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/contracts/lane-safety-runtime.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/contracts/machine-cli-window.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/contracts/realtime-tool-calling.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/decider.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-10-hand-lobe-lfm2-5-1-2b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-20-nemotron-lightning-worker.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-23-qwen3-8-gguf-llamacpp-deviation-ledger.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-25-cortex-replica-pool-199.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-25-lightning-on-orin.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-25-thor-cortex-speculation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-29-deployment-lock-per-box.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-30-peer-only-replica-pools.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-08-31-quick-wins-finish-the-rename.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-09-11-mesh-brain-join.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-09-13-orin-associate-at-1m.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-09-18-hebrew-realtime.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-10-06-mesh-pool-load-sharing.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-10-07-orin-embedding-specialist.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-10-14-orin-decision-models.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deliveries/2026-10-17-vllm-0-31-0-fleet.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deployment-lock.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/deployment-shapes.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/dspark-speculation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/durable-logs.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/embeddinggemma-2.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-14-accept-referral-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-14-accept-spark-lobe-gb10.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-14-accept-thor-lobe-live-referral-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-14-accept-thor-lobe-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-14-strict-tools-spark-lobe-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-16-proxy-lobes-live-spark-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-17-accept-muse-tool-calling-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-20-accept-embed-deep-gb10.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-21-accept-realtime-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-21-accept-voice-loop-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-22-accept-realtime-voice-to-voice-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-25-accept-by-proxy-spark-f8a9.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-31-accept-multimodal-cortex-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-31-accept-worker-proxy-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-07-31-accept-worker-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-04-accept-senses-unsloth-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-10-hand-lobe-budget-derivation.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-10-partial-hand-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-10-partial-hand-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-19-accept-qwen38-1m-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-19-baseline-qwen3.6-cortex-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-19-spike-qwen3.8-official-nightly-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-accept-cortex-local-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-accept-cortex-repoint-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-accept-cortex-repoint-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-accept-dual-cortex-mesh.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-accept-hand-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-accept-worker-hand-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-baseline-worker-qwen35b-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-hand-thor-blocked-reattributed.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-spike-lightning-thor-no-go.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-20-spike-nightly-sm110-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-21-measure-reasoning-effort-cortex-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-23-spike-qwen38-gguf-llamacpp-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-24-spike-dspark-cortex-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-25-accept-cortex-replica-pool-spark-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-25-accept-spark-lobe-dspark-render.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-25-baseline-cortex-single-owner.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-25-measure-associate-budget-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-25-orin-board-state-lightning-spikes.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-25-spike-lightning-llamacpp-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-25-spike-lightning-vllm-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-25-spike-thor-cortex-speculation.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-26-accept-orin-associate.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-26-associate-gateway-auth-front.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-28-accept-capacity-relative-pool-thor-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-30-accept-peer-only-pool-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-30-accept-reranker-template-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-30-baseline-orin-cortex-pinned.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-08-30-baseline-reranker-untemplated-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-10-accept-nvidia-35b-a3b-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-10-accept-thor-worker-flip.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-10-baseline-thor-cortex-pre-244.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-10-spike-nvidia-35b-a3b-preboot-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-10-sweep-mtp-depth-nvidia-35b-a3b-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-10-thor-backup-and-rollback-dryrun-244.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-10-thor-pressure-floor-244.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-11-accept-thor-reranker-template-senses-unproxy.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-11-accept-worker-proxy-spark-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-12-accept-mesh-boot-window-fleet.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-12-accept-mesh-brain-join-fleet.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-12-baseline-mesh-cutover.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-13-accept-orin-associate-1m.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-13-measure-associate-budget-orin-1m.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-13-spike-lightning-thor-v029.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-16-accept-innereye-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-16-baseline-comfyui-venv-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-16-innereye-render-via-thor.png +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-16-t2-comfyui-container-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-19-accept-multimodal-gemma26b-native-context-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-23-spike-flash-next-worker-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-hebrew-realtime-audio-hardware-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-hebrew-realtime-first-loop-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-hebrew-realtime-spike-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-hebrew-realtime-streaming-bluetts-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-hebrew-realtime-vad-ab-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-hebrew-stt-spike-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-hebrew-tts-ab-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-09-hebrew-voice-lane-senses12b-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-06-accept-mesh-member-lanes.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-accept-innereye-replace-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-accept-orin-embed.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-h2h/run1.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-h2h/run1.table.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-h2h/run2-nomic.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-h2h/run2-nomic.table.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-h2h/run3-qwen3vl.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-h2h/run3-qwen3vl.table.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-h2h-code-retrieval-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-rollback-orin-embed-to-orin-associate.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-spike-embeddinggemma2-sidecar-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-07-spike-orin-embed-vllm-8b.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-14-ab-clef-vllm-vs-sidecar-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-14-accept-clef-bf16-interim-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-14-accept-decider-2b-spark2.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-14-accept-orin-decider.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-14-build-clef-sets.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-14-spike-clef-nf4-transformers-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-14-verify-clef-quants.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-accept-lane-safety-hardware.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-accept-vllm-031-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-accept-vllm-031-spark-cortex.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-accept-vllm-031-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-baseline-and-scaffold-orin.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-baseline-and-scaffold-thor.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-baseline-nightly-spark2.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-dryrun-r1-rollout-spark-copy.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-17-verify-cpucap-running-vllm-spark.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-18-accept-vllm-031-spark-cortex.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-18-accept-vllm-031-spark2.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/2026-10-18-sweep-vllm-031-fleet.txt +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/README-dspark-arms.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/README-realtime-acceptance.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-a16-dspark-262k.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-a16-none-262k.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-dspark-262k.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-dspark-768k.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-mtp-n2-262k.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-mtp-n2-768k.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-mtp-n2.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-none-262k.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/evidence/arm-none-768k.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/experiments/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/experiments/qwen3.8-flash-next-gguf-llamacpp-vllm.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/experiments/qwen3.8-flash-next-nvfp4-thor-reference.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/gateway-fleet.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/gemma-4-12b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/gemma-4-12b-qat-w4a16.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/gemma-4-31b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/gemma4-mtp-draft.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/image-ledger.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/lfm2.5-1.2b-hand.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/machine-profiles.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/measuring-lane-performance.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/mistral-small-3.2-24b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/model-switch-playbook.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/nemotron-3-embed-8b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/nemotron-3.5-lightning-30b-a3b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/nomic-embed-code.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/openai-api.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/operating-a-deployment.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/orin-associate-deployment.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/orin-embed-deployment.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/orin-profiles.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/parakeet-stt.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-06-12-model-gear-owns-the-audio-i-o-surface-end-to-end-m.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-06-19-model-gear-now-serves-an-embedding-gear-qwen3-embe-2.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-06-26-lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-06-26-lobes-ships-a-per-lobe-benchmark-suite-speed-paral.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-06-29-lobes-adds-a-third-middle-model-tier-and-pressure.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-06-30-lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-06-30-lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-01-gemma-4-12b-gear-gets-speculative-decoding-draft.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-01-lobes-unifies-its-generate-lane-on-one-vllm-nightl.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-03-lobes-exposes-the-full-colleague-runtime-stack-as.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-03-under-pressure-lobes-tells-you-the-cortex-model-is.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-04-lobes-tells-clients-the-truth-about-a-fleet-a-cons.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-07-lobes-preserves-qwen-thinking-traces-across-multi.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-09-lobes-never-advertises-a-capability-it-cannot-serv.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-10-lobes-gateway-relays-sse-streams-frame-by-frame-th.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-13-lobes-fits-the-machine-it-lands-on-one-command-det.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-14-lobes-serves-strict-grammar-constrained-tool-calls.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-14-lobes-serves-the-brain-shape-you-choose-machine-as.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-14-lobes-serves-the-mesh-brain-end-state-one-lobe-per.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-17-compose-chain-unification-init-repair-doctor-stale.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-21-realtime-ws-server-vad-149.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-24-stt-readiness-truth-155.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-25-lobes-capabilities-tells-you-where-a-lobe-is-serve.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-31-every-lobe-in-the-mesh-can-see-the-spark-reaches-t.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-07-31-thor-worker-lobe-qwen3-6-35b-a3b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-10-hand-lobe-lfm2-5-1-2b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-19-qwen3-8-cortex-upgrade.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-20-nemotron-lightning-worker.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-25-cortex-replica-pool-199.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-25-lightning-on-orin.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-25-thor-cortex-speculation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-27-capacity-relative-pool-routing.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-29-deployment-lock-per-box.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-30-peer-only-replica-pools.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-30-reranker-calibration-227.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-08-31-quick-wins-finish-the-rename.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-11-mesh-brain-join-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-11-mesh-brain-join.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-12-mesh-boot-window-and-capabilities-advert-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-13-orin-associate-at-1m-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-13-orin-associate-at-1m.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-16-innereye-lobes-hosts-comfyui-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-18-hebrew-realtime-HANDOFF.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-18-hebrew-realtime-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-18-hebrew-realtime.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-09-23-flash-next-worker-on-thor.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-06-mesh-pool-load-sharing-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-06-mesh-pool-load-sharing.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-07-orin-embedding-specialist-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-07-orin-embedding-specialist.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-14-orin-decision-models-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-14-orin-decision-models.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-17-lane-safety-HANDOFF.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-17-lane-safety-and-quality-304-307-308-309-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-17-vllm-0-31-0-fleet-split.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-17-vllm-0-31-0-fleet.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/2026-10-18-vllm-031-HANDOFF.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/colour_check.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/colour_spark.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/eg2_controls.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/fleet_sweep.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/grammar_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/mesh_roles.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/shape_bench.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/strict-payload.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/strict_controls.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/strict_replay.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/xgr_post_think_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/plans/vllm-031-probes/xgr_stop_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3-14b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3-32b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3-embedding-0.6b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3-embedding-4b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3-reranker-0.6b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3-vl-embedding-8b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3-vl-reranker-8b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3.5-4b-minor.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3.6-27b-nvfp4-multimodal.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3.6-27b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3.6-27b-text-nvfp4-mtp.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3.6-35b-a3b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3.8-27b-gguf-llamacpp.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen3.8-27b-nvfp4.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/qwen38-rollout-notes.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/realtime-pipeline.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/runbooks/lane-safety-r1-rollout.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/secret-rotation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/skill-sources.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-06-12-model-gear-owns-the-audio-i-o-surface-end-to-end-m.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-06-19-model-gear-now-serves-an-embedding-gear-qwen3-embe-2.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-06-26-lobes-ships-a-minor-lobe-a-cheap-warm-co-resident.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-06-26-lobes-ships-a-per-lobe-benchmark-suite-speed-paral.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-06-29-lobes-adds-a-third-middle-model-tier-and-pressure.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-06-30-lobes-now-defaults-to-a-spark-duo-the-qwen3-6-27b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-06-30-lobes-ships-a-custom-vllm-image-from-nvcr-io-nvidi.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-01-gemma-4-12b-gear-gets-speculative-decoding-draft.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-01-lobes-unifies-its-generate-lane-on-one-vllm-nightl.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-03-lobes-exposes-the-full-colleague-runtime-stack-as.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-03-under-pressure-lobes-tells-you-the-cortex-model-is.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-04-lobes-tells-clients-the-truth-about-a-fleet-a-cons.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-07-lobes-preserves-qwen-thinking-traces-across-multi.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-09-lobes-never-advertises-a-capability-it-cannot-serv.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-10-lobes-gateway-relays-sse-streams-frame-by-frame-th.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-13-lobes-fits-the-machine-it-lands-on-one-command-det.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-14-lobes-serves-strict-grammar-constrained-tool-calls.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-14-lobes-serves-the-brain-shape-you-choose-machine-as.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-14-lobes-serves-the-mesh-brain-end-state-one-lobe-per.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-16-proxy-lobes-pairwise-auth.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-17-compose-chain-unification-init-repair-doctor-stale.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-21-realtime-voice-to-voice-astro-test-site-151.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-21-realtime-ws-server-vad-149.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-24-stt-readiness-truth-155.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-25-lobes-capabilities-tells-you-where-a-lobe-is-serve.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-31-every-lobe-in-the-mesh-can-see-the-spark-reaches-t.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-07-31-thor-worker-lobe-qwen3-6-35b-a3b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-04-unsloth-qat-senses-first-class-orin-variation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-09-hand-lobe-lfm2-5-1-2b.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-19-qwen3-8-cortex-upgrade.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-20-nemotron-lightning-worker.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-22-qwen3-8-gguf-llamacpp.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-24-dspark-speculation-on-the-spark-cortex.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-25-cortex-replica-pool-199.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-25-lightning-on-orin.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-25-thor-cortex-speculation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-27-capacity-relative-pool-routing.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-27-flash-next-on-vllm.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-27-qwen3-8-flash-next-gguf-candidate.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-29-deployment-lock-per-box.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-30-peer-only-replica-pools.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-30-reranker-calibration-227.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-08-31-quick-wins-finish-the-rename.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-09-10-thor-worker-arm-qwen3-6-35b-a3b-recipes.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-09-11-mesh-brain-join.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-09-12-mesh-boot-window-and-capabilities-advert.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-09-13-orin-associate-at-1m.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-09-16-innereye-lobes-hosts-comfyui.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-09-18-hebrew-realtime.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-09-23-flash-next-worker-on-thor.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-10-06-mesh-pool-load-sharing.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-10-07-orin-embedding-specialist.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-10-14-orin-decision-models.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-10-17-lane-safety-and-quality-304-307-308-309.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/specs/2026-10-17-vllm-0-31-0-fleet.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/superpowers/plans/2026-05-22-scaffold-cli-sibling.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/superpowers/specs/2026-05-22-scaffold-cli-sibling-design.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/tensorrt-llm-investigation.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/thor-worker-flip-rollout-notes.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/tuning-profiles.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/validate-tiers.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/vllm-nightly-migration.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/docs/worker-lightning-rollout-notes.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/examples/minor-evals/smoke.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/__main__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/_metrics.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/assess.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/bench/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/bench/cat_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/bench/cat_score.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/bench/compare.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/bench/report.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/_doctor_lane_safety.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/_doctor_plugin.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/_role_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/assess.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/benchmark.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/calibrate.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/capabilities.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/cli.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/doctor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/eval.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/explain.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/fleet.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/governor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/init.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/learn.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/logs.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/measure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/mesh.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/overview.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/route.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/run.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/serve.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/status.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/stop.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/tunnel.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/up.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/watcher.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_commands/whoami.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_errors.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_live.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_output.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_role_swap.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/cli/_runtime_ops.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/decider_sidecar/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/decider_sidecar/clef_vllm.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/decider_sidecar/server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/embed_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/embed_sidecar/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/embed_sidecar/server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/explain/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/explain/catalog.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/__main__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_authlog.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_config.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_mesh_config.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_mesh_roster.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_mesh_routes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_mesh_routing.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_mesh_wire.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_pressure_policy.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_readiness.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_realtime.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_replicas.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_routing.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_selection.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/_tier_request.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/gateway/server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/lane_keys.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/_registry.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/_strategy.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/_traits.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/blackwell.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/generic.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/orin.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/spark.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/machines/thor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/minor/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/minor/_client.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/minor/governance.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin/base.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin/orin.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin/spark.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin/thor.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/gateway-only.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/machine-as-brain.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/orin-associate.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/orin-cortex.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/orin-decider.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/orin-embed.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/orin-lobe.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/orin-small.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/spark-innereye.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/spark-lobe.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/thor-lobe.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/builtin_shapes/thor-muse.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/loader.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/render.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/schema.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/shape_render.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/profiles/shapes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/__main__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_conversation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_floor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_pcm.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_readiness.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_segmenter.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_sentences.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_session.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_settings.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_speculation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_timings.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_tts_text.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_turn.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_vocalize.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/_wire.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/app.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/audio_facade.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/bluetts_server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/chatterbox_multilingual_server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/chatterbox_server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/protocol.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/realtime/tts_client.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/roles.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/roles_measure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_buildability.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_compose.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_detect.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_env.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_governor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_health.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_lock.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_machine.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_pressure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_tunnel.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/runtime/_window.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/cf-tunnel.env.example +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/docker-compose.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/env.example +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.bluetts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.chatterbox +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.chatterbox-ml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.comfyui +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.decider +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.decider-vllm +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.embed-st +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.gateway +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.parakeet +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.realtime +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/Dockerfile.vllm-gemma4 +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/_readiness.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/docker-compose.audio.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/docker-compose.embed.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/docker-compose.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/env.audio.example +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/env.example +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/listen_server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/fleet/qwen3_reranker.jinja +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/lobes-watcher.service.in +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/templates/mg-logwrap.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/variation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/variation_catalog.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/vllm_plugins/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/vllm_plugins/qwen3_thinking_tool_parser.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/watcher/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/watcher/_install.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/lobes/watcher/_run.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/packaging/model-gear/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/packaging/model-gear/pyproject.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/accept-by-proxy.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/accept-shape.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/audio-smoke.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_eval/compare.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_eval/run_nf4_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_eval/run_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_quant/quantize.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_sets/build_sets.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_sets/calibration.manifest.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_sets/incidents.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_sets/probe.manifest.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/clef_sets/routing.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/concurrency-probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/embed_h2h/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/embed_h2h/build_corpus.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/embed_h2h/build_queries.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/embed_h2h/corpus.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/embed_h2h/h2h.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/embed_h2h/prompts.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/embed_h2h/queries.jsonl +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/gen-api-key.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/live-check.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/prefill-depth-curve.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/probe_reranker_calibration.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/realtime-he-accept.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/realtime-smoke.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/realtime-voice-loop.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/scan_deployment_secrets.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/spec-arms.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/spike-preflight.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/stream-measure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/scripts/validate-tiers.sh +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/.env.example +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/.gitignore +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/.nvmrc +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/astro.config.mjs +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/package-lock.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/package.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/proxy/gateway-proxy.mjs +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/public/favicon.svg +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/public/worklets/pcm-capture-processor.js +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/components/ConnectionPanel.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/components/ConversationView.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/components/EventStream.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/components/Footer.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/components/Header.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/components/MicIsland.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/components/SignalMesh.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/layouts/Layout.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/pages/dev-connection.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/pages/dev-events.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/pages/dev-mic.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/pages/index.astro +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/audio-graph.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/audio-playback.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/audio-playback.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/audio-test-doubles.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/connection-panel.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/conversation-view.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/demo-tools.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/dev-mic-harness.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/event-fixtures.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/event-icons.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/event-log.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/event-log.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/mic-capture.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/mic-capture.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/mic-island.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/mic-island.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/no-mic-mute.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/pcm-wire.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/pcm-wire.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/realtime-connection.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/scripts/realtime-events.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/src/styles/global.css +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/test/connection-panel.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/test/conversation-view.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/test/demo-tools.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/test/gateway-proxy.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/test/realtime-connection.test.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/tsconfig.json +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/site/vitest.config.ts +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/sonar-project.properties +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/conftest.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card/Dockerfile.gateway +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card/VARIATION.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card/deployment.lock.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card/docker-compose.override.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card/docker-compose.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card__fixture-shape/VARIATION.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card__fixture-shape/deployment.lock.toml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.override.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.shape.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/deployments/fixture-card__fixture-shape/docker-compose.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/upgrade_compat/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/upgrade_compat/fleet/docker-compose.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/upgrade_compat/fleet/env.example +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/upgrade_compat/single/docker-compose.yml +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/fixtures/upgrade_compat/single/env.example +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/README.md +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/__init__.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/regen.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/gateway-only__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/gateway-only__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/gateway-only__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/gateway-only__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-associate__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-associate__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-associate__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-associate__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-cortex__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-cortex__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-cortex__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-cortex__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-decider__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-decider__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-decider__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-decider__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-embed__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-embed__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-embed__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-embed__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-lobe__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-lobe__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-lobe__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-lobe__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-small__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-small__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-small__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/orin-small__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/spark-innereye__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/spark-innereye__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/spark-innereye__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/spark-innereye__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/spark-lobe__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/spark-lobe__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/spark-lobe__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/spark-lobe__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-lobe__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-lobe__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-lobe__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-lobe__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-muse__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-muse__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-muse__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-muse__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-worker__base.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-worker__orin.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-worker__spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/shapes/thor-worker__thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/spark.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/template-defaults.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/goldens/thor.env +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_assess.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_assess_perf.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_associate_compose.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_associate_exposure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_associate_gateway_boundaries.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_audio_he_compose_chain.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_audio_he_goldens.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_audio_he_tts_compose.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_bench_compare.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_bench_report.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_benchmark_all_lobes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_benchmark_window.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_bluetts_dockerfile.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_bluetts_server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_boundary_serves_only.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_buildability_guard.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_calibration_knee.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_capabilities_member_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cat_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cat_score.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_catalog_embed_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_chatterbox_ml_dockerfile.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_chatterbox_multilingual_server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_chatterbox_pcm16.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_chatterbox_readiness.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_clef_eval.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_clef_quant_index.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_clef_sets.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_benchmark_profiles.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_calibrate.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_capabilities.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_capabilities_replicas.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_eval.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_eval_cat.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_fleet.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_gateway_auth.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_introspection.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_logs.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_measure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_mesh.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_route.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_run.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_tunnel.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_up.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_up_replace.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_cli_wiring.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_client_reasoning_roundtrip.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_colleague_contract.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_comfyui_compose.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_comfyui_dockerfile.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_comfyui_volumes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_compose_chain.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_decider_render.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_decider_sidecar.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_decider_sidecar_vllm.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_deployment_lock.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_deployment_lock_doc.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_detect.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_audio_he.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_fix.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_lane_safety.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_machine_profile.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_mesh_retirement.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_passthrough.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_refresh_plugin.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_repin_version.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_role_command.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_doctor_role_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_dropped_lobe_honesty.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_embed_finetune.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_embed_h2h.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_embed_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_embed_lanes_import.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_embed_overlay.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_embed_sidecar.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_fleet_audio_vad_env.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_fleet_compose_mounts.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_fleet_minor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_fleet_per_machine_knobs.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_fleet_secrets_env_file.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_fleet_template_gateway_env.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_audio_peer.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_audio_routing.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_auth.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_auth_rejection_log.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_busy_e2e.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_capabilities.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_config_proxy.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_config_replicas.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_config_wiring.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_decider.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_decider_mesh.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_embed_deep.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_embed_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_env_passthrough_guard.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_feasibility.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_fleet_doc.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_force_strict.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_get_relay.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_hand_adapters.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_member_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_no_lifecycle_actuator.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_peer_advert.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_peer_only_pool.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_pool.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_pool_capacity_wiring.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_pool_pressure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_pool_saturation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_readiness.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_realtime_ws.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_render_facade.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_replicas.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_routing.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_selection.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_serve_mesh_wiring.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_server.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_status.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_stream_termination.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gateway_tiers.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gemma4_compose.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gemma4_dockerfile.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gen_api_key.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_gitignore_convention.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_governor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_init.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_init_audio_he.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_init_coresidency.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_init_from_lock.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_init_gpu_access.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_init_profile.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_init_shape.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_innereye_ui_port.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_lane_safety_compose.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_lane_safety_knobs_documented.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_lane_state_dir.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_lifecycle_cache_clear.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_live_capabilities.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_lobes_compose_wrapper.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_lock_drift.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_logwrap_backoff.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_logwrap_held.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_logwrap_hold.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_machine_adapter.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_machines.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_config.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_flap_per_name.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_heartbeat_live.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_member_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_naming.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_roster.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_routes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_routing.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_routing_wiring.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_templates.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_verify_reason.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_mesh_wire.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_minor_client.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_minor_governance.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_minor_integration.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_minor_logprobs.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_nightly_migration_doc.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_no_config_byte_identity.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_orin_associate_boot_order.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_orin_associate_shape.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_orin_cortex_shape.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_orin_decider_shape.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_orin_embed_shape.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_orin_gateway_read_timeout.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_orin_lobe_shape.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_overview_live.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_parser.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_peer_referral.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_pooling_gear_fingerprint.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_preserve_thinking_diagnostic.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_pressure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_pressure_policy.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_profile_goldens.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_profile_render.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_profile_schema.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_profiles.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_readiness_peer_probe.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_app_stream_structure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_audio_env_coverage.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_audio_facade.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_continuation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_conversation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_conversation_stream.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_floor.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_floor_segments.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_generate_failure_surfacing.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_generate_stream_settings.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_he_accept_helpers.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_imports.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_parallel_tool_calls.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_pcm.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_protocol.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_readiness.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_segmenter.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_segmenter_eager.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_segmenter_level_gate.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_sentences.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_session.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_settings.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_smoke_helpers.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_speculation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_stt_forward.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_timings.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_tts_gate.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_tts_text.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_turn.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_turn_stream.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_vocalize.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_realtime_wire.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_role_probes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_roles_audio_advert.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_roles_audio_language.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_roles_proxied.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_roles_replicas.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_routing_models_member_lanes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_scan_deployment_secrets.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_senses_speculative_config.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_shape_budgets.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_shape_contract_matrix.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_shape_gateway_only.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_shape_goldens.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_shape_host_env_rerender.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_shapes.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_smoke_duo.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_spec_arms.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_spike_preflight.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_status_fleet.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_status_pressure.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_switch_bf16.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_switch_plan_goldens.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_templates_preserve_thinking.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_tier_request.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_tool_parser_plugin.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_tts_client_hebrew_diacritizer.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_tts_pause_and_truncation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_up_no_deps_isolation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_upgrade_compat.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_variation.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_variation_catalog.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_vllm_plugin_thinking.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_watcher.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_wheel_excludes_deployments.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_worker_compose.py +0 -0
- {lobes_cli-0.90.3 → lobes_cli-0.92.0}/tests/test_worker_recipe_knobs.py +0 -0
|
@@ -4,6 +4,38 @@ 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.92.0] - 2026-10-26
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Catalog entry `nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB` (74B-A9B MoE hybrid, text+image+video, 262144 native, modelopt mixed IQ2/Q8/NVFP4, DFlash LiLiCorr draft) with its doc, a `qwen3_coder` parser rule, and a Spark GB10 acceptance transcript (text, image, tool call and a 231,935-token needle pass).
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- `worker` is now Nemotron 3.5 Bolt (operator decision, 2026-10-26), hosted on the DGX Spark; `nvidia/Qwen3.6-35B-A3B-NVFP4` is demoted to a kept candidate. The worker contract is unchanged. Bolt needs the card's vLLM nightly plus `b12x` and is sm_12x-only; the packaged `vllm-worker` lane cannot express its flags yet, so the Spark serves it through a full command in its hand-kept override.
|
|
16
|
+
|
|
17
|
+
## [0.91.0] - 2026-10-23
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- 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.
|
|
22
|
+
- 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.
|
|
23
|
+
- 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).
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- 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.
|
|
28
|
+
- 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.
|
|
29
|
+
- 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).
|
|
30
|
+
- 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).
|
|
31
|
+
- 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.
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- 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.
|
|
36
|
+
- 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.
|
|
37
|
+
- 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.
|
|
38
|
+
|
|
7
39
|
## [0.90.3] - 2026-10-18
|
|
8
40
|
|
|
9
41
|
### Fixed
|
|
@@ -345,6 +345,19 @@ entry, and the `thor-muse` shape all **stay in-tree** (cite-don't-delete) —
|
|
|
345
345
|
dormant, not deleted — and the tier vocabulary above still ranks `worker` <
|
|
346
346
|
`muse`. See `docs/gemma-4-31b-nvfp4.md`.
|
|
347
347
|
|
|
348
|
+
**`worker` re-checkpointed again (2026-10-26, operator decision): Nemotron 3.5
|
|
349
|
+
Bolt 74B-A9B 24GB, hosted on the DGX Spark.** The catalog's `worker` role_hint
|
|
350
|
+
moved from `nvidia/Qwen3.6-35B-A3B-NVFP4` (now a kept candidate) to
|
|
351
|
+
`nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB`: a ~9B-active MoE hybrid with a
|
|
352
|
+
RADIO ViT (image+video), 262144 native, DFlash from its LiLiCorr draft, the
|
|
353
|
+
same multimodal-coder contract. Its IQ2 experts run only on sm_12x, so the
|
|
354
|
+
Spark hosts it (cortex is dropped there and served by spark2) and the Thor
|
|
355
|
+
stops hosting worker. The packaged `vllm-worker` lane cannot express its flags
|
|
356
|
+
yet; the Spark serves it through a full command in its hand-kept override. See
|
|
357
|
+
`docs/nemotron-3.5-bolt-74b-a9b-24gb.md` and
|
|
358
|
+
`docs/evidence/2026-10-26-accept-nemotron-bolt-spark.txt`. The paragraphs
|
|
359
|
+
below are the record of the Qwen and Lightning workers before it.
|
|
360
|
+
|
|
348
361
|
**`worker` — the eighth role (opt-in hosting), the fast ground-work DOER —
|
|
349
362
|
RE-CHECKPOINTED AGAIN, issue #244 (2026-09-10), off Lightning onto
|
|
350
363
|
`nvidia/Qwen3.6-35B-A3B-NVFP4`.** Deviation d1 (2026-08-20) had put worker on
|
|
@@ -383,8 +396,8 @@ exactly (`WORKER_FEASIBLE` / `WORKER_PEER_ORIGIN` / `WORKER_PEER_PROXY` /
|
|
|
383
396
|
like `muse`). Under pressure `worker` sheds (429) exactly like
|
|
384
397
|
cortex/senses/muse.
|
|
385
398
|
|
|
386
|
-
**
|
|
387
|
-
proxy (2026-09-11).** The Thor serves the lane locally through the
|
|
399
|
+
**(Superseded 2026-10-26 — see the Bolt paragraph above.) Hosted on the Jetson
|
|
400
|
+
AGX Thor again (#244); the DGX Spark reaches it by proxy (2026-09-11).** The Thor serves the lane locally through the
|
|
388
401
|
`thor-worker` shape at `gpu_mem_util=0.45`, full `max_model_len=262144`,
|
|
389
402
|
DFlash speculation, and `WORKER_MAX_NUM_SEQS=1`. One request at a time is
|
|
390
403
|
**by design** and is still to be tested under a real multi-agent load. See
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: lobes-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.92.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,117 @@
|
|
|
1
|
+
ACCEPTANCE — nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB served standalone on the DGX Spark GB10
|
|
2
|
+
Date: 2026-10-25 22:36Z - 22:47Z (UTC)
|
|
3
|
+
Box: DGX Spark GB10 (sm_121, 128 GB unified memory)
|
|
4
|
+
Scope: one standalone vLLM container via sparkrun, OUTSIDE the lobes fleet compose and gateway.
|
|
5
|
+
Proves the checkpoint boots and serves on this card with the recipe below. It does NOT
|
|
6
|
+
prove `lobes switch`, a fleet lane, a shape or a gateway route — none of those exist for it.
|
|
7
|
+
|
|
8
|
+
== Checkpoint ==
|
|
9
|
+
model: nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB @ c6cc2e8ffa353403213d6b9b18aaf8eb684d705a
|
|
10
|
+
draft: nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-LiLiCorr @ 449d24140160b8e51871bfc0f0a7338abf640aa1
|
|
11
|
+
config.json: NemotronHPuzzleForCausalLM in a nemotron_h_omni wrapper; RADIO vision_config; no sound_config;
|
|
12
|
+
llm_config.max_position_embeddings 262144
|
|
13
|
+
quantization_config: quant_method modelopt, quant_algo MIXED_PRECISION
|
|
14
|
+
IQ2_XXS 27,728 layers / Q8_0 113 / W4A16_NVFP4 80
|
|
15
|
+
|
|
16
|
+
== Engine ==
|
|
17
|
+
image: vllm/vllm-openai:nightly-77154ca6116ae34cbfe314beef1016bde9b63989 + b12x 1.5.1 baked in
|
|
18
|
+
(the card installs b12x at container start; baked so the boot runs offline)
|
|
19
|
+
vllm: 0.32.0rc1.dev100+g77154ca61 torch 2.13.0+cu130
|
|
20
|
+
Resolved architecture: NemotronH_Omni_Reasoning_V3 (target), LiLiCorrDraftModel (draft)
|
|
21
|
+
|
|
22
|
+
== Serve flags (the card's vLLM command, with the deviations marked) ==
|
|
23
|
+
--revision c6cc2e8f... --trust-remote-code --load-format auto --tensor-parallel-size 1
|
|
24
|
+
--max-model-len 262144 --max-num-seqs 1 --enable-chunked-prefill --kv-cache-dtype fp8
|
|
25
|
+
--linear-backend b12x --moe-backend b12x --attention-backend FLASHINFER
|
|
26
|
+
--mamba-backend flashinfer --mamba-ssm-cache-dtype bfloat16 --mamba-cache-dtype bfloat16 --mamba-cache-mode align
|
|
27
|
+
--limit-mm-per-prompt '{"video":1,"image":1}' --video-pruning-rate 0.5
|
|
28
|
+
--media-io-kwargs '{"video":{"fps":2,"num_frames":256}}'
|
|
29
|
+
--enable-auto-tool-choice --tool-call-parser qwen3_coder
|
|
30
|
+
--reasoning-parser-plugin <checkpoint>/ultra_v3_reasoning_parser.py --reasoning-parser ultra_v3
|
|
31
|
+
--speculative-config '{"method":"dflash","model":"...-LiLiCorr","revision":"449d2414...","num_speculative_tokens":7,
|
|
32
|
+
"rejection_sample_method":"standard","attention_backend":"FLASHINFER","draft_load_config":{"load_format":"auto"}}'
|
|
33
|
+
--seed 42
|
|
34
|
+
DEVIATION --kv-cache-memory-bytes 4294967296 (4 GiB) added; --gpu-memory-utilization 0.40 then only gates the
|
|
35
|
+
startup free-memory check. Reason: on this unified-memory box a util-sized KV pool is not
|
|
36
|
+
deterministic (vLLM's profiling counts other processes' memory growth), measured the same night on a
|
|
37
|
+
different checkpoint at util 0.70 / 0.60 / 0.63 -> 22.99 / 5.87 / 2.94 GiB.
|
|
38
|
+
DEVIATION --allowed-local-media-path / dropped (it lets any caller read any file on the box via file:// URLs).
|
|
39
|
+
DEVIATION revisions pinned; bound to 127.0.0.1.
|
|
40
|
+
|
|
41
|
+
== Boot ==
|
|
42
|
+
22:39:14 Loading weights took 125.55 seconds (target); 22:39:34 5.63 seconds (draft)
|
|
43
|
+
22:39:35 Model loading took 24.09 GiB memory and 150.801226 seconds
|
|
44
|
+
22:40:18 Initial free memory 105.18 GiB, reserved 4.0 GiB memory for KV Cache as specified by kv_cache_memory_bytes
|
|
45
|
+
22:40:18 GPU KV cache size: 350,464 tokens, Maximum concurrency for 262,144 tokens per request: 1.34x
|
|
46
|
+
22:40:30 Application startup complete; inference ready
|
|
47
|
+
WARNING max_num_scheduled_tokens is set to 2048 based on the speculative decoding settings (vLLM's own note)
|
|
48
|
+
|
|
49
|
+
== Probes (temperature 1.0, top_p 0.95, thinking on by default) ==
|
|
50
|
+
/v1/models: ['nemotron-3.5-bolt', 'nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB']
|
|
51
|
+
known-answer "What is 17*23?" -> '391', reasoning split off (149 chars) 0.8 s PASS
|
|
52
|
+
image 64x64 solid red PNG -> 'Red' 2.0 s PASS
|
|
53
|
+
image 64x64 solid blue PNG -> 'Blue' 3.1 s PASS
|
|
54
|
+
image 64x64 solid green PNG -> 'Green' 2.2 s PASS
|
|
55
|
+
tool call get_weather, "weather in Haifa?" -> finish_reason tool_calls,
|
|
56
|
+
get_weather({"city": "Haifa"}), content None 1.2 s PASS
|
|
57
|
+
speed palindrome function -> 359 completion tokens in 5.2 s wall = 69.3 tok/s
|
|
58
|
+
(one request; wall clock includes prefill and reasoning)
|
|
59
|
+
long context 231,935-token prompt, needle mid-document
|
|
60
|
+
-> 'PELICAN-4471' 200.3 s PASS
|
|
61
|
+
The image probes are synthetic solid colours: they prove the vision path is wired and the colour
|
|
62
|
+
negative controls separate, not real-image quality.
|
|
63
|
+
|
|
64
|
+
== Host after the probes ==
|
|
65
|
+
host MemAvailable 70,146 MiB
|
|
66
|
+
kernel NV_ERR_NO_MEMORY lines since the boot: 0
|
|
67
|
+
hottest ACPI zone 86 C (just after the 200 s long-context prefill)
|
|
68
|
+
|
|
69
|
+
== Not proven here ==
|
|
70
|
+
- Any lobes path: `lobes switch` (the stock template's image lacks the nightly + b12x), a fleet lane, a gateway route.
|
|
71
|
+
- Other cards: the IQ2 expert path is sm_12x-only in vLLM; the Orin (sm_87) refuses it, the Thor (sm_110) is untried.
|
|
72
|
+
- Concurrency above 1, sustained decode speed under load, DFlash acceptance rates.
|
|
73
|
+
|
|
74
|
+
======================================================================================================
|
|
75
|
+
PART 2 — Bolt as THE `worker`, served by the Spark's lobes `vllm-worker` lane (2026-10-25 22:56Z - 23:20Z)
|
|
76
|
+
======================================================================================================
|
|
77
|
+
Operator decision: `worker` = Bolt, hosted on the Spark (sm_12x only); cortex dropped on the Spark and served
|
|
78
|
+
by spark2 alone; the Thor stops hosting its nvidia/Qwen3.6-35B-A3B-NVFP4 worker and reaches `worker` by mesh.
|
|
79
|
+
|
|
80
|
+
== Spark deployment (hand-kept files, each backed up first) ==
|
|
81
|
+
.env: WORKER_MODEL / WORKER_SERVED_NAME = nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB, WORKER_MAX_MODEL_LEN=262144,
|
|
82
|
+
WORKER_QUANTIZATION=modelopt_mixed (what vLLM resolves for this config), WORKER_GPU_MEM_UTIL=0.40,
|
|
83
|
+
WORKER_IMAGE=<the nightly + b12x image above>, WORKER_FEASIBLE=true, COMPOSE_PROFILES=worker,
|
|
84
|
+
PRIMARY_FEASIBLE=false
|
|
85
|
+
docker-compose.override.yml: vllm-worker `command:` replaced with the PART 1 flag list (the packaged lane cannot
|
|
86
|
+
express --linear-backend, the mamba cache flags, --kv-cache-memory-bytes, the media limits or the
|
|
87
|
+
reasoning-parser plugin), `depends_on: !reset null` (the pooling lanes it waits on are not hosted here)
|
|
88
|
+
docker-compose.shape.yml: vllm-primary parked in the inert shape-dropped profile
|
|
89
|
+
`lobes up worker --apply`, then `lobes up gateway --apply`
|
|
90
|
+
|
|
91
|
+
== Lane boot (cold compile cache) ==
|
|
92
|
+
22:59:20 Model loading took 24.09 GiB memory and 155.386063 seconds
|
|
93
|
+
23:01:24 GPU KV cache size: 350,464 tokens, Maximum concurrency for 262,144 tokens per request: 1.34x
|
|
94
|
+
Application startup complete; container healthy
|
|
95
|
+
|
|
96
|
+
== Thor ==
|
|
97
|
+
.env backed up; WORKER_FEASIBLE=false (explicit), worker dropped from COMPOSE_PROFILES, WORKER_MODEL /
|
|
98
|
+
WORKER_SERVED_NAME set to the Bolt id (advert only). `lobes up worker --down --apply` (with worker still in
|
|
99
|
+
COMPOSE_PROFILES: the verb refuses a role the .env does not activate), then `lobes up gateway --apply`.
|
|
100
|
+
Host MemAvailable after the gateway was healthy: 62 GiB.
|
|
101
|
+
|
|
102
|
+
== Through each member's gateway (API key on) ==
|
|
103
|
+
/capabilities worker model=worker model=cortex
|
|
104
|
+
spark (host) feasible true, ready true, context 262144, quant modelopt '391' local '391' via spark2
|
|
105
|
+
thor feasible false, ready true, hosted_by spark, proxied true '391' via spark '391' via spark2
|
|
106
|
+
spark2 feasible false, ready true, hosted_by spark, proxied true '391' via spark '391' local
|
|
107
|
+
Every forward carried X-Lobes-Mesh-Member (spark for worker, spark2 for cortex) and X-Lobes-Proxied-By.
|
|
108
|
+
|
|
109
|
+
Via the Thor's gateway (mesh forward to the Spark lane):
|
|
110
|
+
image 64x64 solid red -> 'red' 5.5 s PASS
|
|
111
|
+
image 64x64 solid blue -> 'Blue' 2.1 s PASS
|
|
112
|
+
tool get_weather -> finish_reason tool_calls, get_weather({"city": "Haifa"}) 1.9 s PASS
|
|
113
|
+
|
|
114
|
+
== Not proven by PART 2 ==
|
|
115
|
+
- The packaged template serving Bolt (it cannot yet; the Spark uses an override command).
|
|
116
|
+
- Load: `--max-num-seqs 1`, so concurrent worker callers queue.
|
|
117
|
+
- The Orin member's view (not probed).
|
|
@@ -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`.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# NVIDIA Nemotron 3.5 Bolt 74B-A9B 24GB — the `worker` role
|
|
2
|
+
|
|
3
|
+
> One entry in lobes's **supported catalog** (`lobes overview --list`). For the
|
|
4
|
+
> catalog-vs-warm distinction — what you *can* load vs. what's loaded *now* —
|
|
5
|
+
> see
|
|
6
|
+
> [`gateway-fleet.md`](gateway-fleet.md#supported-catalog-vs-warm-backends).
|
|
7
|
+
>
|
|
8
|
+
> **Status: the `worker` role_hint (operator decision, 2026-10-26)**,
|
|
9
|
+
> replacing `nvidia/Qwen3.6-35B-A3B-NVFP4` (now a kept candidate — see
|
|
10
|
+
> [`nvidia-qwen3.6-35b-a3b-nvfp4.md`](nvidia-qwen3.6-35b-a3b-nvfp4.md)). The
|
|
11
|
+
> worker contract does not move: Bolt is a fast multimodal (image+video)
|
|
12
|
+
> coder/doer with tool calls, which is exactly what `roles.py` already
|
|
13
|
+
> promises. It is hosted on the **DGX Spark** — the only card family its IQ2
|
|
14
|
+
> experts run on — and every other mesh member reaches `worker` through the
|
|
15
|
+
> mesh. Measured as a standalone container first
|
|
16
|
+
> ([`evidence/2026-10-26-accept-nemotron-bolt-spark.txt`](evidence/2026-10-26-accept-nemotron-bolt-spark.txt)).
|
|
17
|
+
>
|
|
18
|
+
> **The packaged template cannot express Bolt's flags yet.** The fleet
|
|
19
|
+
> `vllm-worker` lane has no knob for `--linear-backend`, the mamba cache
|
|
20
|
+
> flags, `--kv-cache-memory-bytes`, the media limits or the reasoning-parser
|
|
21
|
+
> plugin, and it always passes `--quantization`. The Spark serves it through a
|
|
22
|
+
> full `command:` replacement in its hand-kept `docker-compose.override.yml`
|
|
23
|
+
> (the [recipe](#serving-it-on-the-spark) below). `lobes switch` to this id
|
|
24
|
+
> will not boot on the stock template either (see [Engine](#engine)).
|
|
25
|
+
|
|
26
|
+
## What it is
|
|
27
|
+
|
|
28
|
+
| | |
|
|
29
|
+
|---|---|
|
|
30
|
+
| id | `nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB` |
|
|
31
|
+
| revision | `c6cc2e8ffa353403213d6b9b18aaf8eb684d705a` |
|
|
32
|
+
| architecture | `NemotronHPuzzleForCausalLM` in a `nemotron_h_omni` wrapper: hybrid Mamba-2 / attention with sparse MoE, about 9B active of 74B total |
|
|
33
|
+
| modalities | text, image and video (RADIO vision encoder); no audio |
|
|
34
|
+
| context | 262144 native (`llm_config.max_position_embeddings`) |
|
|
35
|
+
| quantization | `modelopt_mixed` (the checkpoint's `quant_method` is modelopt, `MIXED_PRECISION`): IQ2_XXS on the routed experts (~2.06 bits, ggml packing), Q8_0, and W4A16 NVFP4 on the mixer projections — 24.09 GiB loaded |
|
|
36
|
+
| tool parser | `qwen3_coder` (the card's own serve command) |
|
|
37
|
+
| reasoning parser | `ultra_v3`, shipped as a plugin file inside the checkpoint |
|
|
38
|
+
| speculative decoding | DFlash, 7 draft tokens, from `nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-LiLiCorr` @ `449d2414…` |
|
|
39
|
+
| licence | OpenMDW 1.1 (the card) |
|
|
40
|
+
|
|
41
|
+
All of the above was read from the checkpoint's own `config.json` and
|
|
42
|
+
`hf_quant_config.json` at the pinned revision, and from its card's vLLM
|
|
43
|
+
command.
|
|
44
|
+
|
|
45
|
+
## Engine
|
|
46
|
+
|
|
47
|
+
- **sm_12x only.** vLLM's IQ2 expert path is gated to Blackwell consumer/GB10
|
|
48
|
+
silicon. The Jetson AGX Orin (sm_87) refuses it on v0.32.0 and on main; the
|
|
49
|
+
Jetson AGX Thor (sm_110) has not been tried.
|
|
50
|
+
- **Nightly plus `b12x`.** The card names
|
|
51
|
+
`vllm/vllm-openai:nightly-77154ca6116ae34cbfe314beef1016bde9b63989` and
|
|
52
|
+
installs `b12x` at container start (`--linear-backend b12x --moe-backend
|
|
53
|
+
b12x`). The measured run used that nightly with `b12x==1.5.1` baked into a
|
|
54
|
+
derived image so the boot runs offline (vLLM `0.32.0rc1.dev100+g77154ca61`).
|
|
55
|
+
|
|
56
|
+
## Serving it on the Spark
|
|
57
|
+
|
|
58
|
+
The measured recipe is the card's vLLM command with three deviations:
|
|
59
|
+
|
|
60
|
+
1. **`--kv-cache-memory-bytes 4294967296` (4 GiB).** On the Spark's unified
|
|
61
|
+
memory a KV pool sized by `--gpu-memory-utilization` is not
|
|
62
|
+
deterministic: vLLM's profiling counts other processes' memory growth, so
|
|
63
|
+
the same flag gives very different pools from boot to boot. Pinning the
|
|
64
|
+
pool makes the footprint predictable. 4 GiB holds 350,464 fp8 tokens = 1.34
|
|
65
|
+
full 262144-token requests; `--max-num-seqs` is 1 as on the card.
|
|
66
|
+
2. **`--allowed-local-media-path /` dropped.** That flag lets any caller read
|
|
67
|
+
any file on the box through a `file://` URL.
|
|
68
|
+
3. **Revisions pinned**, and the server bound to `127.0.0.1`.
|
|
69
|
+
|
|
70
|
+
The full flag list is in the evidence transcript.
|
|
71
|
+
|
|
72
|
+
## Measured — DGX Spark GB10, 2026-10-25
|
|
73
|
+
|
|
74
|
+
From
|
|
75
|
+
[`evidence/2026-10-26-accept-nemotron-bolt-spark.txt`](evidence/2026-10-26-accept-nemotron-bolt-spark.txt):
|
|
76
|
+
|
|
77
|
+
| | |
|
|
78
|
+
|---|---|
|
|
79
|
+
| weights | 24.09 GiB, 150.8 s to load |
|
|
80
|
+
| KV pool | 4.0 GiB pinned = 350,464 tokens (1.34× at 262144) |
|
|
81
|
+
| host memory available after the probes | 70,146 MiB |
|
|
82
|
+
| known-answer | PASS (`391`, reasoning split off) |
|
|
83
|
+
| image | PASS on red / blue / green solid-colour controls (synthetic) |
|
|
84
|
+
| tool call | PASS — `get_weather({"city": "Haifa"})`, `finish_reason: tool_calls` |
|
|
85
|
+
| speed | 69.3 tok/s wall on one short request (includes prefill and reasoning) |
|
|
86
|
+
| long context | PASS — 231,935-token needle retrieved in 200.3 s |
|
|
87
|
+
|
|
88
|
+
## Measured — as the `worker` lane, 2026-10-25
|
|
89
|
+
|
|
90
|
+
PART 2 of the same transcript: the Spark's lobes `vllm-worker` lane (cold
|
|
91
|
+
compile, the same 350,464-token pinned pool), reached as `model=worker` from
|
|
92
|
+
the spark, thor and spark2 gateways — the Thor and spark2 by mesh forward,
|
|
93
|
+
with `X-Lobes-Mesh-Member: spark`. Through the Thor's forward the red/blue
|
|
94
|
+
image controls and a `get_weather` tool call passed.
|
|
95
|
+
|
|
96
|
+
## Not proven
|
|
97
|
+
|
|
98
|
+
- The packaged template serving it (the Spark uses an override command), a
|
|
99
|
+
deployment shape that hosts it, and `lobes switch` to it — switch prints
|
|
100
|
+
the gear's serving note and, on `--apply`, writes `.env` without
|
|
101
|
+
restarting.
|
|
102
|
+
- Any card other than the Spark GB10.
|
|
103
|
+
- Concurrency above 1, sustained decode under load, and DFlash acceptance
|
|
104
|
+
rates.
|
|
105
|
+
- Real-image and video quality (the image probes are synthetic).
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# `nvidia/Qwen3.6-35B-A3B-NVFP4` — the Thor `worker` lane
|
|
2
2
|
|
|
3
|
+
> **SUPERSEDED as the `worker` role_hint (2026-10-26, operator decision).**
|
|
4
|
+
> The catalog's `worker` moved to `nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB`,
|
|
5
|
+
> hosted on the DGX Spark (see
|
|
6
|
+
> [`nemotron-3.5-bolt-74b-a9b-24gb.md`](nemotron-3.5-bolt-74b-a9b-24gb.md)).
|
|
7
|
+
> This checkpoint is a kept `candidate` (cite-don't-delete); the
|
|
8
|
+
> `thor-worker` shape still renders it. Read "the `worker` lane" below as
|
|
9
|
+
> history.
|
|
10
|
+
|
|
3
11
|
**Status: VALIDATED live on the physical Jetson AGX Thor, 2026-09-10, on the
|
|
4
12
|
nightly `0.26.1rc1.dev942`; re-accepted on vLLM 0.31.0 (2026-10-17) for the
|
|
5
13
|
items listed in [Engine relabel](#engine-relabel-310-t15) only** — see
|