Commit graph

591 commits

Author SHA1 Message Date
Adil Hafeez
ea78102b89 Consolidate GitHub Actions CI from 15 to 5 workflow files
Reduce Docker builds from 10 to 1 per PR by building the image once and
sharing it as an artifact across all dependent jobs. Merge duplicate
Docker Hub and GHCR push workflows into single workflows that push to
both registries per build.

- ci.yml: replaces pre-commit, rust_tests, validate_plano_config,
  plano_tools_tests, docker-security-scan, e2e_tests, e2e_plano_tests,
  e2e_test_preference_based_routing, e2e_test_currency_convert
- docker-push-main.yml: replaces old docker-push-main + ghrc-push-main
- docker-push-release.yml: replaces old docker-push-release + ghrc-push-release
- static.yml and publish-pypi.yml unchanged

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 02:15:23 +00:00
Musa
ef285f1213
Add error handling for OTLP/gRPC listener binding in trace command (#748) 2026-02-14 15:28:45 -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
38646fdac2
Add Trivy Docker security scan to CI (#755)
* Add Trivy Docker image security scan workflow

Scans the Docker image for CRITICAL and HIGH vulnerabilities using Trivy.
Blocks PRs on failures; runs non-blocking on main for visibility. Results
are uploaded to the GitHub Security tab via SARIF.


* Add explicit permissions to Docker security scan workflow

Set minimal permissions: contents read for checkout, security-events
write for SARIF upload to the GitHub Security tab.

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

* Fix 27 HIGH vulnerabilities found by Trivy Docker scan

- Install supervisor via pip instead of apt to eliminate 22 Debian
  python3.13 package vulnerabilities
- Pin urllib3>=2.6.3 to fix CVE-2025-66418, CVE-2025-66471, CVE-2026-21441
- Add ignore-unfixed to Trivy scan to suppress unfixable glibc CVE-2026-0861

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 19:53:49 -08:00
Adil Hafeez
94f804991e
Add .env.local to gitignore and gitleaks pre-commit hook (#754)
Prevent future secret leaks by ignoring .env.local files and adding
gitleaks secret scanning to the pre-commit pipeline.
2026-02-13 15:51:08 -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
Salman Paracha
0557f7ff98
updated the models list to include models like Opus 4.6 (#753)
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2026-02-13 15:08:11 -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
3c8e899de3
Add CLAUDE.md for Claude Code onboarding (#743)
Provides build/test commands, architecture overview, and key conventions
so future Claude Code sessions can be productive immediately.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 15:34:39 -08:00
Adil Hafeez
b9b91ddc74
release 0.4.6 (#740) 2026-02-10 21:00:29 -08:00
Adil Hafeez
f066163c72
fix cli (#739) 2026-02-10 20:50:25 -08:00
Adil Hafeez
97bcd8cabb
update workspace to exclude build artifact path 2026-02-10 13:37:31 -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
5394ef5770
disable bedrock tests (#732) 2026-02-10 00:34:00 -08:00
Adil Hafeez
46de89590b
use standard tracing and logging in brightstaff (#721) 2026-02-09 13:33:27 -08:00
Adil Hafeez
4d9ed74b68
improve e2e tests (#731)
* fix build break

docs build was breaking because requirements file was getting ignored from .dockerignore

* improve e2e tests time

* fix: bump GH Actions to latest versions (checkout@v4, setup-python@v5, build-push-action@v6)

* more improvements

* fix perm

* more improvements

* parallel runs
2026-02-09 13:20:06 -08:00
Adil Hafeez
99077d83fb
fix build break (#730)
docs build was breaking because requirements file was getting ignored from .dockerignore
2026-02-09 10:08:20 -08:00
Adil Hafeez
631bd0db1a
speed up docker builds with rust dependency caching and introduce parallel stages (#727) 2026-02-09 09:25:57 -08:00
Adil Hafeez
e056ddbcd3
add log_level env var (#728) 2026-02-09 09:25:43 -08:00
Musa
4a6cea3545
remove and replace logo with clubcentric (#723) 2026-02-04 12:40:17 -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
e41aa0a617
upgrade rust to 1.93.0 and fix pre-commit (#720) 2026-02-02 11:03:12 -08:00
Santhosh Gandhe
28a4242c6e
Removing duplicate lines and $ sign before the bash commands to make quick copy/paste possible of these commands possible. (#719)
Co-authored-by: Santhosh Gandhe <santhosh.gandhe@gmail.com>
2026-02-01 09:55:56 -08:00
Musa
8749593773
adding logo cloud component to katanemo-www (#718) 2026-01-31 21:25:59 -08:00
Salman Paracha
a278e67d9a
Site clean (#716)
* init next.js app

* add metadata for keyword selection

* minor heading changes

* updated title and keywords

* updating link to reach planoai.dev

---------

Co-authored-by: Musa <malikmusa1323@gmail.com>
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2026-01-30 18:14:39 -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
2a36dd7376
fixing the build scripts for documentation (#711)
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2026-01-28 18:55:35 -08:00
Musa
56b3246f30
introduce SEO optimization and improve blog content rendering (#709)
* introduce SEO optimizations for marketing reach

* quality of life updates to Next

* format with biome

* improve wording on home badge

* adding additional keyword based on trends

* add code block and markdown support for blogs

* Update metadata for SEO
2026-01-28 17:52:39 -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
8428b06e22
add ability to set agent timeout (#710)
Co-authored-by: Adil Hafeez <adil.hafeez10@t-mobile.com>
2026-01-28 17:18:20 -08:00
Adil Hafeez
43bdd0bfcf
add default agent schema enforcement (#702) 2026-01-24 12:00:49 -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
Adil Hafeez
a4ccbda8fb
improve supervisord so its readable (#700) 2026-01-17 15:29:03 -08:00
Salman Paracha
cdc1d7cee2
making Messages.Content optional, and having the upstream LLM fail if the right fields aren't set (#699)
Co-authored-by: Salman Paracha <salmanparacha@MacBook-Pro-342.local>
2026-01-16 16:24:03 -08:00
Adil Hafeez
626f556cc6
reduce number of info statements in pipeline processor (#698)
Co-authored-by: Adil Hafeez <adil.hafeez10@t-mobile.com>
2026-01-16 15:38:43 -08:00
Tang Quoc Thai
4d53297c17
feat: add passthrough_auth option for forwarding client Authorization header (#687)
* feat: add passthrough_auth option for forwarding client Authorization header

* fix tests

* Update comment to reflect upstream forwarding

* Apply suggestions from code review

---------

Co-authored-by: Adil Hafeez <adil.hafeez@gmail.com>
Co-authored-by: Adil Hafeez <adil@katanemo.com>
2026-01-14 15:06:28 -08:00
Adil Hafeez
ba1f783adf
add instructions about planoai and update guide to talk about pre-com… (#693)
* add instructions about planoai and update guide to talk about pre-commit and running tests locally

* update contrib guide
2026-01-14 11:37:21 -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
ab391f96c7
don't include internal models in /v1/models endpoint (#685) 2026-01-09 16:57:41 -08:00
dependabot[bot]
c1c808feb2
Bump next from 16.0.0 to 16.0.10 in /packages/ui (#684)
Bumps [next](https://github.com/vercel/next.js) from 16.0.0 to 16.0.10.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.0.0...v16.0.10)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.0.10
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-08 15:33:55 -08:00
Adil Hafeez
11fb4cd633
remove unnecessary clones from code (#682) 2026-01-08 15:11:05 -08:00
Salman Paracha
40b9780774
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>
2026-01-07 13:51:40 -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
Salman Paracha
b4543ba56c
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>
2026-01-07 11:20:44 -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