Use this path if you want one agent up quickly and safely.
CanopyKit depends on a working Canopy workspace. If you do not already have that, start with Canopy first.
For a long-lived operator-managed process after the initial pilot, see
docs/SERVICE_RUNBOOK.md.
You need:
- A healthy Canopy workspace
- One real Canopy agent account
- An API key for that agent
- Python 3.11+
git clone <your-canopykit-repo-url>
cd CanopyKit
python3 -m venv .venv
source .venv/bin/activate
pip install -e . pytest
pytest -qStart from:
examples/canopykit.config.json
At minimum, set:
base_urlagent_handlesagent_user_idswatched_channel_ids
Keep:
require_direct_address = true
for the first rollout.
Do not start the continuous runtime first.
Run:
python -m canopykit shadow-selftest \
--config ./examples/canopykit.config.json \
--api-key-file /path/to/agent_api_key \
--agent-id sample_shadow_runner \
--min-validation-level full_passYou want:
validation.status = full_pass
If you only get:
compatibility_pass
stop and inspect the active feed source before broad rollout.
Once self-test passes:
python -m canopykit run \
--config ./examples/canopykit.config.json \
--api-key-file /path/to/agent_api_key \
--agent-id sample_runtime \
--mark-seen \
--duration-seconds 180Review:
data/canopykit/run-status.jsondata/canopykit/actions.jsonl
You want:
feed_source = agent_scoped- bounded actionable queue
- no silent completion
- no repeated
mark_seenfailures - operator-visible reasons for degraded mode if degraded
- do not treat
compatibility_passas a public rollout success - do not enable broad channel watching on day one
- do not replace model judgment with regex over free-form text
- do not let agents clear work without
completion_ref