Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Arduino CLI IDENew to Visual Studio Code? Get it now.
Arduino CLI IDE

Arduino CLI IDE

Lino Moretto

|
5 installs
| (0) | Free
A lightweight VS Code extension that wraps the arduino-cli gRPC daemon (ArduinoCoreService) — compile, upload, and monitor without leaving the editor.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Arduino CLI IDE

Code Arduino sketches in plain VS Code — compile, upload, monitor, and debug right from the editor.

Arduino CLI IDE in action — compiling, uploading, and plotting serial data inside VS Code

This extension is a thin wrapper around the official arduino-cli. It doesn't reinvent anything: it spawns the arduino-cli daemon in the background and gives you buttons, menus, and tree views for the things it already does. You get a stock VS Code experience for Arduino — the editor, extensions, themes, and keybindings you already use — with none of a separate IDE on top.

Who is this for? Anyone who wants to write Arduino code in VS Code and have the build/upload toolchain a click away — without a heavyweight, all-in-one Arduino IDE. If you can install one command-line tool, you're ready.

Why you'll like it

  • 🪶 Lightweight — a thin layer over arduino-cli. It talks to the official tool, so your builds behave exactly like the Arduino IDE's.
  • 🧰 Everything in the editor — Compile, Upload, Serial Monitor, and Debug buttons sit right in the editor toolbar for any .ino file.
  • 🔌 Knows your board — pick a board once; it's remembered, and it can auto-install the core you need.
  • 📦 Manage cores & libraries visually — install, update, downgrade, and remove platforms and libraries from a sidebar — no memorizing commands.
  • 📈 Serial monitor and plotter — read text from your board, or graph live numbers as they stream in.
  • 🐞 Real debugging — set breakpoints and step through code on supported boards.
  • 🧩 Plays nicely with Blocks Editor — its drag-and-drop blocks can use this extension's buttons to build and upload. See Works great with Blocks Editor.

Getting started

Step 1 — Install arduino-cli (required)

This extension does not bundle the Arduino toolchain — that's what keeps it thin. You install the official arduino-cli once, and the extension drives it.

  • macOS (Homebrew): brew install arduino-cli
  • Windows (winget): winget install ArduinoSA.CLI
  • Linux / manual: follow the official installation guide.

Already have the Arduino IDE 2.x? It ships arduino-cli under the hood, but the extension needs it on your PATH. The simplest path is to install arduino-cli separately as above, or point the arduinoCli.path setting at the executable.

To check it worked, open a terminal and run arduino-cli version.

Step 2 — Install this extension

Search for "Arduino CLI IDE" in the VS Code Extensions view, or install from Open VSX on VSCodium / Cursor / Windsurf.

Step 3 — Build your first sketch

  1. Open a folder containing a sketch — an .ino file inside a folder of the same name (e.g. Blink/Blink.ino). Don't have one? Run Arduino CLI: New Sketch… from the Command Palette (Ctrl/Cmd+Shift+P).
  2. Open the .ino file. You'll see Compile, Upload, Serial Monitor, and Debug buttons in the top-right editor toolbar.
  3. Click Select Board (Command Palette → Arduino CLI: Select Board) and pick your board. If its core isn't installed yet, the extension offers to install it for you.
  4. Plug in your board and click Upload (the ⬆ button). Watch progress in the output panel.
  5. Click the Serial Monitor (🔌) button to see what your board prints back.

That's it — no project wizard, no IDE switch. Just VS Code.

The Arduino sidebar

Click the circuit board icon in the Activity Bar to open Arduino Platforms & Libraries, with up to three tree views:

  • Installed Platforms — every core you have, with inline buttons to upgrade, change version, or uninstall. Toolbar buttons install a new platform, refresh, or upgrade them all.
  • Installed Libraries — every library you have, with the same inline controls. Toolbar buttons add a library, refresh, or upgrade all. You can also install from a ZIP file or a Git URL.
  • Profile Libraries — appears when your sketch uses a sketch.yaml build profile; lists the libraries pinned to the active profile.

What you can do

Everything below is available from the Command Palette (Ctrl/Cmd+Shift+P), the editor toolbar, or the sidebar.

Build & run

Command What it does
Arduino CLI: Select Board Choose the board (FQBN) for the current sketch
Arduino CLI: Compile Compile the active sketch
Arduino CLI: Upload Upload the compiled sketch to the board
Arduino CLI: Upload Using Programmer Upload via a hardware programmer
Arduino CLI: Burn Bootloader Write the bootloader to the board
Arduino CLI: Board Details Show the selected board's capabilities

Serial

Command What it does
Arduino CLI: Open Serial Monitor Read text from the board's serial port
Arduino CLI: Open Serial Plotter Graph live numeric data streaming over serial
Arduino CLI: Save Serial Log… Save the captured serial output to a file

Platforms / cores

Command What it does
Arduino CLI: Install / Uninstall / Upgrade Platform Manage a single core
Arduino CLI: Upgrade All Platforms Update every installed core
Arduino CLI: Download Platform (cache only)… Pre-download a core without installing
Arduino CLI: Update Package Index Refresh the list of available cores

Libraries

