GaryCLI CLI

A terminal AI agent for microcontrollers: writes board code, builds, flashes and diagnoses logs from real hardware.

  • 159 ★ on the repository
  • Last commit
  • Apache-2.0
CLI

Broad access

Why this level

  • The agent builds code, flashes attached hardware and runs commands on your computer: a firmware error can damage circuits with heavy loads.
  • The install command downloads and runs a script from the project's website.
All reasons and checks

garycli/garycli

Install

Manual install

curl -fsSL https://www.garycli.com/install.sh | bash

For Linux, macOS and WSL; requires Python 3.10 or newer. Open and read the script before running it.

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • The agent builds code, flashes attached hardware and runs commands on your computer: a firmware error can damage circuits with heavy loads.
  • The install command downloads and runs a script from the project's website.

This is third-party code. Review the repository files before installing.

What it does

GaryCLI is an agent for embedded development that runs the whole loop itself: it writes board code, builds it with the real compiler, flashes, reads the serial port and registers, and repairs the errors it finds. The model reasons about goals and failures, while deterministic tools do the building, flashing and port reading. It supports STM32F0, F1, F3 and F4 (HAL C code, GCC builds, flashing through pyOCD over SWD or UART ISP) as well as RP2040, ESP32, ESP8266 and CanMV K230 with MicroPython and raw REPL sync. The `gary config` command sets the AI backend: OpenAI-compatible APIs, the Anthropic Messages interface and Gemini all work. Third-party skills install with `/skill install`.

Who it is for. Engineers and hobbyists working with microcontrollers who want a task taken to working firmware without manual builds and log hunting.

Good fit when

  • You need a demo on STM32: PWM on an LED or reading an MPU6050 over I2C and printing it to UART.
  • The firmware flashed but the port is silent, and the cause is traced through logs and registers.
  • A MicroPython project for ESP32 or Pico fails with a traceback at boot.
  • You need to find devices on an I2C bus and check their addresses.
  • You need routine calculations: PWM parameters, pin conflicts, Flash and RAM usage.

Not a fit when

  • The board is not on the platform list: the depth of support differs per platform.
  • The device drives power electronics, motors or heaters with no independent protection.
  • You want a plugin for Claude Code or Cursor: the repository has neither a plugin nor an MCP server; GaryCLI runs as a separate agent.

Example request

PA0 drives an LED. Make it breathe on 1 kHz PWM, build the project and confirm startup over the serial port.

Limitations

Python 3.10 or newer and access to an AI backend with an API key set through `gary config` are required. The closed loop needs a debugger (ST-Link or J-Link) and a UART adapter; flashing over UART ISP gives less diagnostics than SWD. A successful build and flash does not prove the LED lights or the motor spins: a sensor, a probe or you confirm the physical effect. Integration of the GaryProbe instrument over USB and BLE is still in development. The agent executes real commands on connected hardware, so power circuits, motors and batteries need independent hardware protection. The license is Apache-2.0.

How to disable. Remove the `gary` command and the project folder, or just the cloned directory after a manual install. Delete the API key saved by `gary config` separately.

FAQ

How do I install GaryCLI?

On Linux, macOS and WSL run `curl -fsSL https://www.garycli.com/install.sh | bash`; in Windows PowerShell run `irm https://www.garycli.com/install.ps1 | iex`. Manually: clone the repository and run `python3 setup.py --auto`.

Which boards does GaryCLI support?

STM32F0, F1, F3 and F4, RP2040 and Pico, the ESP32 and ESP8266 families and CanMV K230. Depth of support depends on the platform.

Do I need hardware to try it?

Not for code generation and builds. Flashing, port reading and register checks need a board, a debugger and a USB-UART adapter, and the `--connect` flag enables hardware work.

What is GaryProbe?

A separate instrument that gives USB or BLE access to SWD, UART and signal measurements. Its integration with GaryCLI is still in development, while the repository's `gary` commands work with SWD, UART and REPL.

How do I add my own skills?

In interactive mode run `/skill install` with an archive path or a git repository address. A skill consists of `skill.json`, `tools.py`, `schemas.json` and `prompt.md`, and `/skill create` makes a template.

Discussion

No questions or reviews yet.

CLI tools

24 skills for microcontroller firmware: build, flash, GDB debugging, UART, Modbus, CAN, logic analyzers and static analysis

SkillBroad access1.1KRepository stars

A Python terminal coding agent in the manner of Claude Code: reads the repository, edits files, runs commands, with memory, sub-agents and MCP

CLIBroad access1KRepository stars

Over twenty skills for coding agents: MCP and hooks, plan mode, a bug-fix protocol, prompting and a bash safety hook

SkillBroad access178Repository stars

A terminal coding agent in Go: GLM, DeepSeek and local Ollama models, 59 built-in tools and MCP

CLIBroad access110Repository stars

Kode CLI is a terminal coding agent that reads AGENTS.md and CLAUDE.md, connects MCP servers and works with many models.

CLIBroad access5.2KRepository stars

A Gemini CLI extension on the PDCA cycle: 21 agents, 35 skills and 24 commands for planning, design, build and analysis

PluginExtended access66Repository stars

README in short

A result is judged on five levels of evidence: files, build, flashing, program behavior at runtime and a measured pin signal. The repository is built from the `ai`, `compiler`, `core`, `hardware`, `prompts` and `tui` modules plus a `skills` directory.

README badge

Report a problem