* fix(routing): auto-migrate v0.3.0 inline routing_preferences to v0.4.0 top-level
Lift inline routing_preferences under each model_provider into the
top-level routing_preferences list with merged models[] and bump
version to v0.4.0, with a deprecation warning. Existing v0.3.0
demo configs (Claude Code, Codex, preference_based_routing, etc.)
keep working unchanged. Schema flags the inline shape as deprecated
but still accepts it. Docs and skills updated to canonical top-level
multi-model form.
* test(common): bump reference config assertion to v0.4.0
The rendered reference config was bumped to v0.4.0 when its inline
routing_preferences were lifted to the top level; align the
configuration deserialization test with that change.
* fix(config_generator): bump version to v0.4.0 up front in migration
Move the v0.3.0 -> v0.4.0 version bump to the top of
migrate_inline_routing_preferences so it runs unconditionally,
including for configs that already declare top-level
routing_preferences at v0.3.0. Previously the bump only fired
when inline migration produced entries, leaving top-level v0.3.0
configs rejected by brightstaff's v0.4.0 gate. Tests updated to
cover the new behavior and to confirm we never downgrade newer
versions.
* fix(config_generator): gate routing_preferences migration on version < v0.4.0
Short-circuit the migration when the config already declares v0.4.0
or newer. Anything at v0.4.0+ is assumed to be on the canonical
top-level shape and is passed through untouched, including stray
inline preferences (which are the author's bug to fix). Only v0.3.0
and older configs are rewritten and bumped.
* support configurable orchestrator model via orchestration config section
* add self-hosting docs and demo for Plano-Orchestrator
* list all Plano-Orchestrator model variants in docs
* use overrides for custom routing and orchestration model
* update docs
* update orchestrator model name
* rename arch provider to plano, use llm_routing_model and agent_orchestration_model
* regenerate rendered config reference
* Add Codex CLI support; xAI response improvements
* Add native Plano running check and update CLI agent error handling
* adding PR suggestions for transformations and code quality
* message extraction logic in ResponsesAPIRequest
* xAI support for Responses API by routing to native endpoint + refactor code
* Add OpenClaw + Plano intelligent routing demo
Demonstrates preference-based routing for personal AI assistants:
Kimi K2.5 handles conversation and agentic tasks, Claude handles
code generation, testing, and complex reasoning — with zero
application code changes and ~48% cost savings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove redundant provider_interface from Kimi K2.5 config
The openai/ prefix in the model name already sets the provider
interface. Setting provider_interface explicitly conflicts with it
and fails config validation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Simplify config to v0.3.0 format, remove explicit Arch-Router entry
Arch-Router is implicit when routing_preferences are defined.
Aligns with the preference_based_routing demo pattern.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Clean up Ollama/Arch-Router references, make Jaeger optional
Router is handled internally by Plano — no need for Ollama or
explicit Arch-Router setup. Jaeger is kept as an optional step
in the README for developers who want tracing visibility.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove run_demo.sh, use planoai CLI directly
The planoai CLI already handles startup. README now uses
planoai up/down directly instead of a wrapper script.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove docker-compose.yaml, use inline docker run for Jaeger
No need for a compose file when Jaeger is the only optional
service. A single docker run command in the README is simpler.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Clarify testing: OpenClaw channels vs direct Plano requests
Primary testing is through messaging channels (Telegram, Slack,
etc.) with log monitoring. The test_routing.sh script is now
documented as an optional direct verification tool.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add OpenClaw onboarding instructions to README
Includes install, onboarding wizard, channel setup, doctor
check, and how to point the gateway at Plano.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Use OpenClaw onboarding wizard for Plano provider setup
Replace manual JSON config with instructions to use the
openclaw onboard wizard to set up a custom OpenAI-compatible
provider pointing at Plano.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fixed readme and removed unnecessary testing.sh file
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
Demonstrates preference-based routing for personal AI assistants:
Kimi K2.5 handles conversation and agentic tasks, Claude handles
code generation, testing, and complex reasoning — with zero
application code changes and ~48% cost savings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update all GitHub Actions workflows and Dockerfiles to use Python 3.14
as the default version. Remove the upper bound on requires-python in
model_choice_with_test_harness to allow 3.14+. The CLI's
requires-python stays at >=3.10 for broad compatibility.
* fixing the README for multi-agent orchestration
* fixed issues where the multi-intent queries weren't being properly handled by GPT-40
* more fixes for the README.md and tracing visuals
* removed remnant Arch README.md
---------
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
* cleaning up plano cli commands
* adding support for wildcard model providers
* fixing compile errors
* fixing bugs related to default model provider, provider hint and duplicates in the model provider list
* fixed cargo fmt issues
* updating tests to always include the model id
* using default for the prompt_gateway path
* fixed the model name, as gpt-5-mini-2025-08-07 wasn't in the config
* making sure that all aliases and models match the config
* fixed the config generator to allow for base_url providers LLMs to include wildcard models
* re-ran the models list utility and added a shell script to run it
* updating docs to mention wildcard model providers
* updated provider_models.json to yaml, added that file to our docs for reference
* updating the build docs to use the new root-based build
---------
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
* http-filter: add fully http based demo (remove MCP)
* Fix pre-commit formatting
* add instructions about uv build/sync in cli (#675)
* Musa/demo fix (#676)
* fix demo with travel agent
* Update .gitignore
* remove sse chunk rendering
* ensure that request id is consistent (#677)
* ensure that request id is consistent
* remove test debug/info statements
* Introduce signals change (#655)
* adding support for signals
* reducing false positives for signals like positive interaction
* adding docs. Still need to fix the messages list, but waiting on PR #621
* Improve frustration detection: normalize contractions and refine punctuation
* Further refine test cases with longer messages
* minor doc changes
* fixing echo statement for build
* fixing the messages construction and using the trait for signals
* update signals docs
* fixed some minor doc changes
* added more tests and fixed docuemtnation. PR 100% ready
* made fixes based on PR comments
* Optimize latency
1. replace sliding window approach with trigram containment check
2. add code to pre-compute ngrams for patterns
* removed some debug statements to make tests easier to read
* PR comments to make ObservableStreamProcessor accept optonal Vec<Messagges>
* fixed PR comments
---------
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
Co-authored-by: MeiyuZhong <mariazhong9612@gmail.com>
Co-authored-by: nehcgs <54548843+nehcgs@users.noreply.github.com>
* pass request_id in orchestrator and routing model (#678)
* release 0.4.2 (#679)
* tweaks to web and docs to align to 0.4.2 (#680)
* tweaks to web and docs to align to 0.4.2
* made our release banner clickable
---------
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
* Added request id across agents
* fix http_filter agent: request id + pre-commit
---------
Co-authored-by: Adil Hafeez <adil@katanemo.com>
Co-authored-by: Musa <malikmusa1323@gmail.com>
Co-authored-by: Salman Paracha <salman.paracha@gmail.com>
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
Co-authored-by: nehcgs <54548843+nehcgs@users.noreply.github.com>