Releases: guelfoweb/orbit
Release list
v0.0.1-rc17
v0.0.1-rc17
Conversation-reuse guidance and post-RC16 project guidance release.
Summary
- Add post-RC16 agent guidance for future Orbit work.
- Clarify optional native MTP support in the README.
- Improve route guidance for conversation reuse.
- Record the conversation-reuse merge and smoke results in
AGENTS.md.
Main changes since RC16
- #122 Add post-RC16 agent guidance.
- #123 Clarify optional native MTP support.
- #124 Improve route guidance for conversation reuse.
- #125 Update agent guidance after conversation reuse merge.
- #126 Record conversation reuse smoke results.
Runtime behavior
The route prompt now includes a general, model-guided rule to prefer CHAT
when the user asks to recap, summarize, repeat, continue, explain, or compare
information that is already present and sufficient in the conversation.
Tool use remains allowed for:
- fresh or current data
- verification
- new information
- changed file or system state
- missing, stale, ambiguous, or insufficient prior context
This is not a deterministic fast path. It does not add cache/TTL behavior,
tool-specific logic, runtime changes, tool-loop changes, or single-tool changes.
MTP and documentation
Native MTP remains optional, explicit, and experimental.
It is:
- not enabled by default
- not always-on for every internal completion
- not a guaranteed performance win
Pre-RC17 MTP sanity passed with native MTP enabled, multimodal available, and
n_max=3.
Validation
Pre-RC17 validation covered:
- targeted gates: PASS
- full unit gate: PASS, 985 tests
compileall: PASSgit diff --check: PASS- prompt validation: 33 prompts
- prompt sources: 12 prompts from
docs/PROMPTS.md - ambiguous prompts: 10
- full E2E steps: 6
- MTP sanity: PASS
No BLOCKER issues were found.
Conversation reuse validation:
system_inforecap prefersCHAT/ no tool when context is sufficient- read-file recap prefers
CHAT/ no tool when context is sufficient pwd_followupfull E2E confirmed no redundant tool call on the follow-up- refresh/current/verify/new-information requests still allow tools
Observed MTP props during sanity:
mtp_enabled=truemtp_initialized=truemtp_failure_reason=nullin_flight=falsemultimodal_available=truemtp_last_completion.success=truemtp_config.n_max=3
Warnings / known limitations
- Some route-only smoke checks can still hit
finish_reason=length. - The grep recap route-only check avoided a tool call but produced empty output
withfinish_reason=length, so it remains inconclusive rather than a full
PASS. - A list recap prompt was ambiguous and selected file reads; this is not treated
as a blocker because the wording can reasonably mean summarizing file content. - Full E2E checks can be too slow on CPU-only systems and must not be treated as
performance benchmarks unless run with benchmark metadata. - This RC does not include new MTP optimization work.
cached=4on route-to-final remains expected when prompt views diverge.
v0.0.1-rc16
v0.0.1-rc16
CPU-first usability and benchmark reproducibility release.
Summary
- Increase the dedicated
system_infofinal budget to avoid truncated hardware/spec answers. - Clarify CPU-first native server documentation and optional MTP usage.
- Add a metadata header to
orbit bench-corefor reproducible benchmark context. - Document bench/profile guidance and conservative server profile suggestions.
- Move the MTP draft model download out of the base install flow and into the optional MTP section.
Runtime behavior
system_info now has a dedicated final-from-tool output budget.
This avoids truncated answers for prompts such as:
tell me specs about this computer
Observed smoke result:
- before:
tks 287->96,stop: length,/continuerequired - after:
tks 289->137,stop: stop, no/continue
This change is scoped to system_info. Small shell, grep, and unknown final budgets remain unchanged.
Documentation
The README now presents the default server path as:
orbit serverNative MTP remains explicit:
orbit server --mtpThe MTP draft model download is documented only in the optional MTP section. The base install flow downloads only the main Gemma model and the multimodal projection model.
Benchmarks
orbit bench-core now prints a metadata header by default, including:
- Orbit commit/tag
- Orbit binary path
- base URL
- workdir
- timeout and max tokens
- Python/platform
- selected Orbit environment variables
- best-effort backend
/propsfields when available
Use --no-metadata to restore minimal benchmark output.
MTP status
MTP remains optional and diagnostic/experimental for performance work.
Validated:
- MTP strict smoke: PASS
- timeout/cancel recovery smoke: PASS
- final
/props:mtp_enabled=true,mtp_initialized=true,mtp_failure_reason=null,in_flight=false
Validation
- Targeted unit gates: PASS
- Full unit gate: PASS, 980 tests
system_infosmoke: PASSbench-coremetadata smoke: PASS- evidence lineage clean smoke: PASS
- KV/final token reduction smoke: PASS
- MTP strict smoke: PASS
- timeout/cancel recovery smoke: PASS
git diff --check: PASS
v0.0.1-rc15
v0.0.1-rc15
Evidence lineage diagnostic release.
Summary
- Add structural evidence lineage diagnostics.
- Add runtime-local
user_turn_idto evidence records. - Add
produced_by_phasefor known tool-call producer paths. - Keep
producer_model_call_idnull for now. - Preserve existing evidence rendering and selection behavior.
- No prompt, routing, tool loop, cache, final-policy, or evidence compaction behavior changes.
Evidence lineage
This RC adds structural lineage fields to evidence records:
evidence_sequencetool_call_iduser_turn_idproduced_by_phaseproducer_model_call_id
producer_model_call_id remains null until a reliable runtime-side producer model-call id exists.
The lineage is diagnostic/structural. It is not used for relevance selection yet.
Smoke findings
Clean-workdir smoke confirmed:
shell_error: PASSdual_shell: PASS- evidence lineage is populated
dual_shellstill includes both needed cards- no evidence selection or compaction behavior changed
The earlier evidence-lineage smoke failure was caused by persistent evidence-store contamination plus a tight timeout, not a runtime regression.
Validation
- Targeted unit gates: PASS
- Full unit gate: PASS, 973 tests
- KV/final token reduction smoke: PASS
- MTP strict smoke: PASS
- Timeout/cancel recovery smoke: PASS
- Evidence lineage smoke with clean workdirs:
shell_error: PASSdual_shell: PASS
git diff --check: PASS
v0.0.1-rc14
v0.0.1-rc14
Diagnostic and token-reduction release for KV/final prompt work.
Summary
- Add cross-phase KV LCP diagnostics.
- Add final/retry prompt component token diagnostics.
- Add per-card evidence token diagnostics.
- Reduce compact final evidence metadata for small final outputs.
- Keep MTP diagnostics and stability gates intact.
KV / final prompt diagnostics
This RC adds diagnostics for understanding why some final/retry calls reuse only a tiny KV prefix.
The diagnostics confirmed:
- route -> final tokenized LCP can be
4 - the first mismatch happens at the system prompt
cached=4on final/retry is prompt-view divergence, not a backend/cache failure
Final prompt token reduction
This RC reduces evaluated tokens in compact final evidence prompts by using a smaller prompt-facing evidence card for small shell/grep/unknown records.
Observed smoke results:
pwd_followup final_from_tool: prompt about154, evaluated about150, correctnesscorrectshell_error final_from_tool: prompt about245, evaluated about241, correctnesscorrectshell_error chat_final: intentionally mostly unchanged, correctnesscorrect
Evidence diagnostics
This RC adds safe, diagnostic-only evidence token breakdowns:
- final/retry component token counts
- per-card evidence token counts
- no raw prompt text, raw commands, raw paths, or raw excerpts are emitted
These diagnostics showed that multi-card chat_final remains dominated by evidence metadata, but no safe lineage/intent discriminator exists yet for reducing those cards without risking dual-shell correctness.
MTP status
MTP remains stable and diagnostic/experimental for performance work.
Validated:
- MTP strict smoke: PASS
- timeout/cancel recovery: PASS
- final
/props:mtp_enabled=true,mtp_initialized=true,mtp_failure_reason=null,in_flight=false
Validation
PYTHONPATH=src python3 -m orbit.native_llama.build_cli --with-mtp-shimpython3 -m compileall -q src tests scripts- targeted unit gates
PYTHONPATH=src python3 -m unittest discover -s tests -q- KV/final token reduction smoke
- MTP strict smoke
- timeout/cancel recovery smoke
git diff --check
v0.0.1-rc13
v0.0.1-rc13
Diagnostic release for MTP observability.
Summary
- Add MTP throughput benchmark diagnostics.
- Expose read-only MTP config diagnostics in
/props. - Expose read-only MTP timing diagnostics in
/props. - Expose read-only MTP validate-efficiency diagnostics in
/props. - Fix unit fake MTP bindings after validate-efficiency diagnostics.
MTP diagnostics
This RC adds observability for:
mtp_last_completionmtp_configmtp_last_timingmtp_last_validate_efficiency
These diagnostics make it possible to inspect:
- draft/accepted/rejected token counts
- acceptance ratio
- target/draft decode calls
- MTP config, including effective
n_max - target validate timing
- draft generation timing
- checkpoint/restore timing
- estimated validate rows requested, consumed, and wasted
Notes
- This release does not introduce MTP performance optimizations.
- Default MTP behavior remains unchanged.
n_max=3remains the default.- Prior experiments with
n_max=2andn_max=4did not improve the tested CPU-only medium-chat workload. - Current diagnostics show target validation as the dominant observed cost in the tested MTP path.
- Raw trace payloads are not exposed through
/props.
Validation
PYTHONPATH=src python3 -m orbit.native_llama.build_cli --with-mtp-shimpython3 -m compileall -q src tests scriptsPYTHONPATH=src python3 -m unittest tests.test_bench_mtp_throughput -qPYTHONPATH=src python3 -m unittest tests.test_native_persistent_mtp -qPYTHONPATH=src python3 -m unittest tests.test_smoke_harness tests.test_native_mtp_experimental -qPYTHONPATH=src python3 -m unittest tests.test_runtime_status tests.test_cli tests.test_repl tests.test_commands -qPYTHONPATH=src python3 -m unittest discover -s tests -q- MTP strict smoke: PASS
- Timeout/cancel recovery smoke: PASS
git diff --check
v0.0.1-rc12
Orbit v0.0.1-rc12
Prerelease candidate built from main after PR #99, PR #100, PR #101, PR #102, and PR #104.
Included since rc11
- CLI startup runtime banner and
/statuspanel. - Smoke/benchmark harness for repeatable runtime validation.
- More reliable
--mtp-requiredsmoke harness behavior. - Persistent MTP reset before completion to avoid stale request boundary reuse.
- MTP timeout/cancel cleanup so interrupted long completions do not poison the session.
- Smoke harness wall-clock per-step timeout and bounded
/cancelcleanup.
Validation
- Full unittest discover PASS.
- compileall PASS.
- git diff --check PASS.
- CLI smoke PASS.
- Smoke harness serial scenarios PASS.
- MTP strict gate PASS with
simple_chat --mtp-required. - MTP timeout/cancel recovery PASS.
Notes
- The smoke harness is diagnostic infrastructure, not a runtime optimization.
- On CPU-only systems, prefer single scenarios or small scenario groups with explicit timeout.
pwd_followup,shell_error, andshell20are not used as primary strict MTP proof because they can run through route/final paths where MTP is not used by design.- Dual shell evidence optimization remains paused as correctness-sensitive.
- Final/retry cache anchor experiments remain paused.
v0.0.1-rc11
Orbit v0.0.1-rc11 Release Notes
Orbit v0.0.1-rc11 supersedes v0.0.1-rc10 for the post-RC10 stabilization
line.
Code validation was completed at:
4f66d414aa22a0307c0d026c2f52d5c8f38bf069
The existing v0.0.1-rc10 tag remains unchanged and points to:
49f660bf8064687a0518bb5b1f63f257191a0e97
RC11 keeps the native MTP stable-with-guardrails posture. It does not change
MTP, KV behavior, vendored llama.cpp, the primary route contract, or the
model-driven tool decision boundary.
Delta From v0.0.1-rc10
Operational prompt-view cleanup
RC11 includes PR #96, which reduces prompt-view bloat in operational runtime
prompts without changing routing behavior.
The change:
- uses a route-only operational evidence projection for route contexts
- removes audit-only metadata such as raw refs and hashes from route-only
prompt views - preserves EvidenceStore storage, sidecars, and final/audit metadata
- caps the latest assistant message only in operational final/retry prompts
when recent evidence exists
This improves cumulative prompt cost for shell follow-ups while preserving
correctness and tool behavior.
Revert of dual shell final view experiment
RC11 explicitly excludes PR #98 by reverting it before release.
The dual-shell final view prototype reduced tokens aggressively, but post-merge
validation reproduced a correctness regression where:
summarize the outputmixed the latest successful shell output with the
previous failed command
RC11 therefore keeps the stable post-PR #96 behavior instead of the failed
shell dual-view experiment.
Included From Earlier RCs
RC11 keeps the RC10 line intact, including:
- bounded route/final/retry evidence views
- WEB_FINAL_VIEW support for
results:none - repair and route guards
- persistent MTP cap fix
- Dynamic Completion Budget Policy
Validation
Final validation on main at 4f66d414aa22a0307c0d026c2f52d5c8f38bf069:
- targeted suite: PASS, 231
- wider targeted suite: PASS, 264
- full unittest suite: PASS, 915
python3 -m compileall -q src tests scripts: PASSgit diff --check: PASSorbit server --mtp: PASS- MTP initialized: yes
- mmproj/multimodal detected: yes
- route-prefix prewarm succeeded: yes
- route prefix token count: 694
route_anchor_hit=true: yesrestore_used=true: yes- double-free/SIGABRT/segfault observed: no
- server shutdown: clean
Functional smoke:
- web search + shell follow-up: PASS
run pwdfollow-up: baseline behavior preserved, no redundant tool call- failed command + follow-up: PASS
- shell20 summary: PASS
- fake tool output observed: no
- raw leak observed: no
- tool loop observed: no
Known Limitations
- Dual shell evidence remains correctness-first and therefore more costly than
the failed compression experiments. - Final/retry cache reuse remains low.
- Web/read large outputs can remain CPU-costly.
- Model-side quality on exact references can vary.
- Long sessions can still accumulate history and increase prompt cost.
- Large read/direct-content outputs may require
/continue.
Upgrade Notes
For the current native workflow:
orbit server --mtpUseful controls remain:
ORBIT_TOOLS=off
ORBIT_KV_PREFIX_PREWARM=off
ORBIT_KV_PREFIX_ANCHOR=off
ORBIT_KV_DIAG=1ORBIT_KV_DIAG=1 is diagnostic only. It is not required to enable KV behavior.
RC11 is a new prerelease candidate. Previous RC tags and releases remain
unchanged.
v0.0.1-rc9
Orbit v0.0.1-rc9 Release Notes
Orbit v0.0.1-rc9 closes the post-tool evidence flow stabilization phase after
v0.0.1-rc8.
RC9 keeps the native MTP stable-with-guardrails posture from RC8. It does not
change MTP, KV behavior, vendored llama.cpp, route policy, tool policy, or the
model-driven decision boundary.
Highlights
Tool evidence separated from prompt history
Orbit now stores tool evidence as runtime state instead of relying on raw tool
results in conversation history.
The new EvidenceStore flow:
- preserves raw tool output in RAM and sidecar files
- stores bounded audit markers in promptable history
- uses per-event evidence ids to avoid collisions
- keeps
raw_sha256as the content audit hash - reloads sidecar indexes for existing sessions
- degrades clearly when raw sidecar content is unavailable
- clears in-memory EvidenceStore state on
/reset
This reduces post-tool prompt bloat while preserving auditability and raw
evidence outside the prompt.
Bounded post-tool prompt views
RC9 adds bounded route, final, retry, and repair prompt views derived from
EvidenceStore projections.
The runtime now avoids reinserting large raw tool results into route/final
prompts and uses compact evidence cards for:
- shell output and shell errors
- grep/search matches
- web search results
- read/direct-content outputs
- unknown tool output
History remains useful for audit and compatibility, but EvidenceStore is the
primary source for operational evidence.
Web finalization compact view
Web final_from_tool now uses a compact WEB_FINAL_VIEW when structured web
evidence is available.
The view includes the current user request, query/status/result count, bounded
top title/domain/snippet evidence, and audit references. It excludes full
history, long tool history, raw tool output, and tools schema.
Local smoke reduced the OpenAI web final prompt from roughly 1864 tokens to
roughly 369 tokens while preserving a single web search and finish_reason=stop.
Evidence projection cleanup
RC9 includes focused prompt-size reductions without changing model decisions:
- deduplicate structured final evidence for web and grep/search
- tighten bounded excerpts for shell/unknown evidence
- preserve bounded raw excerpts for shell-error evidence
- compact post-tool route inventory by removing route-unneeded audit metadata
- keep raw refs and hashes in sidecar/final/audit views
These changes are structural context reductions, not semantic shortcuts.
Repair and retry guardrails
RC9 reduces expensive internal retries that do not add useful information:
- skip final repair for non-empty
finish_reason=stopanswers classified only
asincomplete_stub/plain_incomplete - keep repair for empty, malformed, reasoning-like, length, and too-short
large-tool answers - skip route repair for blank/non-repairable route length output
- preserve route prose rejection and model-guided TOOL/FINAL decisions
Search and shell evidence quality
Grep/search evidence cards now preserve useful facts such as file paths, line
numbers, match excerpts, match counts, and file counts when available.
Shell route projections include bounded stdout/stderr excerpts for small output,
which keeps useful follow-up evidence visible without reintroducing raw bloat.
Validation
Local validation on main after PR #89:
- targeted runtime/evidence/tool tests: PASS, 187
- full unittest suite: PASS, 903
python3 -m compileall -q src tests scripts: PASSgit diff --check: PASSorbit server --mtp: PASS- MTP initialized: yes
- mmproj/multimodal detected: yes
- route-prefix prewarm succeeded: yes
- route prefix token count: 694
route_anchor_hit=true: yesrestore_used=true: yes- double-free/SIGABRT/segfault observed: no
- server shutdown: clean
Validation matrix:
- chat simple: PASS
- shell small + follow-up: PASS/PARTIAL
- shell error + follow-up: PASS
- shell medium + referential follow-ups: PASS, no timeout
- grep/search + follow-up: PASS
- web search + follow-up: PASS
- read/direct-content + follow-up: PARTIAL, non-blocking
Known limitations
- Final/retry cache reuse remains low because the active KV slot is usually
warm on the prior route prompt, not final prompts. - Read/direct-content referential follow-up quality can still be partial even
when evidence is visible. - Web/read large outputs can remain CPU-costly.
- Model-side quality on exact references can vary.
- Real multimodal input tasks still need separate end-to-end validation.
- MTP remains guarded and is not a performance guarantee for every completion.
Follow-up work:
- Dynamic Completion Budget Policy for route/tool/final/repair completion
kinds, so Orbit can avoid truncation and overly long internal generations
without changing prompt policy.
Upgrade notes
For the current native workflow:
orbit server --mtpUseful controls remain:
ORBIT_TOOLS=off
ORBIT_KV_PREFIX_PREWARM=off
ORBIT_KV_PREFIX_ANCHOR=off
ORBIT_KV_DIAG=1ORBIT_KV_DIAG=1 is diagnostic only. It is not required to enable KV behavior.
RC9 is a new prerelease candidate. Previous RC tags and releases remain
unchanged.
v0.0.1-rc10
Orbit v0.0.1-rc10 Release Notes
Orbit v0.0.1-rc10 supersedes v0.0.1-rc9 for the final RC9 validation line.
Code validation was completed at:
49f660bf8064687a0518bb5b1f63f257191a0e97
The existing v0.0.1-rc9 tag remains unchanged and points to:
4369c3d552b542c2f36e50eeeef8d50d550518f6
RC10 keeps the native MTP stable-with-guardrails posture. It does not change
MTP, KV behavior, vendored llama.cpp, route policy, tool policy, or the
model-driven decision boundary.
Delta From v0.0.1-rc9
Compact web final view for no-result searches
WEB_FINAL_VIEW now also covers web_search records with
status=none / results:none.
This avoids falling back to the more expensive legacy final path when a web
search returns no snippets. The compact view preserves the query, status,
result count, and audit metadata without reinserting long raw excerpts.
Evidence retrieval prototype not included
An experimental model-guided evidence retrieval prototype was tested and then
rolled back before RC10.
It is not included in this release candidate.
The rollback was intentional because the prototype route contract could compete
with normal tool routing after prior evidence, which violated the invariant that
explicit tool routes must remain model-guided and unchanged.
Included From The RC9 Line
Tool evidence separated from prompt history
Orbit stores tool evidence as runtime state instead of relying on raw tool
results in conversation history.
The EvidenceStore flow:
- preserves raw tool output in RAM and sidecar files
- stores bounded audit markers in promptable history
- uses per-event evidence ids to avoid collisions
- keeps
raw_sha256as the content audit hash - reloads sidecar indexes for existing sessions
- degrades clearly when raw sidecar content is unavailable
- clears in-memory EvidenceStore state on
/reset
This reduces post-tool prompt bloat while preserving auditability and raw
evidence outside the prompt.
Bounded post-tool prompt views
Route, final, retry, and repair prompt views are derived from bounded
EvidenceStore projections.
The runtime avoids reinserting large raw tool results into route/final prompts
and uses compact evidence cards for:
- shell output and shell errors
- grep/search matches
- web search results
- read/direct-content outputs
- unknown tool output
Web finalization compact view
Web final_from_tool uses compact structured evidence when available.
The view includes the current user request, query/status/result count, bounded
title/domain/snippet evidence when present, and audit references. It excludes
full history, long tool history, raw tool output, and tools schema.
Evidence projection cleanup
The RC9 line includes focused prompt-size reductions without changing model
decisions:
- deduplicate structured final evidence for web and grep/search
- tighten bounded excerpts for shell/unknown evidence
- preserve bounded raw excerpts for shell-error evidence
- compact post-tool route inventory by removing route-unneeded audit metadata
- keep raw refs and hashes in sidecar/final/audit views
Repair and retry guardrails
The runtime avoids expensive internal retries that do not add useful
information:
- skip final repair for non-empty
finish_reason=stopanswers classified only
asincomplete_stub/plain_incomplete - keep repair for empty, malformed, reasoning-like, length, and too-short
large-tool answers - skip route repair for blank/non-repairable route length output
- preserve route prose rejection and model-guided TOOL/FINAL decisions
Dynamic completion budgets
Internal max_tokens selection is centralized for route, tool-call, chat,
final, retry, and repair completions using structural runtime signals only.
The budget policy does not inspect user text, use keyword heuristics, or change
route/tool/final decisions.
Persistent MTP generation cap fix
Persistent MTP no longer clamps the real generation limit to 32 tokens.
Requests with larger max_tokens can generate beyond 32 tokens, and
finish_reason reflects the real generation budget.
Validation
Final validation on main at 49f660bf8064687a0518bb5b1f63f257191a0e97:
- targeted suite: PASS, 260
- full unittest suite: PASS, 911
python3 -m compileall -q src tests scripts: PASSgit diff --check: PASS- prototype evidence retrieval residues: none
orbit server --mtp: PASS- MTP initialized: yes
- mmproj/multimodal detected: yes
- route-prefix prewarm succeeded: yes
- route prefix token count: 694
route_anchor_hit=true: yesrestore_used=true: yes- double-free/SIGABRT/segfault observed: no
- server shutdown: clean
Validation matrix:
- chat simple: PASS
- shell small + follow-up: PASS
- shell error + follow-up: PASS
- shell medium + referential follow-ups: PASS, no timeout
- grep/search + follow-up: PASS
- web search + follow-up: PASS
- read/direct-content + follow-up: PARTIAL, non-blocking
- persistent MTP cap regression: PASS
- dynamic completion budget spot checks: PASS
Known Limitations
- Final/retry cache reuse remains low because the active KV slot is usually
warm on the prior route prompt, not final prompts. - Web/read large outputs can remain CPU-costly.
- Model-side quality on exact references can vary.
- Long sessions can still accumulate history and increase prompt cost.
- Large read/direct-content outputs may require
/continue. - Real multimodal input tasks still need separate end-to-end validation.
- MTP remains guarded and is not a performance guarantee for every completion.
Upgrade Notes
For the current native workflow:
orbit server --mtpUseful controls remain:
ORBIT_TOOLS=off
ORBIT_KV_PREFIX_PREWARM=off
ORBIT_KV_PREFIX_ANCHOR=off
ORBIT_KV_DIAG=1ORBIT_KV_DIAG=1 is diagnostic only. It is not required to enable KV behavior.
RC10 is a new prerelease candidate. Previous RC tags and releases remain
unchanged.
v0.0.1-rc8
Orbit v0.0.1-rc8 Release Notes
Orbit v0.0.1-rc8 closes the current native MTP stabilization phase after
v0.0.1-rc7.
RC8 documents MTP as supported and stabilized in the native server path with
runtime guardrails. It does not make MTP an always-on path for every completion,
and it is not a final performance release.
Highlights
Native MTP stable with runtime guardrails
Native MTP is supported in the orbit server --mtp path and has been validated
with the current native server workflow.
The runtime can now control MTP per completion with the explicit
allow_mtp_experimental payload flag:
- missing flag: preserves existing behavior
false: vetoes MTP for that completiontrue: permits MTP only if the existing runtime/backend guardrails also allow it
This is a control-plane guardrail. It does not change prompts, routing policy,
tool policy, final-answer policy, evidence policy, or ROUTE_MAX_TOKENS.
MTP is not always-on everywhere
MTP remains available in the native server path, but Orbit can disable it for
specific internal completions where local measurements showed worse stability or
latency.
In particular, tools-on internal finalization paths such as chat_final_retry
and final_from_tool can send allow_mtp_experimental=false.
Route-prefix anchor, KV prewarm, and restore behavior remain compatible with
this guardrail.
Native server, KV, and multimodal smoke
The RC8 validation path uses:
orbit server --mtp- MTP initialized in the native server
- mmproj/multimodal capability loaded or detected
- KV route-prefix prewarm enabled
- route-prefix anchor restore for tools-on route calls
- unified vendored llama.cpp runtime
Orbit continues to use vendored llama.cpp libraries directly. RC8 does not add a
dependency on llama-server and does not update the vendored llama.cpp copy.
UX stabilization carried forward
RC8 includes the RC7 UX/correctness work:
- web-search finalization no longer gets stuck after max-token finalization
- streaming/progress labels distinguish tool decision, final answer, and retry
- route retry UX is clearer
- internal route prose is not accepted as final output
- README quickstart is aligned with
orbit server --mtp
Validation
Local validation on main after PR #80:
- full unittest suite: PASS
python3 -m compileall -q src tests scripts: PASSgit diff --check: PASSorbit server --mtp: PASS- MTP initialized: yes
- mmproj/multimodal detected: yes
- route-prefix prewarm succeeded: yes
- route prefix token count: 694
route_anchor_hit=true: yesrestore_used=true: yes- duplicate llama runtime observed: no
- double-free/SIGABRT/segfault observed: no
- server shutdown: clean
CLI smoke covered:
- tools-on, think-off:
hi, how are you? - tools-on, think-off multi-turn:
who designed you? - tools-on:
run pwd - tools-on:
search online for OpenAI
Known limitations
- MTP is guarded, not always-on everywhere.
- MTP is not a performance guarantee for every completion.
- Web, read, and
think onpaths can still be slow on CPU. - Post-tool evidence bloat remains an open UX/performance issue.
- Route-contract drift is mitigated by retry/UX guardrails but not eliminated.
- Real multimodal input tasks still need separate end-to-end validation.
- The vendored llama.cpp copy is not updated in RC8.
Upgrade notes
For the current native workflow:
orbit server --mtpUseful controls remain:
ORBIT_TOOLS=off
ORBIT_KV_PREFIX_PREWARM=off
ORBIT_KV_PREFIX_ANCHOR=off
ORBIT_KV_DIAG=1ORBIT_KV_DIAG=1 is diagnostic only. It is not required to enable KV behavior.
RC8 is a new prerelease candidate. Previous RC tags and releases remain
unchanged.