{"name":"PeaNUT: A Tiny Dashboard for Network UPS Tools","description":"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.","github":"https://github.com/Brandawg93/PeaNUT","url":"https://osrepos.com/repo/brandawg93-peanut","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/brandawg93-peanut","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/brandawg93-peanut.md","json":"https://osrepos.com/repo/brandawg93-peanut.json","topics":["nextjs","nut","ups","typescript","dashboard","monitoring","home-automation","power-management"],"keywords":["nextjs","nut","ups","typescript","dashboard","monitoring","home-automation","power-management"],"stars":null,"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.","content":"## Introduction\n\nPeaNUT 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.\n\n## Installation\n\nPeaNUT provides flexible installation options, primarily leveraging Docker for ease of deployment.\n\n### Using Docker\n\nYou can run PeaNUT directly with `docker run` or integrate it into your `docker-compose.yml` setup.\n\n#### `docker run`\n\nbash\ndocker run -v ${PWD}/config:/config -p 8080:8080 --restart unless-stopped \\\n--env WEB_PORT=8080 brandawg93/peanut\n\n\n#### `docker-compose.yml`\n\nyaml\nservices:\n  peanut:\n    image: brandawg93/peanut:latest\n    container_name: PeaNUT\n    restart: unless-stopped\n    volumes:\n      - /path/to/config:/config\n    ports:\n      - 8080:8080\n    environment:\n      - WEB_PORT=8080\n\n\n### Compile from Source\n\nFor those who prefer to build from source, PeaNUT can be compiled using `pnpm`.\n\nbash\ngit clone https://github.com/Brandawg93/PeaNUT.git\ncd PeaNUT\nnpm i -g pnpm # only if you don't have pnpm installed\npnpm i\npnpm run build:local\npnpm run start:local\n\n\nPeaNUT supports `linux/amd64` and `linux/arm64` platforms, making it suitable for devices like Raspberry Pi 4+.\n\n## Examples\n\nPeaNUT is designed for integration and offers various ways to display and interact with your UPS data.\n\n### Homepage Support\n\nPeaNUT integrates seamlessly with Homepage, allowing you to display UPS metrics directly on your dashboard.\n\nyaml\nwidget:\n  type: peanut\n  url: http://peanut.host.or.ip:port\n  key: nameofyourups\n\n\nMore advanced customization is possible using the `customapi` widget.\n\n### Glance Support\n\nYou can also integrate PeaNUT with Glance for a detailed overview of your UPS status.\n\nyaml\n- type: custom-api\n  title: UPS\n  cache: 5m\n  url: http://{HOSTNAME}:{PORT}/api/v1/devices/{UPS_NAME}\n  template: |\n    {{ if .JSON.Exists \"ups\\\\.status\" }}\n      {{ $jsonStatus := .JSON.String \"ups\\\\.status\" }}\n      <div class=\"flex justify-between text-center\">\n        <div>\n          <div class=\"color-highlight size-h3\">{{ .JSON.Int \"battery\\\\.charge\" | formatNumber }}%</div>\n          <div class=\"size-h6\">BATTERY CHARGE</div>\n        </div>\n        <div>\n          <div class=\"color-highlight size-h3\">{{ concat (.JSON.String \"battery\\\\.runtime\") \"s\" | duration }} ({{ div (.JSON.Int \"battery\\\\.runtime\") 60 | formatNumber }} Wh)</div>\n          <div class=\"size-h6\">BATTERY RUNTIME</div>\n        </div>\n        <div>\n          <div class=\"color-highlight size-h3\">{{ .JSON.Int \"ups\\\\.load\" | formatNumber }}% ({{ .JSON.Int \"ups\\\\.realpower\" | formatNumber }} W / {{ .JSON.Int \"ups\\\\.power\" | formatNumber }} VA)</div>\n          <div class=\"size-h6\">UPS LOAD</div>\n        </div>\n        <div>\n          <div class=\"color-highlight size-h3\">\n      {{ if eq $jsonStatus \"OL\" }}\n          Online\n      {{ else if eq $jsonStatus \"OL CHRG\" }}\n            Online Charging\n      {{ else if eq $jsonStatus \"OB\" }}\n            On Battery\n      {{ else if eq $jsonStatus \"OB DISCHRG\" }}\n            On Battery Discharging\n      {{ else if eq $jsonStatus \"LB\" }}\n            Low Battery\n      {{ else }}\n            Unknown\n      {{ end }}\n          </div>\n          <div class=\"size-h6\">UPS STATUS</div>\n        </div>\n      </div>\n    {{ else }}\n      <div class=\"widget-error-header\">\n        <div class=\"color-negative size-h3\">ERROR</div>\n        <svg class=\"widget-error-icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\">\n            <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>\n        </svg>\n      </div>\n      <p class=\"break-all\">UPS is unavailable</p>\n    {{ end }}\n\n\n### API Access\n\nPeaNUT also provides a comprehensive API for integration with other tools and custom scripting, allowing for programmatic control and data retrieval from your UPS devices.\n\n## Why Use PeaNUT\n\nPeaNUT stands out as an excellent choice for UPS monitoring due to its robust feature set and user-friendly design:\n\n*   **Comprehensive Monitoring**: View real-time statistics and status of multiple UPS devices connected via NUT.\n*   **Customizable Dashboard**: Tailor the dashboard layout to your preferences.\n*   **Flexible Configuration**: Configure settings via a user-friendly UI or through manual YAML file editing.\n*   **Extensive Integrations**: Supports InfluxDB v2 for Grafana, Prometheus for monitoring and alerting, and customizable widgets for Homepage and Glance.\n*   **API Access**: Offers a full API for seamless integration with other systems.\n*   **Platform Support**: Optimized for `linux/amd64` and `linux/arm64`, including Raspberry Pi 4+.\n*   **Active Development & Documentation**: Benefits from ongoing development, detailed documentation, and a growing list of tested UPS devices.\n\n## Links\n\n*   **GitHub Repository**: [Brandawg93/PeaNUT](https://github.com/Brandawg93/PeaNUT){:target=\"_blank\"}\n*   **Documentation (Wiki)**: [PeaNUT Wiki](https://github.com/Brandawg93/PeaNUT/wiki){:target=\"_blank\"}\n*   **Sponsor on GitHub**: [Sponsor Brandawg93](https://github.com/Brandawg93){:target=\"_blank\"}\n*   **Donate via PayPal**: [Donate to PeaNUT](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=CEYYGVB7ZZ764&item_name=peanut&currency_code=USD&source=url){:target=\"_blank\"}","metrics":{"detailViews":6,"githubClicks":9},"dates":{"published":null,"modified":"2026-01-18T08:01:41.000Z"}}