npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lobsterboard

v0.6.2

Published

Self-hosted drag-and-drop dashboard builder with 50 widgets, template gallery, and custom pages. Works standalone or with OpenClaw.

Readme

🦞 LobsterBoard

A self-hosted, drag-and-drop dashboard builder with 60+ 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.

LobsterBoard

LobsterBoard Dashboard

Quick Start

npm install lobsterboard
cd node_modules/lobsterboard
node server.cjs

Or clone it:

git clone https://github.com/Curbob/LobsterBoard.git
cd LobsterBoard
npm install
node server.cjs

Open http://localhost:8080 → press Ctrl+E to enter edit mode → drag widgets from the sidebar → click 💾 Save.

Edit Mode

Features

  • Drag-and-drop editor — visual layout with 20px snap grid, resize handles, property panel
  • 60+ 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
  • 5 themes — Default (dark), Terminal (CRT green), Feminine (pastel pink), Feminine Dark, Paper (sepia)
  • No cloud — everything runs locally, your data stays yours

Themes

LobsterBoard ships with 5 built-in themes. Switch themes from the dropdown in edit mode — your choice persists across sessions.

| Default | Terminal | Paper | |---------|----------|-------| | Default | Terminal | Paper |

| Feminine | Feminine Dark | |----------|---------------| | Feminine | Feminine Dark |

  • Default — dark theme with emoji icons (the classic look)
  • Terminal — green CRT aesthetic with scanlines and Phosphor icons
  • Paper — warm cream/sepia tones, serif fonts, vintage feel
  • Feminine — soft pink and lavender pastels with subtle glows
  • Feminine Dark — pink/purple accents on a dark background

Remote Server Monitoring

Monitor multiple servers from a single dashboard using lobsterboard-agent.

Setup Remote Server

On your VPS/remote server:

npm install -g lobsterboard-agent
lobsterboard-agent init     # Generates API key - save it!
lobsterboard-agent serve    # Starts on port 9090

Add to LobsterBoard

  1. Click 🖥️ Servers in the header
  2. Enter server name, URL (http://your-server-ip:9090), and API key
  3. Click Test Connection to verify
  4. Add widgets (Uptime Monitor, Docker, CPU/Memory, etc.)
  5. Select your remote server from the Server dropdown in widget properties

Supported Widgets

These widgets support remote server data:

| Widget | What It Shows | |--------|---------------| | Uptime Monitor | System uptime, CPU, memory | | CPU / Memory | CPU usage + RAM usage | | Disk Usage | Disk space with ring chart | | Network Speed | Upload/download throughput | | Docker Containers | Container list and status |

Multi-Server Dashboard

Add multiple widgets and select different servers for each — monitor your entire infrastructure from one dashboard.

Configuration

PORT=3000 node server.cjs              # Custom port
HOST=0.0.0.0 node server.cjs           # Expose to network

Widget settings are edited in the right-hand panel during edit mode. All configuration saves to config.json.

Template Gallery

Template Gallery

LobsterBoard includes a built-in template system for sharing and reusing dashboard layouts.

Template Import

  • 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

Dashboard Example

Widgets

🖥️ System Monitoring

| 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 |

🌤️ Weather

| Widget | Description | |--------|-------------| | Local Weather | Current conditions for your city | | World Weather | Multi-city weather overview |

⏰ Time & Productivity

| 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 |

📰 Media & Content

| 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 |

🤖 AI / LLM Monitoring

Track your AI coding subscriptions in real-time. Inspired by OpenUsage by Robin Ebers.

| Widget | Description | Setup | |--------|-------------|-------| | AI Usage | Combined view of all providers | — | | Claude Code | Session, weekly, Opus limits | Run claude once | | Codex CLI | Session, weekly, code reviews | Run codex once | | GitHub Copilot | Premium, chat, completions | Run gh auth login | | Cursor | Credits, usage breakdown | Just use Cursor IDE | | Gemini CLI | Pro, flash models | Run gemini once | | Amp | Free tier, credits | Run amp once | | Factory / Droid | Standard, premium tokens | Run factory once | | Kimi Code | Session, weekly | Run kimi once | | JetBrains AI | Quota tracking | Sign in via IDE | | Antigravity | Gemini 3, Claude via Google | Run antigravity-usage login | | MiniMax | Coding plan session | Set MINIMAX_API_KEY | | Z.ai | Session, weekly | Set ZAI_API_KEY | | AI Cost Tracker | Monthly cost breakdown | — | | API Status | Provider availability | — | | Active Sessions | OpenClaw session monitor | — | | Token Gauge | Context window usage | — |

💰 Finance

| Widget | Description | |--------|-------------| | Stock Ticker | Live stock prices (requires API key) | | Crypto Price | Cryptocurrency tracker |

🏠 Smart Home

| Widget | Description | |--------|-------------| | Indoor Climate | Temperature/humidity sensors | | Camera Feed | IP camera stream | | Power Usage | Energy monitoring |

🔗 Embeds & Media

| 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 |

🔧 Utility

| 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 |

🎨 Layout

| Widget | Description | |--------|-------------| | Header / Text | Custom text with formatting | | Horizontal Line | Divider | | Vertical Line | Vertical divider | | Pages Menu | Navigation for custom pages |

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

Run on Boot

macOS (launchd)

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.plist

Update the paths to match your install location and Node.js binary (which node).

Linux (systemd)

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 lobsterboard

pm2 (any OS)

npm install -g pm2
cd /path/to/lobsterboard
PORT=8080 HOST=0.0.0.0 pm2 start server.cjs --name lobsterboard
pm2 save
pm2 startup

API Endpoints

| 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 |

File Structure

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

Community Widgets

Community contributions are welcome! Build your own widget and share it with the LobsterBoard community.

License

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.

Commercial Licensing

For commercial use, OEM licensing, or enterprise deployments, contact:

📧 curbob on GitHub — github.com/Curbob


Made with 🦞 by Curbob