A lightweight Discord bot designed to monitor system stats from a Raspberry Pi 5 (or any Linux-based machine). The bot periodically sends a live system status update to a selected Discord channel, including CPU load, memory usage, temperature, disk usage, and uptime.
- Live system stats updated in real time
- Details include:
- 🧠 RAM usage
- 🔥 CPU temperature
- ⚙️ CPU usage
- 💾 Disk space used
- ⏱️ System uptime
/htopcommand to display an interactive process list directly in Discord (like the Linuxhtop)/pidinfocommand to display detailed PID information (PID, PPID, user, CPU %, MEM %, uptime, command)
Use the /htop command to view a live list of the most resource-intensive processes on your machine.
- Shows unique processes sorted by CPU usage
- Displays:
- 🔹 PID
- 🖥️ CPU usage
- 📊 Memory usage
- Includes interactive buttons to navigate between pages
- Output is styled to be Discord-friendly and readable
Use the /pidinfo command to inspect a specific process by PID.
- Displays:
- 🔹 PID
- 🔗 PPID
- 👤 User
- 🖥️ CPU usage
- 📊 Memory usage
- ⏱️ Uptime
- 📝 Command
The /htop command is restricted to a specific Discord user ID for security reasons. Only the designated user can run this command to view system processes.
To specify who can run the command, set the environment variables ALLOWED_USER_ID and/or ALLOWED_ROLE_ID in your .env file (logical OR if both are set).
- Node.js 18 or higher
- A Discord bot token
- A Raspberry Pi 5 (or any Linux system with
/procaccess)
# Pull the latest image
docker pull ghcr.io/itsalexik/corewatch:latest
# Run with required environment variables (set your real values)
docker run -d --name corewatch --restart unless-stopped \
--pid=host \
-v /proc:/proc:ro \
-e DISCORD_TOKEN=your_discord_bot_token \
-e DISCORD_CHANNEL_ID=your_channel_id \
-e DISCORD_GUILD_ID=your_guild_id \
-e DISCORD_CLIENT_ID=your_client_id \
-e ALLOWED_USER_ID=allowed_user_id_optional \
-e ALLOWED_ROLE_ID=allowed_role_id_optional \
ghcr.io/itsalexik/corewatch:latestgit clone https://github.com/ItsAlexIK/CoreWatch
cd CoreWatch
docker build -t corewatch .
docker run -d --name corewatch --restart unless-stopped \
--pid=host \
-v /proc:/proc:ro \
-e DISCORD_TOKEN=your_discord_bot_token \
-e DISCORD_CHANNEL_ID=your_channel_id \
-e DISCORD_GUILD_ID=your_guild_id \
-e DISCORD_CLIENT_ID=your_client_id \
-e ALLOWED_USER_ID=allowed_user_id_optional \
-e ALLOWED_ROLE_ID=allowed_role_id_optional \
corewatchgit clone https://github.com/ItsAlexIK/CoreWatch.git
cd CoreWatch
npm install
# Copy env template and fill in your values
cp .env.example .env
# Open .env and fill in your values
# Start the bot
node index.jsSet the bot to start automatically on boot.
- Create the service file
sudo nano /etc/systemd/system/corewatch.service
- Paste and adjust (set WorkingDirectory, ExecStart path to your Node binary if different, and User)
[Unit]
Description=CoreWatch Discord Bot
After=network.target
[Service]
WorkingDirectory=/root/CoreWatch
ExecStart=/usr/bin/node index.js
Restart=always
User=root
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
- Enable and start the service
sudo systemctl daemon-reload
sudo systemctl enable corewatch.service
sudo systemctl start corewatch.service
- Verify it is running
systemctl status corewatch.service
- View logs (Ctrl+C to exit)
journalctl -u corewatch.service -f
To stop:
sudo systemctl stop corewatch.service
To restart after changes:
sudo systemctl restart corewatch.service
Made with ❤️ by ItsAlexIK


