Visual, browser-based configuration tool for ESPHome. Pick a board, add components, configure settings -- get a ready-to-flash YAML file. No YAML knowledge required.
To try it now just visit ESPForge on GitHub Pages -- nothing to install, or keep reading for more info.
- 41 boards + Custom — ESP32, S2, S3, C3, C6, ESP8266, plus M5Stack (ATOM Lite, AtomS3, Core2, CoreS3, Cardputer, Dial, StampS3, NanoC6, StickC Plus2), Seeed XIAO (C3, S3, S3 Sense, C6), LilyGO (T-Display S3, T-Display S3 AMOLED, T-Display S3 Pro, T-Beam v1.1, T-Beam Supreme, T-Watch S3, T-Dongle S3), Heltec (WiFi Kit 32, WiFi LoRa 32 v2/v3), CYD (Cheap Yellow Display), Olimex ESP32-PoE, AZ-Delivery, Sonoff, and more — plus a Custom Board option if yours isn't listed
- 99 components — sensors, switches, lights, fans, covers, locks, climate, BLE, IR (transmitter, receiver, IR/RF Proxy), media, displays, I/O expanders, mmWave radar (LD2410, LD2450), OpenThread (Thread mesh networking on ESP32-C5/C6/H2)
- 14 starter templates — Blank Project, Basic Sensor Node, Smart Relay / Plug, Addressable LED Strip, Environment Monitor, Motion-Activated Light, BLE Gateway / Proxy, Garage Door Controller, Power Monitor, PWM Fan Controller, Presence Sensor (mmWave), IR Blaster / AC Controller, IR/RF Proxy, OLED Status Display
- Multi-template selection — combine templates and ESPForge merges them, deduplicating shared components automatically
- Guided onboarding — template → board → settings → components
- Boards with onboard hardware (buttons, NeoPixels, displays) auto-add those components on selection
- Variant-aware palette — components that only work on certain ESP32 variants (e.g. OpenThread on C5/C6/H2, Touch on ESP32/S2/S3) are hidden when the variant doesn't support them
- Form-based editing — every field has labels, defaults, and hints
- Visual pin mapper — color-coded board diagram with pin conflict detection
- Automation builder — triggers (boot, interval, button press, sensor threshold), conditions, and actions for switches, lights, fans, covers, locks, numbers
- Full settings — WiFi, fallback AP, static IP, MQTT, API encryption, OTA, logger levels, SNTP time, status LED
- YAML import — load an existing ESPHome
.yamlfile and keep editing it visually - Live YAML preview — syntax-highlighted, updates as you type
- Validation — catches missing WiFi, unassigned pins, empty fields, and conflicts before export
- Secrets file — auto-generates
secrets.yamlfor!secretreferences - Share via URL — encode your project in a shareable link
- Undo / Redo (Ctrl+Z / Ctrl+Shift+Z)
- Save / Load projects as JSON
- Inline project rename in the header
- Light / Dark theme
- Keyboard shortcuts (Ctrl+S save, Ctrl+E export)
- Responsive layout — works on mobile and tablet
ESPForge runs entirely in the browser. Your configuration is never sent to a server -- everything stays local.
Just visit ESPForge on GitHub Pages -- nothing to install.
- In Home Assistant, go to Settings > Apps and click Install app
- Click the overflow menu (top right) > Repositories
- Add
https://github.com/mo3he/ESPForgeand click Add - Find ESPForge in the store and click it
- Click Install
- Once installed, click Start
- Click Open Web UI
docker run -p 8080:80 ghcr.io/mo3he/espforgeOr with Docker Compose:
docker compose up -dOpen http://localhost:8080 in your browser.
To update:
docker compose pull && docker compose up -dMIT
- Display page builder - visual drag-and-drop widget system for graphical displays (SSD1306, ST7789V, ILI9xxx, etc.): add text rows, sensor values, clock, icons, and shapes per page; ESPForge generates the
font:declarations andlambda:/pages:YAML automatically - Device catalog - a "I have this product" flow: pick a known branded device (Sonoff Basic, Shelly, etc.) and ESPForge pre-configures the exact board, components, and pin assignments for that hardware out of the box
- Stricter field validation - validate component field values against known constraints (ranges, formats, cross-field consistency) to catch more configuration errors before export
- More display drivers (ILI9xxx, e-paper, LCD character, LVGL)
- More board definitions
Development
cd espforge
npm install
npm run devOpen http://localhost:5173/ESPForge/ in your browser.
cd espforge
npm run buildStatic output is in espforge/dist/.
A GitHub Actions workflow (.github/workflows/docker.yml) builds and pushes a multi-platform image to ghcr.io on every push to main and on releases.
A GitHub Actions workflow (.github/workflows/deploy.yml) builds and deploys on push to main:
- Settings → Pages → set Source to GitHub Actions
- Push to
main
- React 19 + TypeScript + Vite 8
- js-yaml
- No backend -- fully static, nothing stored server-side
Issues and PRs welcome. If you'd like to add a board, component, or template, the definitions live in espforge/src/data/.
