Free & Open Source · GPL v3

Your homelab,
beautifully managed.

KuruDash is a fully local homelab dashboard with built-in SSH terminal. No backend. No database. No tracking. One HTML file.

Use Online Download Star on GitHub
KuruDash screenshot
100% local storage
Live stat widgets
Built-in SSH terminal
12 themes + Custom builder
CPU · RAM · Disk · Power widgets
Live status checks
Auto favicon fetch
JSON backup & restore
Drag & drop reorder
Custom backgrounds
Netdata / Prometheus ready
Zero dependencies
GPL v3
Why KuruDash

Everything you need.
Nothing you don't.

Built for homelabbers who want a clean overview without spinning up yet another container.

100% Private

All data lives in your browser's localStorage. Nothing is ever sent to any server. Not even analytics.

One File

The entire app is a single HTML file. No Node.js, no Docker, no build step. Open it and go.

Live Stat Widgets

CPU, RAM, disk, network, power draw, temperature — pull live data from Netdata, Prometheus, or any JSON API.

12 Themes + Custom

Aero, Aero Dark, Dark, Mocha, Nord, Solarized, Sakura, Sakura Dark, Terminal, Flat Dark, Flat Light — or build your own.

Live Status Checks

Green dot means it's up, red means it's down. Status is polled every 60 seconds with debounced renders for zero jank.

Auto Icons

Add a service URL and KuruDash automatically fetches its favicon. Falls back to clean SVG icons with no broken images.

Portable Backup

Export everything as JSON including widget configs. Paste it on any device to restore your full setup in seconds.

SSH Terminal

Full in-browser SSH via WebSocket relay. Multi-tab sessions, split pane, command snippets, xterm.js powered.

Folder Organization

Group services into collapsible folders. See per-folder status summaries — up/down counts at a glance from the root view.

Power & Resource Tracking

Add a Power Draw widget pointed at your smart plug or UPS API. Watch real-time wattage alongside your services.

Live stat tiles

Widgets — connect your servers.

Widgets pull live data from any JSON endpoint on your server. The easiest way is Netdata — a free, zero-config monitoring agent that installs in 30 seconds and exposes a full REST API instantly.

How to set up
1
Install Netdata on each server you want to monitor:
curl https://my-netdata.io/kickstart.sh | sh
It starts automatically on port 19999. No config needed.
2
In KuruDash, click the bar chart icon in the header (or press W), pick a preset — CPU, RAM, Disk, Power, Temp — and paste the URL for your server.
3
Set warn and alert thresholds. The widget bar turns yellow at warn, red at alert. Click Add Widget — it appears above the service grid and refreshes every 8 seconds.
4
If you see "Error", enable CORS on your server (see the note below). The simplest fix is opening KuruDash on the same machine as your server.

CORS note

Browsers block cross-origin requests by default. For Netdata, edit /etc/netdata/netdata.conf and add access control allow origin = * under [web], then restart Netdata. For any other API, add the header Access-Control-Allow-Origin: * — one line in nginx, Caddy, or Traefik.

Netdata URL reference
Widgetchart= value
CPU %system.cpu
RAM %system.ram
Disk %disk_space._
Network insystem.net
Temperaturesensors.coretemp
Load avgsystem.load

Base URL pattern: http://SERVER_IP:19999/api/v1/data?chart=CHART&points=1&after=-1
JSON path for all Netdata endpoints: data.0.0

Power draw & other sources

Shelly smart plug

URL: http://PLUG_IP/rpc/Switch.GetStatus?id=0
Path: apower — Unit: W

Docker containers

URL: http://SERVER:2375/v1/info
Path: ContainersRunning

Custom / any JSON

Pick the Custom preset. Any URL that returns JSON works. Use dot notation for nested values — e.g. stats.temperature

UPS / NUT

Expose a JSON endpoint via NUT web or a small script. Point the Power widget at it with path ups.load or battery.charge

Built-in SSH terminal. No backend needed.

KuruDash connects directly to a WebSocket relay running on your server — no proxy, no middleware, just your browser talking to your machine.

1
Run ttyd -p 7681 bash (or login) on your server
2
Add your server in KuruDash, set connection type to SSH, enter ws://host:7681
3
Click Open SSH Terminal — full xterm.js session in the panel
root@homeserver — bash
root@homeserver:~$ docker ps --format "table {{.Names}}\t{{.Status}}"
NAMES           STATUS
jellyfin       Up 3 days
nextcloud     Up 3 days
pihole        Up 3 days
portainer     Up 3 days
 
root@homeserver:~$
Screenshots

See it in action

Drop your own screenshots in docs/ to replace these placeholders.

Aero theme
Frutiger Aero — the default
Dark theme
Dark theme
Mocha theme
Catppuccin Mocha
SSH terminal
Built-in SSH Terminal
Get started in 10 seconds

Just download and open.

No install. No config. No server.

# Just download dashboard.html and open it
git clone https://github.com/xf86-kurumi/KuruDash
Open Dashboard Download