plano/demos/use_cases/multi_agent_with_crewai_langchain
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
..
crewai demo: add multi-framework agent demo (#688) 2026-01-17 15:39:06 -08:00
langchain demo: add multi-framework agent demo (#688) 2026-01-17 15:39:06 -08:00
config.yaml Introduce brand new CLI experience with tracing and quickstart (#724) 2026-02-10 13:17:43 -08:00
docker-compose.yaml Rename all arch references to plano (#745) 2026-02-13 15:16:56 -08:00
Dockerfile Upgrade Python base images to 3.13.11 to fix CVE-2025-13836 (#751) 2026-02-13 14:44:16 -08:00
openai_protocol.py demo: add multi-framework agent demo (#688) 2026-01-17 15:39:06 -08:00
pyproject.toml demo: add multi-framework agent demo (#688) 2026-01-17 15:39:06 -08:00
README.md use standard tracing and logging in brightstaff (#721) 2026-02-09 13:33:27 -08:00
traces.png demo: add multi-framework agent demo (#688) 2026-01-17 15:39:06 -08:00
uv.lock demo: add multi-framework agent demo (#688) 2026-01-17 15:39:06 -08:00

Travel Agents in CrewAI and LangChain - with Plano

What you'll see: A travel assistant that seamlessly combines flight booking (CrewAI) and weather forecasts (LangChain) in a single conversation - with unified routing, orchestration, moderation, and observability across both frameworks.

The Problem

Building multi-agent systems today forces developers to:

  • Pick one framework - can't mix CrewAI, LangChain, or custom agents easily
  • Write plumbing code - authentication, request routing, error handling
  • Rebuild for changes - want to swap frameworks? Start over
  • Limited observability - no unified view across different agent frameworks

Plano's Solution

Plano acts as a framework-agnostic proxy and data plane that:

  • Routes requests to the right agent(s), in the right order (CrewAI, LangChain, or custom)
  • Normalizes requests/responses across frameworks automatically
  • Provides unified authentication, tracing, and logs
  • Lets you mix and match frameworks without coupling, so that you can continue to innovate easily

How To Run

Prerequisites

  1. Install Plano CLI

    uv tool install planoai
    
  2. Set Environment Variables

    export OPENAI_API_KEY=your_key_here
    export AEROAPI_KEY=your_key_here  # Get your free API key at https://flightaware.com/aeroapi/
    

Start the Demo

# From the demo directory
cd demos/use_cases/multi_agent_with_crewai_langchain

# Build and start all services
docker-compose up -d

This starts:

  • Plano (ports 12000, 8001) - routing and orchestration
  • CrewAI Flight Agent (port 10520) - flight search
  • LangChain Weather Agent (port 10510) - weather forecasts
  • AnythingLLM (port 3001) - chat interface
  • Jaeger (port 16686) - distributed tracing

Try It Out

  1. Open the Chat Interface

  2. Ask Multi-Agent Questions

    "What's the weather in San Francisco and can you find flights from Seattle to San Francisco?"
    

    Plano automatically:

    • Routes the weather part to the LangChain agent
    • Routes the flight part to the CrewAI agent
    • Combines responses seamlessly
  3. View Distributed Traces

    Tracing Example

Architecture

┌──────────────┐
│ AnythingLLM  │ (Chat Interface)
└──────┬───────┘
       │
       v
┌─────────────┐
│    Plano    │ (Orchestration & DataPlane)
└──────┬──────┘
       │
       ├──────────────┬──────────────┐
       v              v              v
┌────────────┐ ┌────────────┐ ┌──────────┐
│  CrewAI    │ │ LangChain  │ │  Jaeger  │
│   Flight   │ │  Weather   │ │ (Traces) │
│   Agent    │ │   Agent    │ └──────────┘
└────────────┘ └────────────┘
       ├──────────────├
       v              v
┌─────────────┐
│    Plano    │ (Proxy LLM calls)
└──────┬──────┘

Travel Agents

Flight Agent

  • Framework: CrewAI
  • Capabilities: Flight search, itinerary planning
  • Tools: resolve_airport_code, search_flights
  • Data Source: FlightAware AeroAPI

Weather Agent

  • Framework: LangChain
  • Capabilities: Weather forecasts, conditions
  • Tools: get_weather_forecast
  • Data Source: Open-Meteo API

Cleanup

docker-compose down

Next Steps

  • Add your own agent - any framework, just expose the OpenAI-compatible endpoint
  • Custom routing - modify config.yaml to change agent selection logic
  • Production deployment - see Plano docs for scaling guidance

Learn More