Raccoon CLI

raccoon-cli is the command-line tool for managing robot projects. It handles everything from project scaffolding to running code on the robot.

The developer workflow lifecycle

Every raccoon session follows the same lifecycle. Understanding the shape of this loop answers “which command do I run next?” at every step.

flowchart LR
    A([create project]) --> B([connect to Pi])
    B --> C([configure raccoon.project.yml])
    C --> D([write Python mission code])
    D --> E([raccoon run])
    E --> F([codegen local])
    F --> G([sync push → Pi])
    G --> H([execute on Pi])
    H --> I([sync pull ← Pi])
    I --> J{happy?}
    J -- no --> D
    J -- yes --> K([commit / checkpoint])
    K --> D

The key insight: code generation and all validation happen on your laptop. The Pi only receives the final Python files, never the raw YAML. This makes the edit–run loop fast even over a slow Wi-Fi link.

Where each command fits

PhaseCommandWhat happens
Setupthe raccoon-setup script (raccoon-example)Clone the example, assign a UUID, init git, uv sync
Setupraccoon connect <IP>SSH key auth, save connection config
Iterateraccoon runCodegen → push → execute → pull (all-in-one)
Inspectraccoon logsBrowse run logs from Pi
Recoverraccoon checkpoint restoreRoll back to a pre-run snapshot
Updateraccoon updateBring laptop + Pi to the same bundle
Diagnoseraccoon doctorCheck connection, tools, versions

Command Overview

CommandWhat it does
raccoon connect <ip>Connect to a robot (sets up SSH auth, saves config)
raccoon disconnectRemove the saved connection
raccoon shellOpen an interactive SSH shell on the connected Pi
raccoon runSync, generate code locally, and execute the project on the robot
raccoon syncPush/pull files between laptop and robot
raccoon codegenGenerate defs.py, defs.pyi, and robot.py from YAML config
raccoon updateUpdate raccoon packages on both laptop and robot
raccoon doctorShow system health: connection, tools, and package versions
raccoon calibrateRun motor calibration routine
raccoon webStart the Web IDE
raccoon missions create/list/rename/remove/reorderManage the missions of the current project
raccoon checkpointManage invisible git snapshots (list, show, restore, delete, clean)
raccoon lcmLCM traffic inspection (spy, record, playback, list, delete, status)
raccoon migrateApply project schema migrations to update the project format
raccoon validateRun project validation checks (config, missions, imports)

All commands support -h / --help for usage details.

Auto-validation

Before every command (except create, connect, disconnect, update, doctor, migrate, validate, and web), raccoon automatically runs raccoon validate against your project. This catches config errors early, before any sync or execution happens.

To bypass auto-validation for a single invocation, use the global --no-validate flag:

raccoon --no-validate run
raccoon --no-validate sync

This is useful when you intentionally have an incomplete config and want to force a run anyway.

Reading order

If you are new to raccoon-cli, read pages in this order:

  1. Quick Start — install, create, connect, run in 5 minutes
  2. create — project scaffolding and mission creation
  3. connect — SSH key setup
  4. run — the daily driver command in depth
  5. Run Configurations — how competition bots parameterise dev vs competition modes
  6. sync — what actually happens under the hood
  7. checkpoint — automatic safety snapshots

For troubleshooting and maintenance, jump directly to:

Deep Dives

Installation

See the Quick Start for install instructions.

Requires Python 3.13+.