A self-hosted, drag-and-drop dashboard builder with 50 widgets, a template gallery, custom pages, and zero cloud dependencies. One Node.js server, no frameworks, no build step needed.
Works standalone or with OpenClaw. LobsterBoard is a general-purpose dashboard β use it to monitor your homelab, track stocks, display weather, manage todos, or anything else. OpenClaw users get bonus widgets (auth status, cron jobs, activity logs), but they're completely optional.
npm install lobsterboard
cd node_modules/lobsterboard
node server.cjsOr clone it:
git clone https://github.com/Curbob/LobsterBoard.git
cd LobsterBoard
npm install
node server.cjsOpen http://localhost:8080 β press Ctrl+E to enter edit mode β drag widgets from the sidebar β click πΎ Save.
- Drag-and-drop editor β visual layout with 20px snap grid, resize handles, property panel
- 50 widgets β system monitoring, weather, calendars, RSS, smart home, finance, AI/LLM tracking, notes, and more
- Template Gallery β export, import, and share dashboard layouts with auto-screenshot previews; import as merge or full replace
- Custom pages β extend your dashboard with full custom pages (notes, kanban boards, anything)
- Canvas sizes β preset resolutions (1920Γ1080, 2560Γ1440, etc.) or custom sizes
- Live data β system stats stream via Server-Sent Events, widgets auto-refresh
- Dark theme β the only correct choice
- No cloud β everything runs locally, your data stays yours
PORT=3000 node server.cjs # Custom port
HOST=0.0.0.0 node server.cjs # Expose to networkWidget settings are edited in the right-hand panel during edit mode. All configuration saves to config.json.
LobsterBoard includes a built-in template system for sharing and reusing dashboard layouts.
- Export your current dashboard as a template (auto-captures a screenshot preview)
- Browse the template gallery to discover pre-built layouts
- Import templates in two modes:
- Replace β swap your entire dashboard for the template
- Merge β append the template's widgets below your existing layout
- Templates are stored in the
templates/directory and can be shared as folders
| Widget | Description |
|---|---|
| CPU / Memory | Real-time CPU load and memory usage |
| Disk Usage | Disk space with ring gauge |
| Network Speed | Upload/download throughput |
| Uptime Monitor | System uptime, CPU load, memory summary |
| Docker Containers | Container list with status |
| Widget | Description |
|---|---|
| Local Weather | Current conditions for your city |
| World Weather | Multi-city weather overview |
| Widget | Description |
|---|---|
| Clock | Analog/digital clock |
| World Clock | Multiple time zones |
| Countdown | Timer to a target date |
| Todo List | Persistent task list |
| Pomodoro Timer | Work/break timer |
| Notes | Persistent rich-text notes with auto-save |
| Widget | Description |
|---|---|
| RSS Ticker | Scrolling feed from any RSS/Atom URL |
| Calendar | iCal feed display (Google, Apple, Outlook) |
| Now Playing | Currently playing media |
| Quote of Day | Random inspirational quotes |
| Quick Links | Bookmark grid |
| Widget | Description |
|---|---|
| Claude Usage | Anthropic API spend tracking |
| AI Cost Tracker | Monthly cost breakdown |
| API Status | Provider availability |
| Active Sessions | OpenClaw session monitor |
| Token Gauge | Context window usage |
| Widget | Description |
|---|---|
| Stock Ticker | Live stock prices (requires API key) |
| Crypto Price | Cryptocurrency tracker |
| Widget | Description |
|---|---|
| Indoor Climate | Temperature/humidity sensors |
| Camera Feed | IP camera stream |
| Power Usage | Energy monitoring |
| Widget | Description |
|---|---|
| Image / Random Image / Web Image / Latest Image | Static, rotating, remote, or latest images (with browse button for directory selection) |
| Iframe Embed | Embed any webpage |
| Widget | Description |
|---|---|
| Auth Status | Authentication status display |
| Sleep Score | Garmin sleep score widget |
| GitHub Stats | Repository stats β stars, forks, open issues, open PRs |
| Unread Emails | Email inbox counter |
| System Log | Recent system log entries |
| Activity List | Activity timeline |
| Cron Jobs | Cron job status monitor |
| LobsterBoard Release | Version update checker |
| OpenClaw Release | OpenClaw version checker |
| Release | Generic release tracker |
| Widget | Description |
|---|---|
| Header / Text | Custom text with formatting |
| Horizontal Line | Divider |
| Vertical Line | Vertical divider |
| Pages Menu | Navigation for custom pages |
LobsterBoard includes a pages system for adding full custom pages beyond the widget dashboard. Pages get their own route, nav entry, and optional server-side API.
pages/
βββ my-page/
βββ page.json # Metadata (title, icon, order)
βββ index.html # Page UI
βββ api.cjs # Optional: server-side API routes
Pages are auto-discovered on startup. Drop a folder in pages/, restart the server, and it appears in the nav.
π Full guide with examples: pages/README.md
cat > ~/Library/LaunchAgents/com.lobsterboard.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>com.lobsterboard</string>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/node</string>
<string>/path/to/lobsterboard/server.cjs</string>
</array>
<key>WorkingDirectory</key><string>/path/to/lobsterboard</string>
<key>EnvironmentVariables</key>
<dict>
<key>PORT</key><string>8080</string>
<key>HOST</key><string>0.0.0.0</string>
</dict>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.lobsterboard.plistUpdate the paths to match your install location and Node.js binary (which node).
sudo cat > /etc/systemd/system/lobsterboard.service << 'EOF'
[Unit]
Description=LobsterBoard Dashboard
After=network.target
[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/lobsterboard
ExecStart=/usr/bin/node server.cjs
Environment=PORT=8080 HOST=0.0.0.0
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable lobsterboard
sudo systemctl start lobsterboardnpm install -g pm2
cd /path/to/lobsterboard
PORT=8080 HOST=0.0.0.0 pm2 start server.cjs --name lobsterboard
pm2 save
pm2 startup| Endpoint | Method | Description |
|---|---|---|
/config |
GET/POST | Load/save dashboard layout |
/api/stats/stream |
GET | Live system stats (SSE) |
/api/pages |
GET | List custom pages |
/api/todos |
GET/POST | Todo list data |
/api/notes |
GET/POST | Notes widget data |
/api/templates |
GET | List available templates |
/api/templates/:id |
GET | Get template config |
/api/templates/:id/preview |
GET | Template preview image |
/api/templates/import |
POST | Import a template (merge/replace) |
/api/templates/export |
POST | Export current dashboard as template |
/api/calendar?url= |
GET | Proxy iCal feed |
/api/rss?url= |
GET | Proxy RSS/Atom feed |
/api/lb-release |
GET | LobsterBoard version check |
lobsterboard/
βββ server.cjs # Node.js server
βββ app.html # Dashboard builder
βββ config.json # Your saved layout
βββ js/
β βββ builder.js # Editor: drag-drop, zoom, config I/O
β βββ widgets.js # All 50 widget definitions
β βββ templates.js # Template gallery & export system
βββ css/
β βββ builder.css # Dark theme styles
βββ templates/ # Dashboard templates
β βββ templates.json # Template index
β βββ */ # Individual template folders
βββ pages/ # Custom pages (auto-discovered)
β βββ README.md # Page creation guide
βββ package.json
This project is licensed under the Business Source License 1.1 (BSL-1.1).
You are free to use, modify, and self-host LobsterBoard for non-commercial purposes. Commercial use requires a separate license. See LICENSE for full terms.
For commercial use, OEM licensing, or enterprise deployments, contact:
π§ curbob on GitHub β github.com/Curbob
Made with π¦ by Curbob





