PeaNUT: A Tiny Dashboard for Network UPS Tools

This repository profile is provided by osrepos.com, an open source repository discovery platform.

PeaNUT: A Tiny Dashboard for Network UPS Tools

Summary

PeaNUT is an open-source, lightweight dashboard designed to monitor Uninterruptible Power Supply (UPS) devices connected via Network UPS Tools (NUT). It provides real-time statistics, status updates, and control capabilities through a user-friendly interface. Built with TypeScript and Next.js, PeaNUT offers flexible deployment options and extensive integration possibilities for home lab enthusiasts and system administrators.

Repository Information

Analyzed by OSRepos on January 18, 2026

Topics

Click on any tag to explore related repositories

Use at your own risk

OSRepos shares public repositories for knowledge and discovery only. Any installation, execution, configuration, or use of code from these repositories is the user's own responsibility. Always review the repository, source code, dependencies, licenses, and security implications before running or installing anything. OSRepos is not responsible for issues, damages, or losses resulting from third-party repositories.

Introduction

PeaNUT is an open-source, lightweight dashboard designed to provide a user-friendly interface for monitoring Uninterruptible Power Supply (UPS) devices connected via Network UPS Tools (NUT). It allows users to view real-time statistics, status updates, and manage their UPS devices efficiently. Built with TypeScript and Next.js, PeaNUT offers a modern and responsive experience for keeping an eye on your power infrastructure.

Installation

PeaNUT provides flexible installation options, primarily leveraging Docker for ease of deployment.

Using Docker

You can run PeaNUT directly with docker run or integrate it into your docker-compose.yml setup.

docker run

docker run -v ${PWD}/config:/config -p 8080:8080 --restart unless-stopped \
--env WEB_PORT=8080 brandawg93/peanut

docker-compose.yml

services:
  peanut:
    image: brandawg93/peanut:latest
    container_name: PeaNUT
    restart: unless-stopped
    volumes:
      - /path/to/config:/config
    ports:
      - 8080:8080
    environment:
      - WEB_PORT=8080

Compile from Source

For those who prefer to build from source, PeaNUT can be compiled using pnpm.

git clone https://github.com/Brandawg93/PeaNUT.git
cd PeaNUT
npm i -g pnpm # only if you don't have pnpm installed
pnpm i
pnpm run build:local
pnpm run start:local

PeaNUT supports linux/amd64 and linux/arm64 platforms, making it suitable for devices like Raspberry Pi 4+.

Examples

PeaNUT is designed for integration and offers various ways to display and interact with your UPS data.

Homepage Support

PeaNUT integrates seamlessly with Homepage, allowing you to display UPS metrics directly on your dashboard.

widget:
  type: peanut
  url: http://peanut.host.or.ip:port
  key: nameofyourups

More advanced customization is possible using the customapi widget.

Glance Support

You can also integrate PeaNUT with Glance for a detailed overview of your UPS status.

- type: custom-api
  title: UPS
  cache: 5m
  url: http://{HOSTNAME}:{PORT}/api/v1/devices/{UPS_NAME}
  template: |
    {{ if .JSON.Exists "ups\.status" }}
      {{ $jsonStatus := .JSON.String "ups\.status" }}
      <div class="flex justify-between text-center">
        <div>
          <div class="color-highlight size-h3">{{ .JSON.Int "battery\.charge" | formatNumber }}%</div>
          <div class="size-h6">BATTERY CHARGE</div>
        </div>
        <div>
          <div class="color-highlight size-h3">{{ concat (.JSON.String "battery\.runtime") "s" | duration }} ({{ div (.JSON.Int "battery\.runtime") 60 | formatNumber }} Wh)</div>
          <div class="size-h6">BATTERY RUNTIME</div>
        </div>
        <div>
          <div class="color-highlight size-h3">{{ .JSON.Int "ups\.load" | formatNumber }}% ({{ .JSON.Int "ups\.realpower" | formatNumber }} W / {{ .JSON.Int "ups\.power" | formatNumber }} VA)</div>
          <div class="size-h6">UPS LOAD</div>
        </div>
        <div>
          <div class="color-highlight size-h3">
      {{ if eq $jsonStatus "OL" }}
          Online
      {{ else if eq $jsonStatus "OL CHRG" }}
            Online Charging
      {{ else if eq $jsonStatus "OB" }}
            On Battery
      {{ else if eq $jsonStatus "OB DISCHRG" }}
            On Battery Discharging
      {{ else if eq $jsonStatus "LB" }}
            Low Battery
      {{ else }}
            Unknown
      {{ end }}
          </div>
          <div class="size-h6">UPS STATUS</div>
        </div>
      </div>
    {{ else }}
      <div class="widget-error-header">
        <div class="color-negative size-h3">ERROR</div>
        <svg class="widget-error-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5">
            <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"></path>
        </svg>
      </div>
      <p class="break-all">UPS is unavailable</p>
    {{ end }}

