mirror of
https://github.com/katanemo/plano.git
synced 2026-04-25 00:36:34 +02:00
Run plano natively by default (#744)
This commit is contained in:
parent
198c912202
commit
f63d5de02c
56 changed files with 1557 additions and 256 deletions
|
|
@ -54,6 +54,6 @@ endpoints:
|
|||
# value could be ip address or a hostname with port
|
||||
# this could also be a list of endpoints for load balancing
|
||||
# for example endpoint: [ ip1:port, ip2:port ]
|
||||
endpoint: host.docker.internal:18083
|
||||
endpoint: localhost:18083
|
||||
# max time to wait for a connection to be established
|
||||
connect_timeout: 0.005s
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ Basic Configuration
|
|||
access_key: $ANTHROPIC_API_KEY
|
||||
|
||||
- model: ollama/llama3.1
|
||||
base_url: http://host.docker.internal:11434
|
||||
base_url: http://localhost:11434
|
||||
|
||||
# Define aliases that map to the models above
|
||||
model_aliases:
|
||||
|
|
|
|||
|
|
@ -598,9 +598,9 @@ Ollama
|
|||
- model: ollama/llama3.1
|
||||
base_url: http://localhost:11434
|
||||
|
||||
# Ollama in Docker (from host)
|
||||
# Ollama running locally
|
||||
- model: ollama/codellama
|
||||
base_url: http://host.docker.internal:11434
|
||||
base_url: http://localhost:11434
|
||||
|
||||
|
||||
OpenAI-Compatible Providers
|
||||
|
|
|
|||
|
|
@ -17,11 +17,17 @@ Follow this guide to learn how to quickly set up Plano and integrate it into you
|
|||
Prerequisites
|
||||
-------------
|
||||
|
||||
Before you begin, ensure you have the following:
|
||||
Plano runs **natively** by default — no Docker or Rust toolchain required. Pre-compiled binaries are downloaded automatically on first run.
|
||||
|
||||
1. `Python <https://www.python.org/downloads/>`_ (v3.10+)
|
||||
2. Supported platforms: Linux (x86_64, aarch64), macOS (Apple Silicon)
|
||||
|
||||
**Docker mode** (optional):
|
||||
|
||||
If you prefer to run inside Docker, add ``--docker`` to ``planoai up`` / ``planoai down``. This requires:
|
||||
|
||||
1. `Docker System <https://docs.docker.com/get-started/get-docker/>`_ (v24)
|
||||
2. `Docker Compose <https://docs.docker.com/compose/install/>`_ (v2.29)
|
||||
3. `Python <https://www.python.org/downloads/>`_ (v3.10+)
|
||||
|
||||
Plano's CLI allows you to manage and interact with the Plano efficiently. To install the CLI, simply run the following command:
|
||||
|
||||
|
|
@ -84,17 +90,20 @@ Step 2. Start plano
|
|||
|
||||
Once the config file is created, ensure that you have environment variables set up for ``ANTHROPIC_API_KEY`` and ``OPENAI_API_KEY`` (or these are defined in a ``.env`` file).
|
||||
|
||||
Start Plano:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ planoai up plano_config.yaml
|
||||
# Or if installed with uv tool: uvx planoai up plano_config.yaml
|
||||
2024-12-05 11:24:51,288 - planoai.main - INFO - Starting plano cli version: 0.4.9
|
||||
2024-12-05 11:24:51,825 - planoai.utils - INFO - Schema validation successful!
|
||||
2024-12-05 11:24:51,825 - planoai.main - INFO - Starting plano
|
||||
...
|
||||
2024-12-05 11:25:16,131 - planoai.core - INFO - Container is healthy!
|
||||
|
||||
On the first run, Plano automatically downloads Envoy, WASM plugins, and brightstaff and caches them at ``~/.plano/``.
|
||||
|
||||
To stop Plano, run ``planoai down``.
|
||||
|
||||
**Docker mode** (optional):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ planoai up plano_config.yaml --docker
|
||||
$ planoai down --docker
|
||||
|
||||
Step 3: Interact with LLM
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
@ -185,9 +194,9 @@ Here is a minimal configuration that wires Plano-Orchestrator to two HTTP servic
|
|||
|
||||
agents:
|
||||
- id: flight_agent
|
||||
url: http://host.docker.internal:10520 # your flights service
|
||||
url: http://localhost:10520 # your flights service
|
||||
- id: hotel_agent
|
||||
url: http://host.docker.internal:10530 # your hotels service
|
||||
url: http://localhost:10530 # your hotels service
|
||||
|
||||
model_providers:
|
||||
- model: openai/gpt-4o
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ are some sample configuration files for both, respectively.
|
|||
scheme: http
|
||||
static_configs:
|
||||
- targets:
|
||||
- host.docker.internal:19901
|
||||
- localhost:19901
|
||||
params:
|
||||
format: ["prometheus"]
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,47 @@
|
|||
Deployment
|
||||
==========
|
||||
|
||||
This guide shows how to deploy Plano directly using Docker without the ``plano`` CLI, including basic runtime checks for routing and health monitoring.
|
||||
Plano can be deployed in two ways: **natively** on the host (default) or inside a **Docker container**.
|
||||
|
||||
Native Deployment (Default)
|
||||
---------------------------
|
||||
|
||||
Plano runs natively by default. Pre-compiled binaries (Envoy, WASM plugins, brightstaff) are automatically downloaded on the first run and cached at ``~/.plano/``.
|
||||
|
||||
Supported platforms: Linux (x86_64, aarch64), macOS (Apple Silicon).
|
||||
|
||||
Start Plano
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
planoai up plano_config.yaml
|
||||
|
||||
Options:
|
||||
|
||||
- ``--foreground`` — stay attached and stream logs (Ctrl+C to stop)
|
||||
- ``--with-tracing`` — start a local OTLP trace collector
|
||||
|
||||
Runtime files (rendered configs, logs, PID file) are stored in ``~/.plano/run/``.
|
||||
|
||||
Stop Plano
|
||||
~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
planoai down
|
||||
|
||||
Build from Source (Developer)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you want to build from source instead of using pre-compiled binaries, you need:
|
||||
|
||||
- `Rust <https://rustup.rs>`_ with the ``wasm32-wasip1`` target
|
||||
- OpenSSL dev headers (``libssl-dev`` on Debian/Ubuntu, ``openssl`` on macOS)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
planoai build --native
|
||||
|
||||
Docker Deployment
|
||||
-----------------
|
||||
|
|
@ -53,6 +93,13 @@ Check container health and logs:
|
|||
docker compose ps
|
||||
docker compose logs -f plano
|
||||
|
||||
You can also use the CLI with Docker mode:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
planoai up plano_config.yaml --docker
|
||||
planoai down --docker
|
||||
|
||||
Runtime Tests
|
||||
-------------
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ version: v0.3.0
|
|||
|
||||
agents:
|
||||
- id: weather_agent
|
||||
url: http://host.docker.internal:10510
|
||||
url: http://localhost:10510
|
||||
- id: flight_agent
|
||||
url: http://host.docker.internal:10520
|
||||
url: http://localhost:10520
|
||||
|
||||
model_providers:
|
||||
- model: openai/gpt-4o
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@ version: v0.3.0
|
|||
|
||||
agents:
|
||||
- id: rag_agent
|
||||
url: http://host.docker.internal:10505
|
||||
url: http://localhost:10505
|
||||
|
||||
filters:
|
||||
- id: query_rewriter
|
||||
url: http://host.docker.internal:10501
|
||||
url: http://localhost:10501
|
||||
# type: mcp # default is mcp
|
||||
# transport: streamable-http # default is streamable-http
|
||||
# tool: query_rewriter # default name is the filter id
|
||||
- id: context_builder
|
||||
url: http://host.docker.internal:10502
|
||||
url: http://localhost:10502
|
||||
|
||||
model_providers:
|
||||
- model: openai/gpt-4o-mini
|
||||
|
|
|
|||
|
|
@ -4,15 +4,15 @@ version: v0.3.0
|
|||
# External HTTP agents - API type is controlled by request path (/v1/responses, /v1/messages, /v1/chat/completions)
|
||||
agents:
|
||||
- id: weather_agent # Example agent for weather
|
||||
url: http://host.docker.internal:10510
|
||||
url: http://localhost:10510
|
||||
|
||||
- id: flight_agent # Example agent for flights
|
||||
url: http://host.docker.internal:10520
|
||||
url: http://localhost:10520
|
||||
|
||||
# MCP filters applied to requests/responses (e.g., input validation, query rewriting)
|
||||
filters:
|
||||
- id: input_guards # Example filter for input validation
|
||||
url: http://host.docker.internal:10500
|
||||
url: http://localhost:10500
|
||||
# type: mcp (default)
|
||||
# transport: streamable-http (default)
|
||||
# tool: input_guards (default - same as filter id)
|
||||
|
|
|
|||
|
|
@ -1,31 +1,31 @@
|
|||
agents:
|
||||
- id: weather_agent
|
||||
url: http://host.docker.internal:10510
|
||||
url: http://localhost:10510
|
||||
- id: flight_agent
|
||||
url: http://host.docker.internal:10520
|
||||
url: http://localhost:10520
|
||||
endpoints:
|
||||
app_server:
|
||||
connect_timeout: 0.005s
|
||||
endpoint: 127.0.0.1
|
||||
port: 80
|
||||
flight_agent:
|
||||
endpoint: host.docker.internal
|
||||
endpoint: localhost
|
||||
port: 10520
|
||||
protocol: http
|
||||
input_guards:
|
||||
endpoint: host.docker.internal
|
||||
endpoint: localhost
|
||||
port: 10500
|
||||
protocol: http
|
||||
mistral_local:
|
||||
endpoint: 127.0.0.1
|
||||
port: 8001
|
||||
weather_agent:
|
||||
endpoint: host.docker.internal
|
||||
endpoint: localhost
|
||||
port: 10510
|
||||
protocol: http
|
||||
filters:
|
||||
- id: input_guards
|
||||
url: http://host.docker.internal:10500
|
||||
url: http://localhost:10500
|
||||
listeners:
|
||||
- address: 0.0.0.0
|
||||
agents:
|
||||
|
|
@ -130,6 +130,6 @@ prompt_targets:
|
|||
required: true
|
||||
type: int
|
||||
tracing:
|
||||
opentracing_grpc_endpoint: http://host.docker.internal:4317
|
||||
opentracing_grpc_endpoint: http://localhost:4317
|
||||
random_sampling: 100
|
||||
version: v0.3.0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue