You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added canyonos feedback "<message>" to report bugs from the CLI.
Replaced canyonos quit with canyonos stop and canyonos clean; both support --all to operate on every CanyonOS project on the machine, including projects whose folder no longer exists.
Added a preflight check before build that stops the deploy with a one-line fix when a required port is in use, .env is missing, a required provider key is unset, or Docker is not running.
Added canyonos provision to create and tear down a deploying machine on AWS.
Added --target kubernetes to deploy, status, logs, stop, clean, and serve, so these commands work against a Kubernetes cluster.
Added canyonos convert --install-only.
Added status --json, logs --no-follow, and logs <agent>.
Added an ec2-assign provider, which gives each replica its own EC2 machine, alongside the renamed ec2-pool provider (was EC2).
Added machine metrics collection for EC2 agent machines, so the dashboard shows metrics beyond localhost.
Published the CanyonOS operator image and Helm chart with each release, so it can be installed with helm install without a copy of the repository.
Improved
Agent calls made from threads an app starts (e.g. parallel graph branches) now keep their request id instead of losing it.
A redeploy keeps the dashboard running instead of tearing it down and starting it again.
Deploy steps that don't depend on each other now run at the same time, and teardown no longer waits 10 seconds unnecessarily, making first deploys and redeploys faster.
Error messages now name the specific agent, method, file, or setting involved instead of showing internal details.
The CLI now works on Windows, including Docker Desktop support, config file encoding, and shell-appropriate commands; its tests also run on macOS and Windows.
Each project now gets a lasting ID instead of relying on the folder name, so two projects with the same name deploy and test independently.
.env and project files are now resolved relative to the project root, and the .car folder is renamed to .canyon.
The deploy screen is now clearer.
Added a one-command local Kubernetes setup (scripts/kind/up.sh) for running CanyonOS on a kind cluster.
Fixed
canyonos sync and canyonos config now exit non-zero when a config change fails to apply, instead of printing an error and exiting 0.
stop, clean, logs, config, and status now exit 1 on failure instead of hanging or exiting 0.
Calls between agents no longer fail on Kubernetes when a call takes longer than a routing check interval.
Telemetry for running requests now shows up on the dashboard on Kubernetes instead of only after the request finishes.
canyonos test no longer falsely reports success against a different, already-running project with the same folder name.
Fixed Global Controller and agent gRPC host ports being published inconsistently starting from 8000, with no way to set them in the manifest.
Fixed a release candidate's Helm chart version being spelled inconsistently with the release version.
Fixed the upload to a Kubernetes build pod not retrying correctly when its port-forward dropped.
canyonos test now defaults to the project's saved test query, or "hello" if none is set.
Hidden YAML files are no longer loaded into configuration or Kubernetes ConfigMaps.
Docker services now shut down more reliably, and deployments report port conflicts.
Core
New
Added a selected-block metrics drawer to the project cost dashboard, showing cost, share of spend, tokens, cost per 1K requests, p95 latency, retry rate, cache hit, and recoverable cost for the last 30 days, with a cost-per-request histogram and an every-block table.
Added human-in-the-loop support: agents can now stop mid-request to ask the caller a question and continue with the answer, including through builtins.input, LangGraph's interrupt, and the OpenAI Agents SDK's Runner.run/Runner.run_sync. A new response command surfaces this in canyonos status and success messages, and the test command can prompt for answers interactively.
Added CanyonOS support for running on Kubernetes: a kubernetes: config section, in-cluster image builds, a Kubernetes operator, health probes for Kubernetes, Redis password/TLS support, and a cluster-wide dashboard for every project. canyonos deploy, status, logs, serve, stop, test, and clean can target a Kubernetes cluster with --target kubernetes.
Added canyonos provision to create and tear down a deploying machine on AWS.
Added an ec2-assign provider, which gives each replica its own EC2 machine, alongside the renamed ec2-pool provider (formerly EC2).
Added machine metrics collection for EC2 agent machines, so the dashboard shows metrics beyond localhost.
Added governance rules: agents can require other agents to be up, and spend rules can switch an agent's model or refuse its calls above a threshold. Includes a dashboard Governance screen for viewing and editing rules and starting/stopping agents.
Added status --json, logs --no-follow, and logs <agent> for inspecting a deploy without a human, and convert --install-only.
Improved
Sped up LLM gateway calls by reusing HTTP connections instead of opening a new one per call.
Reduced CPU use and sped up request handling by waiting for results instead of repeatedly polling Redis, and by avoiding repeated cleanup and telemetry work.
Replicas now drain gracefully before removal: a replica that is no longer wanted finishes its in-flight work (up to 180 seconds) before being removed, instead of being killed mid-call.
Sped up deploys and teardowns by running independent steps (image builds, machine launches, Redis startup, replica removal) at the same time; teardown no longer waits an extra 10 seconds per container.
Project IDs now persist across deploys instead of being recreated each time.
Error messages now name the specific agent, method, file, or setting involved, with clearer messages for timeouts, policy denials, removed replicas, bad config files, missing SSH keys or AWS credentials, and LLM gateway connection failures. CLI commands no longer hang or silently exit without error information.
Renamed the generated project folder from .car to .canyon (and validate_car to validate_canyon, CAR-* codes to CANYON-*).
Removed the app/ subfolder and the manifest's env_file setting; a project's root .env now reaches every container directly, and -c/--config is removed from deploy and validate.
Fixed
Fixed a timeout on deploys with a database agent, which were incorrectly expected to report healthy like other replicas.
Fixed agent calls made from app-started threads (e.g. parallel graph branches) losing their request ID and not appearing in telemetry.
Fixed .env files saved with a UTF-8 byte-order mark silently failing to expand ${VAR} references in the config.
Fixed calls between agents failing on Kubernetes once a call took longer than a few seconds, even though the called agent kept running.
Fixed telemetry for still-running requests not appearing on Kubernetes until the request finished.
Fixed Global Controller and agent ports being published starting from 8000 and hopping unpredictably instead of being fixed or configurable.
Fixed the SSH key CanyonOS generates for EC2 agents being lost on canyonos stop, causing unused key pairs to accumulate in AWS.
Fixed canyonos validate passing when an EC2 agent's ssh_private_key_path references an unset environment variable.
Fixed an unknown provider name being silently accepted instead of raising a clear error in one code path.
Fixed various project setup, validation, and deploy/lifecycle issues, including environment file resolution relative to the project root, hidden YAML files being incorrectly loaded as config, more reliable Docker shutdown, and reporting port conflicts during deploy.
API
New
Added an AUTH_MODE setting for the dashboard API, with sign-in off by default. When sign-in is off, project routes answer without a login and /auth/* routes report sign-in as disabled; when sign-in is on, the dashboard behaves as before.
Added governance rules for agents: an agent can require other agents to be up, and spend rules can switch its model or refuse its calls above a threshold. Refused calls fail with a named error, and the API now publishes agent spend for this.
Added dashboard support for a single dashboard covering every project on a Kubernetes cluster.
Improved
Error responses are clearer: a request missing a required argument now gets an immediate 400, and failure messages name the agent, method, or setting responsible instead of internal details.
Fixed
Fixed dashboard queries slowing down over time: metric data no longer grows unbounded, and queries now use the intended index instead of scanning the full table.
Fixed governance incorrectly reporting agents as down when running on Kubernetes or across multiple EC2 machines.
Web
New
Added an optional sign-in mode: the dashboard can run with no sign-in required, opening straight on the projects overview, or with password sign-in as before.
Added a Governance page: a canvas of agents showing status and dependency requirements, with a drawer to edit rules, stop or start an agent, view the scaling policy, and see which step a refused request failed at.
Improved
The dashboard delete dialog now shows the API's reason as a toast instead of leaving it stuck in the dialog, and resets correctly each time it's opened.
On a running project, the delete dialog now explains to run canyonos stop first instead of offering a delete action that would fail.
Fixed
A Trading agent cleaned with canyonos clean no longer remains stuck in the UI; it can now be deleted.