Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
check:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
label: Linux
- os: windows-latest
label: Windows

name: ${{ matrix.label }}
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4

- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
curl \
file \
libayatana-appindicator3-dev \
libssl-dev \
libwebkit2gtk-4.1-dev \
libxdo-dev \
librsvg2-dev \
wget

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm

- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy

- name: Cache Rust build artifacts
uses: swatinem/rust-cache@v2
with:
workspaces: src-tauri

- name: Install frontend dependencies
run: npm ci

- name: Build frontend
run: npm run build

- name: Cargo check
run: cargo check --manifest-path src-tauri/Cargo.toml

- name: Cargo clippy
run: cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings

# No test suite exists yet, but this ensures any future tests are
# automatically picked up by CI without workflow changes.
- name: Cargo test
run: cargo test --manifest-path src-tauri/Cargo.toml
65 changes: 65 additions & 0 deletions .github/workflows/release-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: release-linux

on:
workflow_dispatch:
push:
tags:
- 'v*'

jobs:
build-linux:
runs-on: ubuntu-22.04
permissions:
contents: write

steps:
- uses: actions/checkout@v4

- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
curl \
file \
libayatana-appindicator3-dev \
libssl-dev \
libwebkit2gtk-4.1-dev \
libxdo-dev \
librsvg2-dev \
wget

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm

- name: Set up Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache Rust build artifacts
uses: swatinem/rust-cache@v2

- name: Install frontend dependencies
run: npm ci

- name: Build Linux bundles
run: npm run tauri build -- --bundles appimage,deb

