Adil Hafeez
421bff03ac
fix: prevent index-out-of-bounds panic in signal analyzer follow-up
...
The signals analyzer preprocesses messages by filtering out any message
without extractable text (tool calls, tool results, empty content), but
it stores each surviving entry's ORIGINAL conversation index in the
tuple. `analyze_follow_up` then used that stored index to look up
previous user messages inside `normalized_messages`, which panicked
("index out of bounds: the len is N but the index is M") whenever any
message was filtered out before the current turn — a common pattern for
Anthropic conversations containing <tool_use_error> blocks.
The panic is caught at the tokio task boundary so requests still
complete with the default model, but every affected request logs a
noisy stack trace and silently skips signal analysis, which can degrade
routing decisions.
Fix by walking the normalized list with `iter().enumerate()` and using
the inner position for index lookups. The stored original index is kept
only for display ("Turn N") strings.
Includes a regression test that reproduces the exact panic shape via the
public `analyze` entry point.
2026-04-17 18:21:57 -07:00
Adil Hafeez
37600fd07a
fix: passthrough_auth accepts Anthropic x-api-key and normalizes to upstream format ( #892 )
CI / pre-commit (push) Waiting to run
CI / plano-tools-tests (push) Waiting to run
CI / native-smoke-test (push) Waiting to run
CI / docker-build (push) Waiting to run
CI / validate-config (push) Waiting to run
CI / security-scan (push) Blocked by required conditions
CI / test-prompt-gateway (push) Blocked by required conditions
CI / test-model-alias-routing (push) Blocked by required conditions
CI / test-responses-api-with-state (push) Blocked by required conditions
CI / e2e-plano-tests (3.10) (push) Blocked by required conditions
CI / e2e-plano-tests (3.11) (push) Blocked by required conditions
CI / e2e-plano-tests (3.12) (push) Blocked by required conditions
CI / e2e-plano-tests (3.13) (push) Blocked by required conditions
CI / e2e-plano-tests (3.14) (push) Blocked by required conditions
CI / e2e-demo-preference (push) Blocked by required conditions
CI / e2e-demo-currency (push) Blocked by required conditions
Publish docker image (latest) / build-arm64 (push) Waiting to run
Publish docker image (latest) / build-amd64 (push) Waiting to run
Publish docker image (latest) / create-manifest (push) Blocked by required conditions
Build and Deploy Documentation / build (push) Waiting to run
2026-04-17 17:23:05 -07:00
Adil Hafeez
0f67b2c806
planoai obs: live LLM observability TUI ( #891 )
2026-04-17 14:03:47 -07:00
Adil Hafeez
1f701258cb
Zero-config planoai up: pass-through proxy with auto-detected providers ( #890 )
2026-04-17 13:11:12 -07:00
Adil Hafeez
711e4dd07d
Add DigitalOcean as a first-class LLM provider ( #889 )
2026-04-17 12:25:34 -07:00
Musa
743d074184
add Plano agent skills framework and rule set ( #797 )
...
CI / pre-commit (push) Waiting to run
CI / plano-tools-tests (push) Waiting to run
CI / native-smoke-test (push) Waiting to run
CI / docker-build (push) Waiting to run
CI / validate-config (push) Waiting to run
CI / security-scan (push) Blocked by required conditions
CI / test-prompt-gateway (push) Blocked by required conditions
CI / test-model-alias-routing (push) Blocked by required conditions
CI / test-responses-api-with-state (push) Blocked by required conditions
CI / e2e-plano-tests (3.10) (push) Blocked by required conditions
CI / e2e-plano-tests (3.11) (push) Blocked by required conditions
CI / e2e-plano-tests (3.12) (push) Blocked by required conditions
CI / e2e-plano-tests (3.13) (push) Blocked by required conditions
CI / e2e-plano-tests (3.14) (push) Blocked by required conditions
CI / e2e-demo-preference (push) Blocked by required conditions
CI / e2e-demo-currency (push) Blocked by required conditions
Publish docker image (latest) / build-arm64 (push) Waiting to run
Publish docker image (latest) / build-amd64 (push) Waiting to run
Publish docker image (latest) / create-manifest (push) Blocked by required conditions
Build and Deploy Documentation / build (push) Waiting to run
* feat: add initial documentation for Plano Agent Skills
* feat: readme with examples
* feat: add detailed skills documentation and examples for Plano
---------
Co-authored-by: Adil Hafeez <adil.hafeez@gmail.com>
2026-04-16 13:16:51 -07:00
Adil Hafeez
d39d7ddd1c
release 0.4.19 ( #887 )
CI / pre-commit (push) Waiting to run
CI / plano-tools-tests (push) Waiting to run
CI / native-smoke-test (push) Waiting to run
CI / docker-build (push) Waiting to run
CI / validate-config (push) Waiting to run
CI / security-scan (push) Blocked by required conditions
CI / test-prompt-gateway (push) Blocked by required conditions
CI / test-model-alias-routing (push) Blocked by required conditions
CI / test-responses-api-with-state (push) Blocked by required conditions
CI / e2e-plano-tests (3.10) (push) Blocked by required conditions
CI / e2e-plano-tests (3.11) (push) Blocked by required conditions
CI / e2e-plano-tests (3.12) (push) Blocked by required conditions
CI / e2e-plano-tests (3.13) (push) Blocked by required conditions
CI / e2e-plano-tests (3.14) (push) Blocked by required conditions
CI / e2e-demo-preference (push) Blocked by required conditions
CI / e2e-demo-currency (push) Blocked by required conditions
Publish docker image (latest) / build-arm64 (push) Waiting to run
Publish docker image (latest) / build-amd64 (push) Waiting to run
Publish docker image (latest) / create-manifest (push) Blocked by required conditions
Build and Deploy Documentation / build (push) Waiting to run
2026-04-15 16:49:50 -07:00
Adil Hafeez
90b926c2ce
use plano-orchestrator for LLM routing, remove arch-router ( #886 )
2026-04-15 16:41:42 -07:00
Musa
980faef6be
Redis-backed session cache for cross-replica model affinity ( #879 )
...
CI / pre-commit (push) Has been cancelled
CI / plano-tools-tests (push) Has been cancelled
CI / native-smoke-test (push) Has been cancelled
CI / docker-build (push) Has been cancelled
CI / validate-config (push) Has been cancelled
Publish docker image (latest) / build-arm64 (push) Has been cancelled
Publish docker image (latest) / build-amd64 (push) Has been cancelled
Build and Deploy Documentation / build (push) Has been cancelled
CI / security-scan (push) Has been cancelled
CI / test-prompt-gateway (push) Has been cancelled
CI / test-model-alias-routing (push) Has been cancelled
CI / test-responses-api-with-state (push) Has been cancelled
CI / e2e-plano-tests (3.10) (push) Has been cancelled
CI / e2e-plano-tests (3.11) (push) Has been cancelled
CI / e2e-plano-tests (3.12) (push) Has been cancelled
CI / e2e-plano-tests (3.13) (push) Has been cancelled
CI / e2e-plano-tests (3.14) (push) Has been cancelled
CI / e2e-demo-preference (push) Has been cancelled
CI / e2e-demo-currency (push) Has been cancelled
Publish docker image (latest) / create-manifest (push) Has been cancelled
* add pluggable session cache with Redis backend
* add Redis session affinity demos (Docker Compose and Kubernetes)
* address PR review feedback on session cache
* document Redis session cache backend for model affinity
* sync rendered config reference with session_cache addition
* add tenant-scoped Redis session cache keys and remove dead log_affinity_hit
- Add tenant_header to SessionCacheConfig; when set, cache keys are scoped
as plano:affinity:{tenant_id}:{session_id} for multi-tenant isolation
- Thread tenant_id through RouterService, routing_service, and llm handlers
- Use Cow<'_, str> in session_key to avoid allocation when no tenant is set
- Remove unused log_affinity_hit (logging was already inlined at call sites)
* remove session_affinity_redis and session_affinity_redis_k8s demos
2026-04-13 19:30:47 -07:00
Musa
128059e7c1
release 0.4.18 ( #878 )
CI / security-scan (push) Blocked by required conditions
CI / test-prompt-gateway (push) Blocked by required conditions
CI / test-model-alias-routing (push) Blocked by required conditions
CI / test-responses-api-with-state (push) Blocked by required conditions
CI / e2e-plano-tests (3.10) (push) Blocked by required conditions
CI / e2e-plano-tests (3.11) (push) Blocked by required conditions
CI / e2e-plano-tests (3.12) (push) Blocked by required conditions
CI / e2e-plano-tests (3.13) (push) Blocked by required conditions
CI / e2e-plano-tests (3.14) (push) Blocked by required conditions
CI / e2e-demo-preference (push) Blocked by required conditions
CI / e2e-demo-currency (push) Blocked by required conditions
CI / pre-commit (push) Has been cancelled
CI / plano-tools-tests (push) Has been cancelled
CI / native-smoke-test (push) Has been cancelled
CI / docker-build (push) Has been cancelled
CI / validate-config (push) Has been cancelled
Publish docker image (latest) / build-arm64 (push) Has been cancelled
Publish docker image (latest) / build-amd64 (push) Has been cancelled
Publish docker image (latest) / create-manifest (push) Has been cancelled
Build and Deploy Documentation / build (push) Has been cancelled
2026-04-09 13:12:45 -07:00
Adil Hafeez
8dedf0bec1
Model affinity for consistent model selection in agentic loops ( #827 )
CI / pre-commit (push) Waiting to run
CI / plano-tools-tests (push) Waiting to run
CI / native-smoke-test (push) Waiting to run
CI / docker-build (push) Waiting to run
CI / validate-config (push) Waiting to run
CI / security-scan (push) Blocked by required conditions
CI / test-prompt-gateway (push) Blocked by required conditions
CI / test-model-alias-routing (push) Blocked by required conditions
CI / test-responses-api-with-state (push) Blocked by required conditions
CI / e2e-plano-tests (3.10) (push) Blocked by required conditions
CI / e2e-plano-tests (3.11) (push) Blocked by required conditions
CI / e2e-plano-tests (3.12) (push) Blocked by required conditions
CI / e2e-plano-tests (3.13) (push) Blocked by required conditions
CI / e2e-plano-tests (3.14) (push) Blocked by required conditions
CI / e2e-demo-preference (push) Blocked by required conditions
CI / e2e-demo-currency (push) Blocked by required conditions
Publish docker image (latest) / build-arm64 (push) Waiting to run
Publish docker image (latest) / build-amd64 (push) Waiting to run
Publish docker image (latest) / create-manifest (push) Blocked by required conditions
Build and Deploy Documentation / build (push) Waiting to run
2026-04-08 17:32:02 -07:00
Musa
978b1ea722
Add first-class Xiaomi provider support ( #863 )
...
CI / pre-commit (push) Has been cancelled
CI / plano-tools-tests (push) Has been cancelled
CI / native-smoke-test (push) Has been cancelled
CI / docker-build (push) Has been cancelled
CI / validate-config (push) Has been cancelled
CI / security-scan (push) Has been cancelled
CI / test-prompt-gateway (push) Has been cancelled
CI / test-model-alias-routing (push) Has been cancelled
CI / test-responses-api-with-state (push) Has been cancelled
CI / e2e-plano-tests (3.10) (push) Has been cancelled
CI / e2e-plano-tests (3.11) (push) Has been cancelled
CI / e2e-plano-tests (3.12) (push) Has been cancelled
CI / e2e-plano-tests (3.13) (push) Has been cancelled
CI / e2e-plano-tests (3.14) (push) Has been cancelled
CI / e2e-demo-preference (push) Has been cancelled
CI / e2e-demo-currency (push) Has been cancelled
Publish docker image (latest) / build-arm64 (push) Has been cancelled
Publish docker image (latest) / build-amd64 (push) Has been cancelled
Publish docker image (latest) / create-manifest (push) Has been cancelled
Build and Deploy Documentation / build (push) Has been cancelled
* feat(provider): add xiaomi as first-class provider
* feat(demos): add xiaomi mimo integration demo
* refactor(demos): remove Xiaomi MiMo integration demo and update documentation
* updating model list and adding the xiamoi models
---------
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-389.local>
2026-04-04 09:58:36 -07:00
Adil Hafeez
9406af3a09
release 0.4.17 ( #869 )
CI / pre-commit (push) Waiting to run
CI / plano-tools-tests (push) Waiting to run
CI / native-smoke-test (push) Waiting to run
CI / docker-build (push) Waiting to run
CI / validate-config (push) Waiting to run
CI / security-scan (push) Blocked by required conditions
CI / test-prompt-gateway (push) Blocked by required conditions
CI / test-model-alias-routing (push) Blocked by required conditions
CI / test-responses-api-with-state (push) Blocked by required conditions
CI / e2e-plano-tests (3.10) (push) Blocked by required conditions
CI / e2e-plano-tests (3.11) (push) Blocked by required conditions
CI / e2e-plano-tests (3.12) (push) Blocked by required conditions
CI / e2e-plano-tests (3.13) (push) Blocked by required conditions
CI / e2e-plano-tests (3.14) (push) Blocked by required conditions
CI / e2e-demo-preference (push) Blocked by required conditions
CI / e2e-demo-currency (push) Blocked by required conditions
Publish docker image (latest) / build-arm64 (push) Waiting to run
Publish docker image (latest) / build-amd64 (push) Waiting to run
Publish docker image (latest) / create-manifest (push) Blocked by required conditions
Build and Deploy Documentation / build (push) Waiting to run
2026-04-03 10:05:33 -07:00
Musa
aa16a6dc4b
ci(e2e): stabilize preference demo test execution ( #865 )
2026-04-02 21:32:20 -04:00
Adil Hafeez
7606c55b4b
support developer role in chat completions API ( #867 )
2026-04-02 18:10:32 -07:00
Adil Hafeez
1d3f4d6c05
Publish docker images to DigitalOcean Container Registry ( #868 )
2026-04-02 18:08:49 -07:00
Adil Hafeez
5d79e7a7d4
fix: resolve all open Dependabot security alerts ( #866 )
2026-04-02 18:00:28 -07:00
Musa
76ff353c1e
fix(web): refresh blog content and featured post selection ( #862 )
2026-04-02 06:18:19 -07:00
Musa
39b430d74b
feat(web): merge DigitalOcean release announcement updates ( #860 )
...
* feat(web): announce DigitalOcean acquisition across sites
* fix(web): make blog routes resilient without Sanity config
* fix(web): add mobile arrow cue to announcement banner
* fix(web): point acquisition links to announcement post
2026-04-02 06:03:52 -07:00
Musa
0857cfafbf
release 0.4.16 ( #859 )
2026-03-31 17:45:28 -07:00
Musa
f68c21f8df
Handle null prefer in inline routing policy ( #856 )
...
* Handle null prefer in inline routing policy
* Use serde defaulting for null selection preference
* Add tests for default selection policy behavior in routing preferences
2026-03-31 17:41:25 -07:00
Musa
3dbda9741e
fix: route Perplexity OpenAI endpoints without /v1 ( #854 )
...
* fix: route Perplexity OpenAI paths without /v1
* add tests for Perplexity provider handling in LLM module
* refactor: use constant for Perplexity provider prefix in LLM module
* moving const to top of file
2026-03-31 17:40:42 -07:00
Adil Hafeez
d8f4fd76e3
replace production panics with graceful error handling in common crate ( #844 )
2026-03-31 14:28:11 -07:00
Musa
36fa42b364
Improve planoai up/down CLI progress output ( #858 )
2026-03-31 14:26:32 -07:00
Musa
82f34f82f2
Update black hook for Python 3.14 ( #857 )
...
* Update pre-commit black to latest release
* Reformat Python files for new black version
2026-03-31 13:18:45 -07:00
Adil Hafeez
f019f05738
release 0.4.15 ( #853 )
2026-03-30 17:33:40 -07:00
Adil Hafeez
af98c11a6d
restructure model_metrics_sources to type + provider ( #855 )
2026-03-30 17:12:20 -07:00
Adil Hafeez
e5751d6b13
model routing: cost/latency ranking with ranked fallback list ( #849 )
2026-03-30 13:46:52 -07:00
Musa
3a531ce22a
expand configuration reference with missing fields ( #851 )
2026-03-30 12:25:05 -07:00
Adil Hafeez
406fa92802
release 0.4.14 ( #840 )
2026-03-20 00:51:37 -07:00
Salman Paracha
69df124c47
the orchestrator had a bug where it was setting the wrong headers for archfc.katanemo.dev ( #839 )
...
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-389.local>
2026-03-20 00:40:47 -07:00
Adil Hafeez
180a9cb748
separate config generation from process startup in supervisord ( #838 )
2026-03-19 22:37:56 -07:00
Adil Hafeez
cdad02c5ee
release 0.4.13 ( #837 )
2026-03-19 19:51:58 -07:00
Adil Hafeez
1ad3e0f64e
refactor brightstaff ( #736 )
2026-03-19 17:58:33 -07:00
Adil Hafeez
1f23c573bf
add output filter chain ( #822 )
2026-03-18 17:58:20 -07:00
Adil Hafeez
de2d8847f3
fix CVE-2026-0861: upgrade glibc via apt-get upgrade in Dockerfile ( #832 )
2026-03-16 13:27:37 -07:00
Adil Hafeez
5388c6777f
add k8s deployment manifests and docs for self-hosted Arch-Router ( #831 )
2026-03-16 12:05:30 -07:00
Adil Hafeez
f1b8c03e2f
release 0.4.12 ( #830 )
2026-03-15 13:03:32 -07:00
Salman Paracha
4bb5c6404f
adding new supported models to plano ( #829 )
...
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-389.local>
2026-03-15 12:37:20 -07:00
Adil Hafeez
5d85829bc2
Improve config validation error messages ( #825 )
...
* improve config validation error messages and update getting started demo
* fix black formatting
2026-03-15 09:36:58 -07:00
Adil Hafeez
bc059aed4d
Unified overrides for custom router and orchestrator models ( #820 )
...
* 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
2026-03-15 09:36:11 -07:00
Adil Hafeez
785bf7e021
add build-cli and build-brightstaff skills ( #824 )
2026-03-13 00:28:35 -07:00
Adil Hafeez
2f52774c0e
Add Claude Code skills and streamline CLAUDE.md ( #823 )
...
* add claude code skills and streamline CLAUDE.md
* remove claude code attribution from PR skill
* update pr skill
2026-03-13 00:18:41 -07:00
Adil Hafeez
5400b0a2fa
add instructions on hosting arch-router locally ( #819 )
2026-03-11 15:28:50 -07:00
Adil Hafeez
b4313d93a4
Run demos without Docker ( #809 )
2026-03-11 12:49:36 -07:00
Musa
6610097659
Support for Codex via Plano ( #808 )
...
* 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
2026-03-10 20:54:14 -07:00
Adil Hafeez
5189f7907a
add k8s deploy guide ( #816 )
2026-03-10 12:27:31 -07:00
Adil Hafeez
97b7a390ef
support inline routing_policy in request body ( #811 ) ( #815 )
2026-03-10 12:23:18 -07:00
Adil Hafeez
028a2cd196
add routing service ( #814 )
...
fixes https://github.com/katanemo/plano/issues/810
2026-03-09 16:32:16 -07:00
Adil Hafeez
b9f01c8471
support native mode in planoai logs command ( #807 )
2026-03-05 18:34:06 -08:00