Command What it does
Arduino CLI: Add Library… Search and install a library
Arduino CLI: Install Library from ZIP… / from Git URL… Install from a local archive or a repository
Arduino CLI: Download Library Archive (cache only)… Pre-download a library without installing
Arduino CLI: Upgrade All Libraries Update every installed library
Arduino CLI: Update Libraries Index Refresh the list of available libraries

Build profiles (sketch.yaml)

Command What it does
Arduino CLI: Create Build Profile… Create a reproducible build profile
Arduino CLI: Set Default Profile… Choose the profile used by default
Arduino CLI: Add / Remove Library to Profile… Pin libraries to a profile
Arduino CLI: List Profile Libraries Show the active profile's libraries

Debug & IntelliSense

Command What it does
Arduino CLI: Debug Start a debug session on a supported board
Arduino CLI: Show Debug Configuration Inspect the generated debug config
Arduino CLI: Configure IntelliSense Regenerate c_cpp_properties.json for the current board

Sketch & maintenance

Command What it does
Arduino CLI: New Sketch… Scaffold a new sketch
Arduino CLI: Archive Sketch… Zip up the sketch for sharing
Arduino CLI: Check for CLI Updates See if a newer arduino-cli is available
Arduino CLI: Clean Download Cache Free up cached downloads
Arduino CLI: Show Daemon Version / Restart Daemon Diagnose the background daemon

IntelliSense (code completion)

When you select a board, the extension can generate VS Code's c_cpp_properties.json with the right include paths and defines for that board — so go-to-definition, hover docs, and autocompletion work for the Arduino core and your libraries. Install Microsoft's C/C++ extension to get the most out of it. This stays on automatically (arduinoCli.intellisense.autoConfigure) and refreshes when the board or libraries change.

Debugging

On boards with debug support (and an installed debug adapter such as Cortex-Debug), the Debug button starts a real debug session: breakpoints, stepping, and variable inspection. The extension auto-detects the adapter; you can override everything via the arduinoCli.debug.* settings. The Debug button only appears for boards that support it.

Settings

You can leave everything at its defaults. To tweak, open Settings and search for "Arduino CLI":

Setting Default What it does
arduinoCli.path arduino-cli Path to the arduino-cli executable
arduinoCli.daemonPort 50051 Local TCP port for the background daemon
arduinoCli.monitor.autoReconnect true Reopen the serial monitor after an upload
arduinoCli.autoInstallPlatform true Offer to install a missing core before compiling
arduinoCli.boardManagerUrls [] Extra Board Manager URLs (e.g. for ESP32, STM32)
arduinoCli.alwaysExportBinaries false Always export compiled binaries next to the sketch
arduinoCli.unsafeLibraryInstall false Allow installing libraries from untrusted ZIP/Git sources
arduinoCli.updateNotifications true Check for arduino-cli updates on startup
arduinoCli.verbose false Verbose output for compile, upload, and bootloader
arduinoCli.intellisense.autoConfigure true Keep the C/C++ IntelliSense config in sync automatically
arduinoCli.debug.adapter auto Debug adapter: auto, cortex-debug, cppdbg, or custom
arduinoCli.debug.adapterConfig {} Fields merged into the generated debug configuration
arduinoCli.debug.interpreter "" GDB command interpreter (e.g. mi, mi2)

Works great with Blocks Editor

If you'd rather build programs by dragging blocks than typing C++, install the sister extension Blocks Editor (linucs.blocks-editor). It's a visual, Scratch-like editor that generates real Arduino code — and it uses this extension's Compile and Upload buttons to build and flash your board. The two are designed to work side by side, but each is fully standalone: use one, the other, or both.

Requirements

  • VS Code 1.120 or newer
  • arduino-cli installed and on your PATH (or set arduinoCli.path) — see Step 1.
  • For debugging: a board with debug support and a debug adapter (e.g. the Cortex-Debug extension).
  • For IntelliSense: Microsoft's C/C++ extension.

Good to know

  • Nothing runs until you need it. The extension doesn't spawn the daemon on startup — it starts on the first command that needs it. If arduino-cli isn't installed, you'll get one clear message instead of a noisy error, and you pay nothing if you never use it.
  • It stays out of your way. This is a thin wrapper: it pushes defaults and policy into arduino-cli's own configuration rather than reimplementing them. Your builds match what arduino-cli (and the Arduino IDE) produce.
  • On Apple Silicon Macs, some classic AVR toolchains are x86-only and need Rosetta 2 (softwareupdate --install-rosetta) to compile/upload.

For developers

npm install
./scripts/fetch-protos.sh    # vendor the arduino-cli proto definitions (already included)
npm run compile              # typecheck + lint
npm run build                # bundle to dist/extension.js

Press F5 in VS Code to launch an Extension Development Host. The extension loads the vendored arduino-cli .proto files at runtime via @grpc/proto-loader (no codegen step). See CLAUDE.md for architecture notes and PUBLISHING.md for the release process.

Community

Questions, ideas, or just want to show what you built? Join the GitHub Discussions.

Contributing

Contributions and bug reports are welcome — open an issue or pull request on the repository.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft