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([wizard / configure YAML])
    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
Setupraccoon create projectClone example repo, assign UUID, init git
Setupraccoon connect <IP>SSH key auth, save connection config
Setupraccoon wizardWrite YAML hardware config interactively
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 create project <name>Scaffold a new project (clones the example repo from GitHub)
raccoon create mission <name>Add a new mission to the current project
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 wizardInteractive hardware configuration wizard
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 list projectsList all raccoon projects
raccoon list missionsList missions in the current project
raccoon remove project <name>Delete a project
raccoon remove mission <name>Remove a mission from config
raccoon checkpointManage invisible git snapshots (list, show, restore, delete, clean)
raccoon reorder missionsReorder and renumber missions interactively
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+.