CLI¶
pip install koyu — three verbs for moving data between koyu.dev and any
machine. Two dependencies (httpx, blake3); installs cleanly inside any
training environment, which is the point.
koyu fetch <proj_|run_ id> <dir> # mirror a public project's or run's files — no auth
koyu pull <mf_ id> <dir> # materialize a dataset — no auth if public
koyu push <run_|proj_ id> <paths…> # upload results — needs KOYU_TOKEN
koyu whoami # sanity-check the token
pull writes the dataset layout directly — manifest.json +
episode bundles — ready for any template's dataloader.py. Downloads stream,
run concurrently, respect presigned-URL expiry by batching, and resume: re-runs
skip current files. push is blake3-diffed two-step sync; unchanged files
cost nothing, large files go multipart automatically, and nothing is visible
until commit.
fetch is a mirror, not a clone. No identity, no sync relationship. If
you want your variant of a project that syncs with your koyu cloud, that is
the workspace's clone.
Typical GPU-box session, entirely agent-drivable:
pip install koyu
koyu pull mf_… /workspace/data # anonymous
# …train…
export KOYU_TOKEN=koyu_… # child token, short-lived
koyu push run_… checkpoints/best.pt metrics.jsonl results.json
| env var | meaning |
|---|---|
KOYU_TOKEN |
bearer token, only needed for writes/private reads |
KOYU_API |
API base override (default https://koyu.dev) |