Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
4d28f95
includes all the files when ventis build
Saaketh0 Aug 26, 2026
23e3928
fixed some bugs
Saaketh0 Aug 26, 2026
95240ca
ventis build: sweep project .py files into Docker build contexts
Saaketh0 Aug 26, 2026
69d5405
Fix missing os import in metrics_agent.py
Saaketh0 Aug 26, 2026
653bee8
WIP: OTel exporter testing + portfolio merge-conflict fix (pre-pull c…
Saaketh0 Aug 26, 2026
d861795
Merge origin/main into feature/otel-exporter
Saaketh0 Aug 26, 2026
4af43ae
[Feature] Pass env / secrets into agent containers
nickhuo Aug 26, 2026
087ee15
Harden the remote env file copy against a hostile /tmp
nickhuo Aug 26, 2026
db0ba26
WIP: OTel multi-destination fan-out (Railway+Langfuse+Grafana) + clea…
Saaketh0 Aug 27, 2026
1d319a5
Merge PR #51 (feature/all-the-files) into feature/otel-exporter
Saaketh0 Aug 27, 2026
098548c
Dedupe 'import os' from PR #51 merge (both sides added it independently)
Saaketh0 Aug 27, 2026
77231ec
Merge PR #53 (env_file secret injection) into feature/otel-exporter
Saaketh0 Aug 27, 2026
0b9546c
Fix PR #51 regression: disable entrypoint-based stub relocation
Saaketh0 Aug 27, 2026
7b3b167
Parallelize per-instance polling in _poll_controllers
Saaketh0 Aug 27, 2026
b5d6e4d
rough draft
Saaketh0 Aug 28, 2026
9bbc35d
rough draft
Saaketh0 Aug 28, 2026
8baed6c
Parallelize per-instance polling in _poll_controllers
Saaketh0 Aug 31, 2026
cd3a521
cleaned up OTel Exporter
Saaketh0 Aug 31, 2026
50733b8
Merge branch 'main' into feature/otel-exporter
Saaketh0 Aug 31, 2026
03d0a56
Merge feature/otel-exporter into improvement/global-polling
Saaketh0 Aug 31, 2026
1e6a6d8
Align with feature/otel-exporter: use updated langfuse config example…
Saaketh0 Aug 31, 2026
ede3fac
Restore parallelized polling implementation
Saaketh0 Aug 31, 2026
ea91ff9
added concurrent polling
Saaketh0 Aug 31, 2026
b4e45e8
Redis-backed otel destination reload: config change no longer needs f…
Saaketh0 Sep 3, 2026
9f630fe
Simplify: assume otel_exporter's Redis is always localhost:6379
Saaketh0 Sep 3, 2026
c085dbc
Trim explanatory comments off simple/obvious functions
Saaketh0 Sep 3, 2026
53a96c7
Ventis fixes extracted from the CLI packaging work
Saaketh0 Sep 4, 2026
0508422
Point example workflow imports at the stub's entrypoint path
Saaketh0 Sep 4, 2026
ff61053
Route local-provider agents over a dedicated docker network
Saaketh0 Sep 4, 2026
6f36d4f
Add the canyonos CLI package, porting skill, and .car examples
Saaketh0 Sep 4, 2026
7cbd976
removed some useless code
Saaketh0 Sep 4, 2026
c12c5c5
removed more useless code
Saaketh0 Sep 4, 2026
ced549d
cli
Saaketh0 Sep 4, 2026
9447e34
cleanup
Saaketh0 Sep 5, 2026
0931ffc
Integrate LLM proxy telemetry, replacing bedrock.py
Saaketh0 Sep 5, 2026
8f15161
Fix boto3 header injection: use before-call params['headers'] not req…
Saaketh0 Sep 5, 2026
d34df4e
docs: add cli/ARCHITECTURE.md and link it from cli/README.md
Saaketh0 Sep 5, 2026
6655c25
reviewed branch and code, made small changes
Saaketh0 Sep 8, 2026
d13218e
removed ventis changed everything to canyonos
Saaketh0 Sep 5, 2026
ff33142
Merge origin/main into cli/llm-proxy
Saaketh0 Sep 9, 2026
509116b
Merge origin/cli/llm-proxy into cli/canyonos-name-change
Saaketh0 Sep 9, 2026
5911b28
Merge origin/main into cli/canyonos-name-change
Saaketh0 Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Thumbs.db
._*

# Canyon artifacts. `.car` is generated from the application source by the
# porting skill and `ventis build`; it is never committed.
# porting skill and `canyonos build`; it is never committed.
.car/

# Generated stubs
Expand All @@ -48,6 +48,6 @@ uv.lock

Agent Artifacts
docs/
# testing-porting-to-ventis working tree: clones, artifacts, results db
.ventis-tests/
# testing-porting-to-canyonos working tree: clones, artifacts, results db
.canyonos-tests/
.harness/
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<p align="center">
<img src="images/ventis-logo.png" alt="Ventis Logo" width="400">
<img src="images/canyonos-banner.gif" alt="CanyonOS" width="600">
</p>

Ventis is a bottom-up control plane and agent serving framework that enables developers to build, deploy and control agentic workflow serving with ease. Ventis derives it's name from the latin word 'ventus' meaning wind. True to its name, Ventis is like the wind, invisible but always present.
CanyonOS is a bottom-up control plane and agent serving framework that enables developers to build, deploy and control agentic workflow serving with ease. CanyonOS derives it's name from the latin word 'ventus' meaning wind. True to its name, CanyonOS is like the wind, invisible but always present.

## Core Features
- **Easy development and deployment**: Developers write agents in python as if writing single node local code. Ventis takes care of deployment, management and orchestration of agents and workflows. Deployment engineers running this workflow can specify authorization and other serving policies, Ventis will enforce them.
- **Easy development and deployment**: Developers write agents in python as if writing single node local code. CanyonOS takes care of deployment, management and orchestration of agents and workflows. Deployment engineers running this workflow can specify authorization and other serving policies, CanyonOS will enforce them.
- **Distributed Futures**: Asynchronous execution without any user workflow modification.
- **Pluggable Policy Engine**: Supports multiple policies for orchestration, authorization and other serving policies.

Expand All @@ -16,25 +16,25 @@ Ventis is a bottom-up control plane and agent serving framework that enables dev
### 1. Installation

```bash
git clone https://github.com/your-repo/ventis.git
cd ventis
git clone https://github.com/your-repo/canyonos.git
cd canyonos
pip install -e .
```
Note: Installation of ventis only needs to be done on the machine where you are running the deploy command. It does not need to be installed on the remote hosts where the agents are deployed. Ventis runs the built container images on the target hosts; for remote EC2 deployments, make sure the image is already available on the host.
Note: Installation of canyonos only needs to be done on the machine where you are running the deploy command. It does not need to be installed on the remote hosts where the agents are deployed. CanyonOS runs the built container images on the target hosts; for remote EC2 deployments, make sure the image is already available on the host.

### 2. Prerequisites

- **Python 3.10+**
- **Docker** — Used to manage agents.
- **Docker Buildx** (optional) — If available, `ventis build` builds all agent/workflow images in a single parallel `docker buildx bake` pass; otherwise it falls back to building them sequentially.
- **Docker Buildx** (optional) — If available, `canyonos build` builds all agent/workflow images in a single parallel `docker buildx bake` pass; otherwise it falls back to building them sequentially.

---

## Development Guide

#### Step 1: Create a Project
```bash
ventis new-project my-app
canyonos new-project my-app
cd my-app
```
This command creates a new directory `my-app` with the following structure:
Expand Down Expand Up @@ -73,7 +73,7 @@ Edit `.car/config/global_controller.yaml` in your project directory to list the

#### Step 1.1: Passing secrets to agents (optional)

Agents that need API keys read them from environment variables. Point `env_file` at a `.env` file to have Ventis inject it into every agent container:
Agents that need API keys read them from environment variables. Point `env_file` at a `.env` file to have CanyonOS inject it into every agent container:

```yaml
# .car/config/global_controller.yaml
Expand All @@ -91,20 +91,20 @@ env_file: .env

#### Step 2: Build the project
```bash
ventis build
canyonos build
```
#### Step 2.1 (Only if performing distributed deployment):
If you are deploying agents and tools to multiple hosts, make sure the hosts are reachable from the machine where you are running the deploy command and that SSH key-based access is already configured. A guide to set that up can be found [here](https://www.redhat.com/en/blog/passwordless-ssh).


#### Step 3: Deploy the project
```bash
ventis deploy
canyonos deploy
```

#### Step 4: Sending requests to the workflow

Upon running the deploy command, ventis automatically generates a REST API endpoint for the workflow.
Upon running the deploy command, canyonos automatically generates a REST API endpoint for the workflow.
Users can send requests to this endpoint to trigger the workflow. For this example, workflow to send a request -

```bash
Expand All @@ -124,17 +124,17 @@ curl http://localhost:8080/status/<request_id>
Remove all generated stub and gRPC files:

```bash
ventis clean
canyonos clean
```

### Harnessing the power of Ventis
Beyond an easy programming model and end-to-end deployment. Ventis, enables developers to write custom policies to perform fine-grained control over their agents, workflows.
### Harnessing the power of CanyonOS
Beyond an easy programming model and end-to-end deployment. CanyonOS, enables developers to write custom policies to perform fine-grained control over their agents, workflows.
Currently, we support two types of policies, with plans to add more in the future.

* **Authorization Policies**: Define rules based on the fields in the request to restrict agent access. For example, `examples/config/policy.yaml` defines rules to restrict access to the `FinanceAgent` to only authorized callers like 'CEO' or 'Analyst'. A developer can specify rules based on the fields in the request to restrict agent access.


* **Load Balancing & Efficiency**: Ventis has built-in policies to perform load-balancing across multiple instances of the same agent. Request migrations ease head-of-line blocking, and our experiments show that Ventis's performance control can reduce tail latencies and enable efficient GPU utilization. Here is an example of the results.
* **Load Balancing & Efficiency**: CanyonOS has built-in policies to perform load-balancing across multiple instances of the same agent. Request migrations ease head-of-line blocking, and our experiments show that CanyonOS's performance control can reduce tail latencies and enable efficient GPU utilization. Here is an example of the results.

![Financial Analyst Results](images/financial_analyst_results_page.jpg)

Expand All @@ -150,7 +150,7 @@ For more details, please refer to our paper - [Nalar: An agent serving framework


### Citation
If you find Ventis (Nalar) useful for your research, please cite our paper:
If you find CanyonOS (Nalar) useful for your research, please cite our paper:
```bibtex
@misc{laju2026nalar,
title={Nalar: An agent serving framework},
Expand Down
Loading
Loading