Skip to content

Canyonos 1.0.0 Release candidate 1

Pre-release
Pre-release

Choose a tag to compare

@canyonos-cici canyonos-cici released this 29 Oct 22:32
· 37 commits to main since this release

Release notes for v1.0.0rc1 - 2026-10-29

Security

  • Core: certifi is updated to 2026.10.19, which drops the emSign root CAs whose intermediate CA keys were compromised (GHSA-6q48-6c7w-9gw2, critical).
  • CLI, Core: local agents no longer open ports on the host, and the ports opened for agents on other machines (EC2 agents and the endpoint's callback) are bound to the machine's private IP instead of every interface.
  • Core: Redis connections can use a password, an ACL user and TLS (CANYONOS_REDIS_PASSWORD, CANYONOS_REDIS_USERNAME, CANYONOS_REDIS_TLS, CANYONOS_REDIS_CA_FILE). All are optional, so Redis on Docker and EC2 is unchanged.
  • CLI, Core: the project root's .env now reaches every container on its own, and convert copies it into .canyon. It still never goes into an image.

CLI

New

  • canyonos feedback "<message>" sends bug reports from the CLI. See Feedback Docs
  • canyonos quit is replaced by canyonos stop and canyonos clean, each with --all for every project on the machine, including ones whose folder no longer exists.
  • canyonos deploy, status, logs, stop and serve take --target kubernetes to run the same commands against a Kubernetes cluster.
  • canyonos provision creates and tears down a deploying machine on AWS.
  • New ec2-assign provider gives each replica its own EC2 machine, alongside the renamed ec2-pool provider.
  • status --json reports replicas, launch errors and machine errors.
  • logs --no-follow and logs <agent> for one agent's logs without following.
  • convert --install-only.
  • A preflight check before build stops a deploy with a plain fix when required ports are taken, .env is missing, required keys are empty, or Docker isn't running.
  • The Kubernetes operator image and Helm chart are now published with each release, so helm install works with no local repository checkout.
  • Each project gets a lasting ID so two projects in same-named folders deploy and test independently.

Improved

  • The CLI now works on Windows: it starts, Docker Desktop's named pipe is detected correctly, config files keep their line endings, and upgrade prints commands for the user's own shell.
  • Redeploying a project no longer tears down and restarts the dashboard.
  • Deploys and teardowns run independent steps in parallel and are noticeably faster.
  • Error messages now name the actual agent, method, file or setting involved instead of internal details.
  • The deploy screen is clearer.
  • stop, clean, logs, config, status and sync now exit non-zero on failure instead of printing an error and exiting 0.
  • Remote EC2 machines now report their own metrics in the dashboard instead of only localhost.
  • provider: EC2 is now provider: ec2-pool; the ec2: section is now ec2-pool: (old names now fail validation).
  • The generated .car folder is renamed to .canyon; the app/ subfolder is gone, .env is read from the project root, and the manifest's env_file key and -c/--config option are removed.

Fixed

  • Agent calls made from threads the app itself starts no longer lose their request id.
  • canyonos sync and canyonos config no longer report success when a config change couldn't actually be applied.
  • canyonos validate now catches an unset environment variable in ssh_private_key_path for EC2 agents instead of letting the deploy fail later.
  • Global Controller and agent ports are no longer silently hopped to the next free one; they can be set and stay consistent across deploys.
  • A replica that can't be cleaned up after a failed launch no longer loops a warning forever with no resolution.

Core

New

  • Added Human-in-the-Loop support: agents can now pause mid-request to ask the caller a question and resume with the answer, with no change to agent code.
  • Added support for running the Global Controller and agents on Kubernetes, including health probes, a kubernetes: config section, in-cluster image builds, Redis password/TLS support, and a shared dashboard for projects on a cluster.
  • Added graceful draining: a replica that is scaled down, replaced, or removed now finishes its in-flight work before being removed, instead of being killed mid-call.
  • Added Baseten token passthrough.
  • Renamed the EC2 provider to ec2-pool and added ec2-assign, which gives each replica its own EC2 machine; added canyonos provision to create and tear down a deploying machine on AWS, and machine-level metrics for remote machines.
  • Added governance rules: agents can require other agents to be up, and spend-based rules can switch an agent's model or refuse its calls above a threshold, with a dashboard screen to view and edit them.
  • The .car project folder is now .canyon (existing .car folders must be renamed or rebuilt).

Improved

  • The LLM gateway reuses HTTP connections to providers instead of opening a new one per call, lowering latency.
  • Replicas and the Global Controller now wait for work instead of polling in a loop, cutting idle CPU use and Redis traffic and raising throughput.
  • Deploy and teardown steps that don't depend on each other now run at the same time, speeding up deploys and shutdowns.
  • Error messages now name the user's own agent, method, file, or setting instead of internal details, including clearer request failures, endpoint errors, deploy failures, and LLM gateway errors.
  • CLI commands now report accurate exit codes and JSON/log output so they can be driven without a human watching, and no longer hang on test or SIGTERM.
  • Project configuration no longer reads files outside the project root; .env is read from the project root and reaches containers directly, and the -c/--config option and env_file setting have been removed.
  • A project's ID now persists across deploys instead of being recreated each time.

Fixed

  • Fixed agent calls made from threads an app starts (e.g. parallel branches) losing their request ID, which had caused missing telemetry.
  • Fixed deploys with a database agent timing out while waiting for it to report healthy.
  • Fixed a .env file saved with a UTF-8 byte-order mark silently failing to expand ${VAR} references.
  • Fixed Global Controller and agent gRPC host ports being assigned unpredictably starting from 8000, colliding with other local processes and projects.
  • Fixed several provider issues: a replica that can't be cleaned up now gives up retrying instead of warning forever; an unknown provider name now raises a clear error; generated SSH keys now persist across teardowns instead of piling up in AWS; and an unset environment variable in ssh_private_key_path now fails validation instead of only failing at deploy time.

API

New

  • Added AUTH_MODE (none or password) on the API; sign-in is now off by default, so the dashboard opens straight to the projects overview without requiring sign-in.
  • Added governance rules per agent: require other agents to be running, and cap or switch models once spend crosses a threshold. A refused call returns a named error, and a refused root call answers with 403.
  • Added a Governance screen showing agents, their status, requirements, and spend, with controls to edit rules and start or stop agents.
  • The dashboard can now list and reach every project on a Kubernetes cluster, including each project's live state, settings, and telemetry.

Improved

  • Error messages now name the specific agent, method, file, or setting involved instead of internal details.
  • A request missing a required argument now returns 400 immediately instead of failing later.
  • Calling an endpoint with the wrong HTTP method now names the expected route.

Web

New

  • Added a Governance page showing agents, their status, dependencies, and spend, with controls to edit rules and start or stop agents.
  • Request details now show the name and message of an error when a call is refused.
  • Added sign-in modes: the dashboard can run with no sign-in required, or with password-protected accounts.

Improved

  • The delete dialog now shows a toast and closes instead of staying open when a delete is refused.
  • A running project's delete dialog explains it must be stopped first and no longer offers a delete action.

Fixed

  • A cleaned agent no longer remains stuck in the UI and can now be deleted.