{"id":37335962,"url":"https://github.com/thediymaker/slurm-node-dashboard","last_synced_at":"2026-02-03T23:05:08.238Z","repository":{"id":234637740,"uuid":"789292915","full_name":"thediymaker/slurm-node-dashboard","owner":"thediymaker","description":"Slurm HPC node status page","archived":false,"fork":false,"pushed_at":"2026-02-01T23:52:45.000Z","size":4694,"stargazers_count":62,"open_issues_count":7,"forks_count":15,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-02T04:24:10.320Z","etag":null,"topics":["dashboard","hpc","hpc-clusters","slurm","slurm-cluster","slurm-job-scheduler"],"latest_commit_sha":null,"homepage":"https://slurmdash.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thediymaker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-20T06:34:27.000Z","updated_at":"2026-01-20T11:14:17.000Z","dependencies_parsed_at":"2024-04-23T16:39:02.290Z","dependency_job_id":"0cf8dc0d-2246-40dc-b15a-44bf9ed2ea22","html_url":"https://github.com/thediymaker/slurm-node-dashboard","commit_stats":null,"previous_names":["thediymaker/hpc-dashboard"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/thediymaker/slurm-node-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thediymaker%2Fslurm-node-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thediymaker%2Fslurm-node-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thediymaker%2Fslurm-node-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thediymaker%2Fslurm-node-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thediymaker","download_url":"https://codeload.github.com/thediymaker/slurm-node-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thediymaker%2Fslurm-node-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29060653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T22:28:58.191Z","status":"ssl_error","status_checked_at":"2026-02-03T22:28:56.515Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dashboard","hpc","hpc-clusters","slurm","slurm-cluster","slurm-job-scheduler"],"created_at":"2026-01-16T03:45:37.344Z","updated_at":"2026-02-03T23:05:08.233Z","avatar_url":"https://github.com/thediymaker.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HPC Dashboard\n\n[![License: GNU](https://img.shields.io/badge/License-GNU-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Node.js](https://img.shields.io/badge/Node.js-v18%2B-green)](https://nodejs.org/)\n[![Next.js](https://img.shields.io/badge/Next.js-latest-lightgrey)](https://nextjs.org/)\n[![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-latest-38B2AC)](https://tailwindcss.com/)\n[![Shadcn](https://img.shields.io/badge/Shadcn-components-8B5CF6)](https://ui.shadcn.com/)\n\n\u003e Powerful monitoring for your SLURM-based HPC cluster\n\nThe HPC Dashboard is a Next.js application designed to provide comprehensive monitoring of SLURM nodes. With a focus on performance and usability, this dashboard offers real-time insights into your HPC resources.\n\n![Dashboard Screenshot](/images/new_dashboard_screenshot_1.png \"HPC Dashboard Overview\")\n\n## Key Features\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCore Functionality\u003c/strong\u003e\u003c/summary\u003e\n\n- Real-time monitoring of CPU and GPU node utilization\n- Detailed individual node status\n- Comprehensive Slurm job details and history\n- Dynamic data updates with refresh countdown\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAdvanced Integrations\u003c/strong\u003e\u003c/summary\u003e\n\nEnable these features by configuring your environment file:\n\n- LMOD module display and details\n- Prometheus metrics integration\n- OpenAI-powered chat and embeddings\n\n\u003c/details\u003e\n\n## Quick Start\n\n```bash\ngit clone https://github.com/thediymaker/slurm-node-dashboard.git\ncd slurm-node-dashboard\nnpm install\n# Set up your .env file (see Configuration section)\nnpm run dev\n```\n\nVisit `http://localhost:3000` to see your dashboard in action.\n\n## Detailed Setup - Base\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003ePrerequisites\u003c/strong\u003e\u003c/summary\u003e\n\n- Node.js (v18 or later)\n- npm or Yarn\n- PM2 (for production deployment)\n- Slurm API (enabled and configured)\n- Slrum API user\n- Slurm API token\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEnabling the Slurm API\u003c/strong\u003e\u003c/summary\u003e\n\nTo use this dashboard, you need to have the Slurm API enabled on your HPC cluster. Follow these steps to set it up:\n\n1. Start by reviewing the [Schedmd quickstart guide](https://slurm.schedmd.com/rest_quickstart.html).\n\n2. Ensure that `slurmrestd` is running on your cluster.\n\n3. Once the Slurm API is running, you need to generate an API key for authentication.\n\n### Generating an API Key\n\nThe API key needs permissions to read all data. Here's an example of generating a key for the slurm user with a lifespan of 1 year:\n\n```bash\nscontrol token username=slurm lifespan=31536000\n```\n\nNote: This generates a JWT token. You can view the expiration date on the token and set up a reminder to renew it, or automate the renewal process (even with a shorter timeframe). The expiration of this token will be added to the future admin section on the dashboard.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/summary\u003e\n\nCreate a `.env` file in the root directory:\n\n```env\n# BASE\nCOMPANY_NAME=\"Acme Corp\"\nNEXT_PUBLIC_BASE_URL=\"http://localhost:3000\" # Update for your url and port\nVERSION=1.1.2\nCLUSTER_NAME=\"Cluster\"\nCLUSTER_LOGO=\"/cluster.png\"\n\n# DEV\nNODE_ENV=\"dev\"\nREACT_EDITOR=\"code\"\n\n# SLURM\nSLURM_API_VERSION=\"v0.0.40\"\nSLURM_SERVER=\"192.168.1.5\"\nSLURM_SERVER_PORT=\"6820\"\nSLURM_API_TOKEN=\"\"\nSLURM_API_ACCOUNT=\"\"\n\n# PLUGINS\nNEXT_PUBLIC_ENABLE_OPENAI_PLUGIN=false\nNEXT_PUBLIC_ENABLE_PROMETHEUS_PLUGIN=false\n\n# ADVANCED FEATURES\nOPENAI_API_KEY=\"\"\nOPENAI_API_URL=\"https://api.openai.com/v1\"\nOPENAI_API_MODEL=\"gpt-4o-mini\"\nPROMETHEUS_URL=\"\"  # Format http://192.168.1.5:9090\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eProduction Deployment\u003c/strong\u003e\u003c/summary\u003e\n\nFor production environments, we recommend using PM2:\n\n```bash\nnpm install -g pm2\npm2 start npm --name \"hpc-dashboard\" -- start\npm2 save\n```\n\nThis ensures your dashboard runs continuously and restarts automatically if the server reboots.\n\n\u003c/details\u003e\n\n## Advanced Usage\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCustom Data Collection\u003c/strong\u003e\u003c/summary\u003e\n\n### Historical Node Data\n\nCollect historical node data with this script (run hourly via cron):\n\n```bash\n#!/bin/bash\nSAVE_DIR=\"/path/to/data/directory\"\nmkdir -p \"$SAVE_DIR\"\nFILENAME=$(date +\"%Y-%m-%dT%H-%M-%S.000Z.json.gz\")\ncurl -s \"http://localhost:3000/api/slurm/nodes\" | gzip \u003e \"$SAVE_DIR/$FILENAME\"\nfind \"$SAVE_DIR\" -name \"*.json.gz\" -type f -mtime +30 -delete\n```\n\n### Module Data\n\nCollect module data with this script (run daily via cron):\n\n```bash\n#!/bin/bash\njson_dir=\"/path/to/public/directory\"\njson_output=\"${json_dir}/modules.json\"\nmkdir -p \"$json_dir\"\nexport MODULESHOME=\"/usr/share/lmod/lmod\"\nexport MODULEPATH=\"/your/module/path\"\n$LMOD_DIR/spider -o jsonSoftwarePage $MODULEPATH | python -m json.tool \u003e \"$json_output\"\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eOpen OnDemand Integration\u003c/strong\u003e\u003c/summary\u003e\n\nTo integrate this dashboard with Open OnDemand:\n\nClone the generic Ruby app template:\n\n```\ngit clone https://github.com/thediymaker/ood-status-iframe.git\n```\n\nNavigate to the cloned repository:\n\n```\ncd ood-status-iframe\n```\n\nOpen the views/layout.erb file in your preferred text editor.\nUpdate the URL in the views/layout.erb file to point to your deployed HPC Dashboard:\nerb\n\n```\n\u003ciframe src=\"https://your-hpc-dashboard-url.com\" ...\u003e\n```\n\nFollow Open OnDemand's documentation to deploy this app within your Open OnDemand environment.\n\nThis integration allows you to embed the HPC Dashboard within your Open OnDemand interface, providing users with easy access to cluster status information.\n\n\u003c/details\u003e\n\n## Contributing\n\nWe welcome contributions! Here's how you can help:\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b new-feature`\n3. Make your changes and commit: `git commit -am 'Add new feature'`\n4. Push to the branch: `git push origin new-feature`\n5. Submit a pull request\n\n## License\n\nThis project is licensed under the GNU General Public License v3.0. See the [LICENSE](LICENSE.md) file for details.\n\n## Support and Contact\n\nFor support, please open an issue on our [GitHub repository](https://github.com/thediymaker/slurm-node-dashboard/issues).\n\nFor direct inquiries, contact Johnathan Lee at [john.lee@thediymaker.com](mailto:john.lee@thediymaker.com).\n\n## Video\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eVideo Guides\u003c/strong\u003e\u003c/summary\u003e\n\nQuick start guide\n\n[![Quickstart](https://img.youtube.com/vi/wVEhPN-IqEA/0.jpg)](https://youtu.be/wVEhPN-IqEA)\n\nOpen OnDemand iframe configuration\n\n[![OOD iframe](https://img.youtube.com/vi/avLUYgMya98/0.jpg)](https://youtu.be/avLUYgMya98)\n\n\u003c/details\u003e\n\n## Gallery\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAdditional Screenshots\u003c/strong\u003e\u003c/summary\u003e\n\n|                 Feature Overview                 |                     Job Details                      |\n| :----------------------------------------------: | :--------------------------------------------------: |\n| ![Features](/images/new_features_screenshot.png) | ![Job Detail](/images/new_job_detail_screenshot.png) |\n\n|                      Running Job                       |                       Completed Job                        |\n| :----------------------------------------------------: | :--------------------------------------------------------: |\n| ![Running Job](/images/new_running_job_screenshot.png) | ![Completed Job](/images/new_completed_job_screenshot.png) |\n\n|                   Node Hover Details                    |\n| :-----------------------------------------------------: |\n| ![Hover Status](/images/new_dashboard_screenshot_2.png) |\n\n\u003c/details\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ for HPC\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthediymaker%2Fslurm-node-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthediymaker%2Fslurm-node-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthediymaker%2Fslurm-node-dashboard/lists"}