- name: Upload Linux artifacts
uses: actions/upload-artifact@v4
with:
name: embedist-linux
path: |
src-tauri/target/release/bundle/appimage/*.AppImage
src-tauri/target/release/bundle/deb/*.deb
if-no-files-found: error

- name: Publish GitHub release assets
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
files: |
src-tauri/target/release/bundle/appimage/*.AppImage
src-tauri/target/release/bundle/deb/*.deb
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ src-tauri/target/
*.ilk
*.exp
*.lib
.codex
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

---

## [v0.37.1](https://github.com/mandarwagh9/embedist/releases/tag/v0.37.1) — 2026-04-20

### Fixed
- Linux release packaging now emits AppImage and `.deb` bundles with explicit icon configuration for AppImage generation
- Linux setup wizard now maps common boards to the correct PlatformIO platform IDs, including Arduino Nano 33 BLE Sense
- PlatformIO installation on Linux now falls back to a local virtualenv when distro Python policies block user-site installs
- Documentation updated to reflect Linux release packages and cross-platform setup behavior

---

## [v0.37.0](https://github.com/mandarwagh9/embedist/releases/tag/v0.37.0) — 2026-04-19

### Fixed
Expand Down
34 changes: 24 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,21 @@
<a href="https://www.producthunt.com/posts/embedist?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=embedist">
<img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1127186&theme=light" alt="Product Hunt" height="28" />
</a>
[![Version](https://img.shields.io/badge/version-v0.37.0-blue)](https://github.com/mandarwagh9/embedist/releases)
[![Version](https://img.shields.io/badge/version-v0.37.1-blue)](https://github.com/mandarwagh9/embedist/releases)
[![Windows](https://img.shields.io/badge/Windows-0078D4?logo=windows&logoColor=white)](https://github.com/mandarwagh9/embedist/releases)
[![Linux](https://img.shields.io/badge/Linux-000000?logo=linux&logoColor=white)](https://github.com/mandarwagh9/embedist/releases)

</div>

---

## Overview

Embedist is a Windows desktop application that combines AI assistance with embedded firmware development. Built with Tauri 2, React, and TypeScript, it brings board-aware AI debugging, real-time serial monitoring, and PlatformIO build integration into a single cohesive environment.
Embedist is a desktop application that combines AI assistance with embedded firmware development. Built with Tauri 2, React, and TypeScript, it brings board-aware AI debugging, native serial monitoring, and PlatformIO build integration into a single cohesive environment.

Open any project folder — ESP32, Arduino, or any embedded codebase — and get context-aware AI assistance that understands your hardware. Build, upload, monitor serial output, and iterate faster with AI that knows your board.


## Screenshots

### AI Modes — Chat, Plan, Agent, and Debug
Expand Down Expand Up @@ -50,7 +52,7 @@ Open any project folder — ESP32, Arduino, or any embedded codebase — and get

- 🤖 **Multi-Provider AI** — Chat, Plan, Agent, and Debug modes with support for OpenAI, Anthropic, Google, DeepSeek, Ollama, NVIDIA NIM, and custom vLLM endpoints
- 🔍 **Board-Aware Context** — AI debugging uses detected board info (ESP32 Dev Module, Arduino Uno, etc.) for accurate, hardware-specific fixes
- 📡 **Serial Monitor** — Real-time device communication with configurable baud rates and auto-connect
- 📡 **Serial Monitor** — Native real-time device communication with configurable baud rates, line endings, and port selection
- 🔨 **Build & Upload** — PlatformIO CLI integration with live output streaming, parsed errors/warnings in a Problems panel, and a Stop Build button
- 📁 **File Explorer** — Context menus (rename, delete, copy path, reveal in explorer), breadcrumbs navigation, Command Palette (Ctrl+Shift+P), Recent Files, inline rename, multi-select
- 📝 **Tab Management** — Multi-tab editing with Monaco Editor, dirty indicators, save/close/pin operations, and keyboard shortcuts
Expand All @@ -60,18 +62,20 @@ Open any project folder — ESP32, Arduino, or any embedded codebase — and get
- 🧠 **NVIDIA NIM Support** — Thinking mode for advanced reasoning models (e.g., Kimi-K2.5)
- 🔧 **Edit Custom Endpoints** — Modify existing custom AI endpoints
- 🔐 **Persistent API Keys** — Custom endpoint API keys survive app restarts
- 🚀 **Setup Wizard** — First-run guided setup for PlatformIO installation
- 🚀 **Setup Wizard** — First-run guided setup for PlatformIO installation, including Linux-friendly path hints
- 🖥️ **Startup Loading State** — Branded spinner on launch, deferred heavy operations to prevent "not responding"

## Downloads

### Latest Release: v0.37.0
### Latest Release: v0.37.1

[![Download embedist.exe](https://img.shields.io/badge/Download-embedist.exe-blue)](https://github.com/mandarwagh9/embedist/releases/download/v0.37.0/embedist.exe)
[![Download Installer](https://img.shields.io/badge/Download-Installer-blue)](https://github.com/mandarwagh9/embedist/releases/download/v0.37.0/Embedist_0.37.0_x64-setup.exe)
[![Download embedist.exe](https://img.shields.io/badge/Download-embedist.exe-blue)](https://github.com/mandarwagh9/embedist/releases/download/v0.37.1/embedist.exe)
[![Download Installer](https://img.shields.io/badge/Download-Installer-blue)](https://github.com/mandarwagh9/embedist/releases/download/v0.37.1/Embedist_0.37.1_x64-setup.exe)

Download the executable and run it directly — no installation required.

Linux release builds are produced as AppImage and `.deb` packages.

> **Windows SmartScreen warning?** When you first run the app, Windows may show a blue SmartScreen warning. This is not a virus warning — it's a standard Windows security screen for unsigned applications. Simply click **"More info"** then **"Run anyway"** to launch Embedist.

**[All Releases](https://github.com/mandarwagh9/embedist/releases)** | **[Changelog](CHANGELOG.md)**
Expand All @@ -82,17 +86,20 @@ Download the executable and run it directly — no installation required.

### Quick Start

1. Download `embedist.exe` from [Releases](https://github.com/mandarwagh9/embedist/releases)
1. Download the release package for your platform from [Releases](https://github.com/mandarwagh9/embedist/releases)
2. Run the application
3. Press `Ctrl+O` or use `File > Open Folder` to open a project directory
4. Configure your AI provider in `Settings` (`Ctrl+,`)
5. Start coding and debugging with AI assistance

Windows builds ship as an `.exe` installer/portable binary, while Linux builds are packaged as native AppImage and `.deb` artifacts, so you can either download a release package or build from source on your distro.

### Prerequisites

| Requirement | Description |
|-------------|-------------|
| **Windows** | Windows 10/11 (64-bit) |
| **Linux** | Supported in source and packaged as AppImage/.deb |
| **PlatformIO** | Optional — required for build & upload functionality |
| **AI API Key** | Optional — required for AI debugging features |

Expand All @@ -113,7 +120,14 @@ npm run tauri dev
npm run tauri build
```

The executable will be generated at `src-tauri/target/release/embedist.exe`.
The release binary will be generated under `src-tauri/target/release/` with an OS-specific name. On Windows that is `embedist.exe`. On Linux, Tauri also produces bundle artifacts under `src-tauri/target/release/bundle/appimage/` and `src-tauri/target/release/bundle/deb/`.


### Linux Setup Notes

- If PlatformIO is installed in a non-standard location, set the CLI path in `Settings > Build` to the full path of `pio`.
- If serial ports are visible but cannot be opened, make sure your user has permission to access `/dev/tty*` devices.
- If PlatformIO is not on PATH, the setup wizard can still use the path you configured in settings. On Ubuntu and other distro-managed systems, Embedist can fall back to a local virtual environment when direct user-site installs are blocked.

#### Rust Dependencies

Expand Down Expand Up @@ -186,7 +200,7 @@ Embedist is built on a modern, lightweight stack optimized for performance and d
| State Management | Zustand with `localStorage` persistence |
| AI Integration | OpenAI, Anthropic, Google, DeepSeek, Ollama, NVIDIA NIM, vLLM |
| Build System | PlatformIO CLI (`pio`, `pio run`, `pio device monitor`) |
| Serial Communication | Web Serial API (Chrome/Edge) |
| Serial Communication | Native Rust serial backend |
| Styling | CSS Variables — no framework |

### Directory Structure
Expand Down
6 changes: 4 additions & 2 deletions docs/docs/development/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,10 @@ npm run tauri build
```

Expected outputs:
- `src-tauri/target/release/embedist.exe`
- `src-tauri/target/release/bundle/nsis/Embedist_<version>_x64-setup.exe`
- `src-tauri/target/release/embedist.exe` on Windows
- `src-tauri/target/release/bundle/nsis/Embedist_<version>_x64-setup.exe` on Windows
- `src-tauri/target/release/bundle/appimage/*.AppImage` on Linux
- `src-tauri/target/release/bundle/deb/*.deb` on Linux

## Manual Smoke Checklist

Expand Down
24 changes: 20 additions & 4 deletions docs/docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,35 @@ sidebar_position: 1

This guide will help you install Embedist on your system.

Embedist supports both Windows and Linux. The release page provides a Windows installer and portable binary, plus Linux AppImage and `.deb` packages.

## Quick Install (Recommended)

### Option 1: Download EXE
### Option 1: Download Windows Binary

1. Download `embedist.exe` from the [Releases](https://github.com/mandarwagh9/embedist/releases) page
1. Download the release package for your platform from the [Releases](https://github.com/mandarwagh9/embedist/releases) page
2. Run the application directly — no installation required

### Option 2: NSIS Installer
### Option 2: Windows Installer

1. Download the latest `Embedist_<version>_x64-setup.exe` from [Releases](https://github.com/mandarwagh9/embedist/releases)
2. Run the installer
3. Follow the installation wizard

> **Windows SmartScreen**: If you see a SmartScreen warning, click "More info" then "Run anyway" to launch Embedist.

### Option 3: Linux Packages

1. Download the latest AppImage or `.deb` package from [Releases](https://github.com/mandarwagh9/embedist/releases)
2. For AppImage, make it executable and run it:

```bash
chmod +x Embedist-*.AppImage
./Embedist-*.AppImage
```

3. For `.deb`, install it with your package manager or `dpkg -i`

## Build from Source

If you want to build Embedist from source:
Expand Down Expand Up @@ -49,7 +63,7 @@ npm run tauri dev
npm run tauri build
```

The executable will be generated at `src-tauri/target/release/embedist.exe`.
The executable will be generated under `src-tauri/target/release/` with an OS-specific name, and Linux builds will also produce AppImage and `.deb` packages under `src-tauri/target/release/bundle/`.

## Platform-Specific Setup

Expand Down Expand Up @@ -81,6 +95,8 @@ sudo apt-get install nodejs npm rustc cargo
pip3 install platformio
```

If your distro blocks direct user-site installs, the app can fall back to a local PlatformIO virtual environment during setup.

## First-Run Setup

On first launch, Embedist will guide you through:
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sidebar_position: 1

# Welcome to Embedist

Embedist is an **AI-native embedded development environment** designed specifically for embedded systems. It understands both software and hardware context, helping developers write, debug, and optimize firmware for real devices.
Embedist is an **AI-native embedded development environment** designed specifically for embedded systems. It understands both software and hardware context, helping developers write, debug, and optimize firmware for real devices on Windows and Linux.

## Key Features

Expand Down
70 changes: 70 additions & 0 deletions get-platformio.py

Large diffs are not rendered by default.

18 changes: 8 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "embedist",
"version": "0.37.0",
"version": "0.37.1",
"description": "AI-native embedded development environment",
"type": "module",
"scripts": {
Expand Down
Loading