Exort is an OpenCode-powered desktop app for embedded development. It provides a local workspace for writing microcontroller code, compiling and uploading projects, and monitoring live serial output on supported boards.
Start with the included free OpenCode models, or connect your own provider setup for models such as ChatGPT, and other OpenCode-compatible providers.
Exort is for you if you are:
| Feature | What it does |
|---|---|
| AI coding agent | Uses OpenCode to inspect the workspace, explain code, edit files, and help with embedded iteration. |
| Project manager | Opens and switches between local embedded workspaces with persisted state. |
| Board manager | Installs and manages Arduino CLI board platforms and cores. |
| Compile and upload | Automatic and manual compile and upload |
| Serial Monitor | Reads live device output for logs, debug prints, and quick checks. |
| Serial Plotter | Plots numeric serial streams for calibration, sensors, and runtime behavior. |
| Provider connection | Lets you use included free models or bring your own OpenCode-compatible provider setup. |
| Local history | Restores chat history and workspace sessions locally per workspace. |
Exort is a desktop-only Electron app. The renderer UI does not talk to OpenCode, files, serial ports, or Arduino tools directly. It goes through the preload IPC boundary, and the Electron main process owns native capabilities.
flowchart LR
user["Developer"] --> ui["Exort Desktop UI<br/>Svelte + Monaco"]
ui --> ipc["Preload IPC<br/>window.electronAPI"]
ipc --> main["Electron main process"]
main --> runtime["OpenCode runtime<br/>agent sessions + streaming"]
main --> tools["Exort custom tools<br/>arduinoCompile, workspace tools"]
main --> arduino["Arduino CLI<br/>cores, compile, upload"]
main --> serial["Serial handler<br/>ports, monitor, plotter"]
main --> store["Local app state<br/>workspace sessions "]
runtime --> files["Local workspace files"]
tools --> arduino
arduino --> board["Target board"]
board --> serial
serial --> ui
store --> ui
classDef dark fill:#2f3239,stroke:#555,color:#ffffff,stroke-width:1px;
class user,ui,ipc,main,runtime,tools,arduino,serial,store,files,board dark;
For the desktop app (can install both in the app settings)
For running from source:
Check local desktop requirements:
npm --workspace @exort/desktop run requirements:status
Download the latest build from exort.dev or Github releases.
or
git clone https://github.com/Razz19/Exort.git
cd Exort
npm install
npm run dev
Package-level commands:
npm run dev --workspace @exort/desktop
npm run build --workspace @exort/desktop
npm run typecheck --workspace @exort/desktop
Exort works with Arduino CLI board platforms, including:
Actual compile/upload support depends on the board core, toolchain, USB driver, and upload protocol installed on your machine.
Exort is licensed under AGPL-3.0-only. See LICENSE.