API Access

PeaNUT also provides a comprehensive API for integration with other tools and custom scripting, allowing for programmatic control and data retrieval from your UPS devices.

Why Use PeaNUT

PeaNUT stands out as an excellent choice for UPS monitoring due to its robust feature set and user-friendly design:

  • Comprehensive Monitoring: View real-time statistics and status of multiple UPS devices connected via NUT.
  • Customizable Dashboard: Tailor the dashboard layout to your preferences.
  • Flexible Configuration: Configure settings via a user-friendly UI or through manual YAML file editing.
  • Extensive Integrations: Supports InfluxDB v2 for Grafana, Prometheus for monitoring and alerting, and customizable widgets for Homepage and Glance.
  • API Access: Offers a full API for seamless integration with other systems.
  • Platform Support: Optimized for linux/amd64 and linux/arm64, including Raspberry Pi 4+.
  • Active Development & Documentation: Benefits from ongoing development, detailed documentation, and a growing list of tested UPS devices.

Links

Related repositories

Similar repositories that may be relevant next.

AI Website Cloner Template: Clone Websites with AI Coding Agents

AI Website Cloner Template: Clone Websites with AI Coding Agents

May 26, 2026

The AI Website Cloner Template is an innovative open-source project that leverages AI coding agents to reverse-engineer any website into a clean, modern Next.js codebase. It enables users to clone entire websites with a single command, extracting design tokens, assets, and reconstructing sections in parallel. This tool is ideal for platform migration, recovering lost source code, or learning web development by deconstructing live sites.

aiai-agentsnextjs
Firefiles: An Open-Source Dropbox Alternative for Cloud Storage Management

Firefiles: An Open-Source Dropbox Alternative for Cloud Storage Management

May 3, 2026

Firefiles is an open-source project that offers a robust alternative to traditional cloud storage solutions like Dropbox. It allows users to set up a personal cloud drive, seamlessly managing files across various backend providers. Built with TypeScript, Next.js, and React, it provides a modern file-system interface for your storage buckets.

cloud-storagedropbox-alternativeaws-s3
shadcn-landing-page: A Modern Next.js Landing Page Template with Shadcn UI

shadcn-landing-page: A Modern Next.js Landing Page Template with Shadcn UI

April 2, 2026

The shadcn-landing-page repository offers a modern, responsive landing page template built with Next.js, Shadcn UI, TypeScript, and Tailwind CSS. It provides an easy-to-use foundation for web projects, featuring a comprehensive set of pre-built sections and essential functionalities like dark mode. This project is a Next.js conversion of the popular Shadcn-Vue landing page.

nextjsresponsive-designshadcn-ui-starter
Streamystats: Advanced Analytics and AI for Your Jellyfin Library

Streamystats: Advanced Analytics and AI for Your Jellyfin Library

March 20, 2026

Streamystats is a powerful statistics service designed for Jellyfin, offering comprehensive analytics and data visualization for your media library. It provides detailed dashboards, user-specific watch history, and advanced AI features like chat and personalized recommendations. This project enhances the Jellyfin experience by transforming raw viewing data into insightful, actionable information.

jellyfinnextjsphoenix

Source repository

Open the original repository on GitHub.

9 counted GitHub visits

View on GitHub
OS
OSRepos

Analysis and discovery of open source repositories. Find interesting projects and follow their updates.

Monitor your website with YourWebsiteScore

OSRepos shares public repositories for knowledge and discovery only. Any installation, execution, configuration, or use of third-party repository code is at your own risk. Always review source code, dependencies, licenses, and security implications before running anything.

© 2025 OSRepos. Built with Nuxt 3 and lots of ❤️