Write Agents in Plain Python

No framework to learn. No SDK, no decorators.

Two Choices. Everything Else Follows.

1. Write each agent as a plain Python file.

The orchestrator gets its own file. No SDK, no decorators, no graph to define.

2. Let CanyonOS carry the calls.

Agents call each other through CanyonOS, and model calls pass through its gateway. You write a plain function call; CanyonOS makes it asynchronous.

3. Deploy and watch.

Deploy from the canyonos CLI to your laptop or your own AWS account, and see every agent on one dashboard.

1WRITEno SDK, no decorators, no graph2CARRY THE CALLSyou write a plain function call3DEPLOY AND WATCHevery agent on one dashboardworkflow.pyorchestratorintent_agent.pyagentmetrics_agent.pyagentrisk_agent.pyagentadvisor_agent.pyagentworkflow.pyintent_agent.pyCanyonOSmakes each call asyncgatewayyour model provider$ canyonos deployYOUR LAPTOP OR YOUR AWS ACCOUNTone dashboardintent_agentmetrics_agentrisk_agentadvisor_agent
TBD · workflow files screenshot

Build.

One agent per file, readable top to bottom and changeable one at a time. An optional helper uses your own coding agent to convert a copy of a LangChain or LangGraph project for you to review.

Docs guide

For the People Who Run It

Where it runsYour laptop, or EC2 in your own AWS account, with instance types chosen for you.
What it needsDocker with Compose v2. No Kubernetes cluster.
What it connects toThe model provider and the observability tools you already use.
What you addDeployed endpoints have no built-in authentication, so put your own in front.

Assemble It Yourself, or Install One Platform

Assemble it yourselfCanyonOS
Workflow codeWritten to a framework's graph or classesPlain Python, one file per agent
Async callsCode you writeAsynchronous by default
Runs onA cluster you maintainDocker, on a laptop or in your AWS account

What 0.2 Doesn't Do Yet

CanyonOS 0.2 is our first public release, and we ship fixes every week. Here's what it doesn't do today:

  • It runs on Docker, on a laptop or in AWS, and nowhere else.
  • Agents must be thread-safe.
  • Deployed endpoints have no built-in authentication.
  • Existing framework code doesn't run unchanged.