π§ Work in Progress π§
This project is currently in Early Alpha. Features may change, and bugs are to be expected.
Power Dash is a modern, self-hosted dashboard and automation platform for the Tesla Powerwall. It acts as a high-performance bridge to your local gateway, collecting high-frequency data and presenting it in a beautiful, responsive interface.
- β‘ Real-Time Monitoring: Live visualization of power flow (Grid, Home, Solar, Battery) with sub-second updates.
- π Comprehensive Data: Tracks Battery SoE, String Voltages, Inverter Health, and Grid Frequency/Voltage.
- πΎ Embedded Storage: Built-in, high-performance time-series database (Prometheus TSDB). No external database required.
- π Modern UI: Fast, responsive frontend built with React, Mantine, and uPlot for smooth zooming and panning.
- π API Proxy: Securely proxies requests to the Powerwall API, handling authentication and session management.
- π₯ Historical Import: Migration tools to import your existing data from InfluxDB (from Powerwall-Dashboard).
- Backend: Go 1.25+ (Gin, Cobra, Viper, Zap)
- Frontend: React 19, Mantine UI, Vite
- Database: Embedded Prometheus TSDB
docker run -d \
--name power-dash \
-p 8080:8080 \
-v ./data:/data \
-e POWER_DASH_PASSWORD="YOUR_GATEWAY_PASSWORD" \
ygelfand/power-dash:latestA docker-compose.yml is included in the repository:
POWER_DASH_PASSWORD=YOUR_GATEWAY_PASSWORD \
POWER_DASH_ENDPOINT=https://192.168.91.1/ \
docker-compose up -dOr set the values directly in docker-compose.yml and run docker-compose up -d.
Download the appropriate binary for your operating system from the Releases page.
chmod +x power-dash
./power-dash run --password "YOUR_GATEWAY_PASSWORD"Power Dash can be configured via command-line flags, environment variables (POWER_DASH_*), or a power-dash.yaml file (searched in ./, ~/., and /etc/power-dash/).
| Option | Flag | Env Variable | Default |
|---|---|---|---|
| Endpoint | --endpoint |
POWER_DASH_ENDPOINT |
https://192.168.91.1/ |
| Password | --password |
POWER_DASH_PASSWORD |
(required) |
| Listen address | --listen |
POWER_DASH_LISTEN |
:8080 |
| Connection mode | --connection-mode |
POWER_DASH_CONNECTION_MODE |
wifi |
| RSA key path | --key-path |
POWER_DASH_KEY_PATH |
tedapi_rsa_private.pem |
| Gateway DIN | --din |
POWER_DASH_DIN |
(auto-detected) |
| Collection interval | --collection-interval |
POWER_DASH_COLLECTION_INTERVAL |
30 (seconds) |
| Log level | --log-level |
POWER_DASH_LOG_LEVEL |
info |
| Storage path | --storage-path |
POWER_DASH_STORAGE_PATH |
/data |
| Storage retention | --storage-retention |
POWER_DASH_STORAGE_RETENTION |
0s (infinite) |
Power Dash supports two ways to connect to your Powerwall gateway.
Connect over your local network using the gateway's IP and installer password. This is the simplest setup and works for most users, but requires a device with 2 network connections:
- WiFi connected to the powerwall/gateway's internal wifi
- Wifi/LAN connected to your local network
# power-dash.yaml
endpoint: "https://192.168.91.1/"
password: "YOUR_INSTALLER_PASSWORD"
connection-mode: wifiThe installer password is printed on the QR sticker inside your gateway enclosure.
LAN mode uses RSA-signed requests directly to the gateway's TEDAPI endpoint.
This requires a one-time setup using a Tesla developer account.
- A Tesla Developer app with
energy_device_dataandenergy_cmdsscopes
Download the appropriate binary for your OS from the Releases page and make it executable:
chmod +x power-dashRun the interactive auth flow. This opens a browser for Tesla OAuth, starts a localtunnel for the callback, and registers your app with the Fleet API.
power-dash connect auth \
--client-id YOUR_TESLA_CLIENT_ID \
--client-secret YOUR_TESLA_CLIENT_SECRETTokens are saved to fleet_tokens.json.
This generates an RSA-4096 key pair (if one doesn't exist), registers it with your Powerwall via the Fleet API, and walks you through physical confirmation via a breaker toggle.
power-dash connect keys addAt the end of the command, you'll see a config snippet like:
ββ Add to your config βββββββββββββββββββ
β connection-mode: lan β
β key-path: tedapi_rsa_private.pem β
β din: 1234567-00-A--AA0000000000AA β
βββββββββββββββββββββββββββββββββββββββββ
Copy config/power-dash-lan.example.yaml to power-dash.yaml and fill in your values:
endpoint: https://192.168.91.1/
password: YOUR_INSTALLER_PASSWORD
connection-mode: lan
key-path: tedapi_rsa_private.pem
din: 1234567-00-A--AA0000000000AA # from 'keys add' output# List registered keys and their verification state
power-dash connect keys list
# Remove a key by its base64-encoded public key
power-dash connect keys remove <PUBLIC_KEY>git clone https://github.com/ygelfand/power-dash.git
cd power-dash
# Start backend + frontend in dev mode
make run-dev
# Backend: http://localhost:8080
# Frontend: http://localhost:8000
# Build standalone binary with embedded UI
make all
./bin/power-dash run --helpMigrate from InfluxDB using the Settings page in the web UI.
Distributed under the MIT License. See LICENSE for more information.


