Commit graph

246 commits

Author SHA1 Message Date
Adil Hafeez
53d11ae235
add --docker flag to E2E tests and demo scripts 2026-03-03 15:08:50 -08:00
Adil Hafeez
9f9c5f3413
Remove demos/native_run; any existing config works with --native 2026-03-03 14:48:57 -08:00
Adil Hafeez
e0b5d22990
Add native execution mode: run Plano without Docker 2026-03-03 14:48:57 -08:00
Adil Hafeez
d9404afa4d
release 0.4.9 (#785) 2026-02-26 16:18:02 -08:00
Musa
2bde21ff57
add Custom Trace Attributes to extend observability (#708)
* add custom trace attributes

* refactor: prefix custom trace attributes and update schema handlers tests configs

* refactor: rename custom_attribute_prefixes to span_attribute_header_prefixes in configuration and related handlers

* docs: add section on custom span attributes

* refactor: update tracing configuration to use span attributes and adjust related handlers

* docs: custom span attributes section to include static attributes and clarify configuration

* add custom trace attributes

* refactor: prefix custom trace attributes and update schema handlers tests configs

* refactor: rename custom_attribute_prefixes to span_attribute_header_prefixes in configuration and related handlers

* docs: add section on custom span attributes

* refactor: update tracing configuration to use span attributes and adjust related handlers

* docs: custom span attributes section to include static attributes and clarify configuration

* refactor: remove TraceCollector usage and enhance logging with structured attributes

* refactor: custom trace attribute extraction to improve clarity

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:27:20 -08:00
Adil Hafeez
7b5f1549a5
release 0.4.8 (#767)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 01:52:55 -08:00
Teja Sunku
4fe66c2918
docs: Fix incorrect routing preferences in OpenClaw demo config (#765) 2026-02-18 01:15:46 -08:00
Adil Hafeez
c69fbd8a4d
Add OpenClaw + Plano intelligent routing demo (#761)
* 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>
2026-02-17 06:34:54 -08:00
Adil Hafeez
bfbf838b19
release 0.4.7 (#752) 2026-02-17 05:45:44 -08:00
Adil Hafeez
50088d9eff
Add demos README with overview of all demo categories (#762) 2026-02-17 03:22:12 -08:00
Adil Hafeez
5d2279a796
Revert "Add OpenClaw + Plano intelligent routing demo"
This reverts commit 5090000fd2.
2026-02-17 03:15:42 -08:00
Adil Hafeez
5090000fd2
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>
2026-02-17 03:13:55 -08:00
Adil Hafeez
473996d35d
Overhaul demos directory: cleanup, restructure, and standardize configs (#760) 2026-02-17 03:09:28 -08:00
Adil Hafeez
c3591bcbf3
Upgrade CI, Docker, and demos to Python 3.14 (#759)
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.
2026-02-15 10:22:33 -08:00
Adil Hafeez
1df43872a6
Fix code scanning and dependabot security alerts (#756)
* Fix code scanning and dependabot security alerts

Code scanning fixes (14 alerts):
- Fix XSS in OG image route by validating request origin against allowlist
- Fix incomplete URL sanitization in blog layout using exact hostname matching
- Bind port-check socket to 127.0.0.1 instead of 0.0.0.0
- Add explicit permissions to 7 GitHub Actions workflows

Dependabot fixes:
- Update @isaacs/brace-expansion 5.0.0 -> 5.0.1 (CVE-2026-25547)
- Update bytes 1.10.1 -> 1.11.1 (CVE-2026-25541)
- Update time 0.3.41 -> 0.3.47 (CVE-2026-25727)
- Update cryptography 45.0.7 -> 46.0.5 (CVE-2026-26007)
- Update python-multipart 0.0.20 -> 0.0.22 (CVE-2026-24486)
- Update urllib3 2.6.2 -> 2.6.3 in test lockfiles (CVE-2026-21441)
- Update Werkzeug 3.1.4 -> 3.1.5 (CVE-2026-21860)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Address PR review feedback

- Replace plano.katanemo.com with planoai.dev in allowed hosts
- Add planoai.dev to OG route and blog layout allowlists
- Revert socket bind to 0.0.0.0 (intentional for port-in-use check)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 12:27:07 -08:00
Adil Hafeez
ba651aaf71
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase

Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock

External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update remaining arch references in docs

- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix remaining arch references found in second pass

- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
  arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
  arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name

Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
Adil Hafeez
cbcad54f74
Upgrade Python base images to 3.13.11 to fix CVE-2025-13836 (#751) 2026-02-13 14:44:16 -08:00
Adil Hafeez
b9b91ddc74
release 0.4.6 (#740) 2026-02-10 21:00:29 -08:00
Adil Hafeez
25693c36ee
release 0.4.5 (#737) 2026-02-10 13:37:04 -08:00
Musa
e3bf2b7f71
Introduce brand new CLI experience with tracing and quickstart (#724)
Release hardens tracing and routing: clearer CLI, modular internals, updated demos/docs/tests, and improved multi-agent reliability.

Co-authored-by: Adil Hafeez <adil.hafeez@gmail.com>
2026-02-10 13:17:43 -08:00
Adil Hafeez
46de89590b
use standard tracing and logging in brightstaff (#721) 2026-02-09 13:33:27 -08:00
Salman Paracha
7cba42f887
fixing the README for multi-agent orchestration (#722)
* 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>
2026-02-02 14:35:49 -08:00
Adil Hafeez
d8b4c800e6
release 0.4.4 (#713) 2026-01-28 20:45:10 -08:00
Adil Hafeez
062825f26e
add envoy retries (#712)
* add envoy retries

* add missing file

* fix tests

---------

Co-authored-by: Adil Hafeez <adil.hafeez10@t-mobile.com>
2026-01-28 20:31:01 -08:00
Salman Paracha
2941392ed1
Adding support for wildcard models in the model_providers config (#696)
* 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>
2026-01-28 17:47:33 -08:00
Adil Hafeez
da5cbc29b7
release 0.4.3 (#701) 2026-01-18 00:07:46 -08:00
Musa
f2141cbdcb
demo: add multi-framework agent demo (#688) 2026-01-17 15:39:06 -08:00
MeiyuZhong
6a29f8398f
http-filter: add fully http based demo (remove MCP) (#681)
* 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>
2026-01-13 13:51:12 -08:00
Adil Hafeez
b7fba7a97f
release 0.4.2 (#679) 2026-01-07 13:02:06 -08:00
Adil Hafeez
78b2ae0cf7
pass request_id in orchestrator and routing model (#678) 2026-01-07 12:04:10 -08:00
Adil Hafeez
57327ba667
ensure that request id is consistent (#677)
* ensure that request id is consistent

* remove test debug/info statements
2026-01-07 08:44:41 -08:00
Musa
b45c7aba86
Musa/demo fix (#676)
* fix demo with travel agent

* Update .gitignore

* remove sse chunk rendering
2026-01-06 14:32:06 -08:00
Adil Hafeez
41aa4abaeb
release 0.4.1 (#670) 2026-01-01 23:39:18 -08:00
Adil Hafeez
77cdc7f6ef
Revert "release 0.4.1 (#666)" (#669)
This reverts commit 77df5160d8.
2025-12-30 15:28:30 -08:00
Adil Hafeez
77df5160d8
release 0.4.1 (#666) 2025-12-28 14:29:19 -08:00
Adil Hafeez
053e2b3a74
use uv instead of poetry (#663) 2025-12-26 11:21:42 -08:00
Adil Hafeez
88d14a205b
restructure cli (#656) 2025-12-25 14:55:29 -08:00
Adil Hafeez
a56bb9d190
add open-web-ui-ref (#653) 2025-12-24 10:44:41 -08:00
Adil Hafeez
911a799bc6
update mcp_filter docs and talk about docker build and jaeger ui (#652) 2025-12-24 10:38:08 -08:00
Adil Hafeez
9366070d76
rename plano => planoai 2025-12-23 19:31:43 -08:00
Adil Hafeez
e8170f76ca
rename to planoai (#650) 2025-12-23 19:26:51 -08:00
Adil Hafeez
e7ce00b5a7
rename cli to plano (#647) 2025-12-23 18:37:58 -08:00
Salman Paracha
e224cba3e3
Update docs to Plano (#639) 2025-12-23 17:14:50 -08:00
Adil Hafeez
15fbb6c3af
plano orchestration using plano orchestration 4b model (#637) 2025-12-22 18:05:49 -08:00
Adil Hafeez
2f9121407b
Use mcp tools for filter chain (#621)
* agents framework demo

* more changes

* add more changes

* pending changes

* fix tests

* fix more

* rebase with main and better handle error from mcp

* add trace for filters

* add test for client error, server error and for mcp error

* update schema validate code and rename kind => type in agent_filter

* fix agent description and pre-commit

* fix tests

* add provider specific request parsing in agents chat

* fix precommit and tests

* cleanup demo

* update readme

* fix pre-commit

* refactor tracing

* fix fmt

* fix: handle MessageContent enum in responses API conversion

- Update request.rs to handle new MessageContent enum structure from main
- MessageContent can now be Text(String) or Items(Vec<InputContent>)
- Handle new InputItem variants (ItemReference, FunctionCallOutput)
- Fixes compilation error after merging latest main (#632)

* address pr feedback

* fix span

* fix build

* update openai version
2025-12-17 17:30:14 -08:00
Salman Paracha
33e90dd338
fixed mixed inputs from openai v1/responses api (#632)
* fixed mixed inputs from openai v1/responses api

* removing tracing from model-alias-rouing

* handling additional input types from openairs

---------

Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2025-12-16 13:39:13 -08:00
Salman Paracha
a79f55f313
Improve end to end tracing (#628)
* adding canonical tracing support via bright-staff

* improved formatting for tools in the traces

* removing anthropic from the currency exchange demo

* using Envoy to transport traces, not calling OTEL directly

* moving otel collcetor cluster outside tracing if/else

* minor fixes to not write to the OTEL collector if tracing is disabled

* fixed PR comments and added more trace attributes

* more fixes based on PR comments

* more clean up based on PR comments

---------

Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2025-12-11 15:21:57 -08:00
Adil Hafeez
8adb9795d8
release 0.3.22 (#629) 2025-12-11 11:20:19 -08:00
Adil Hafeez
09c0b999b2
release 0.3.21 (#626) 2025-12-03 17:12:34 -08:00
Salman Paracha
a448c6e9cb
Add support for v1/responses API (#622)
* making first commit. still need to work on streaming respones

* making first commit. still need to work on streaming respones

* stream buffer implementation with tests

* adding grok API keys to workflow

* fixed changes based on code review

* adding support for bedrock models

* fixed issues with translation to claude code

---------

Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2025-12-03 14:58:26 -08:00