denisakp/pulseguard
An open-source monitoring tool for SSL certificates, domain expirations, TCP services, and cronjobs โ with alerting and status pages.
PulseGuard
Simple, self-hosted uptime monitoring. Check if your websites and services are up.
PulseGuard monitors your websites, APIs, and services. If something goes down, you get notified. That's it.
No complex setup. No overwhelming dashboards. Just pure uptime monitoring.
๐ค Why PulseGuard?
I started exploring monitoring stacks like Prometheus, Grafana, Tempo, and AlertManager. But configuring dozens of config files just to check if my websites were up seemed crazy.
So I built this during my internship in 2023 with TypeScript and NestJS. Later, I rewrote it in Go while learning the language. Now it's a simple, straightforward monitoring tool that just works.
Get Started in 30 Seconds
git clone https://github.com/denisakp/pulseguard.git
cd pulseguard
docker compose up -dOpen http://localhost:8080 and log in with:
- Email:
admin@pulseguard.test - Password:
puls3gu@rd
Change the password on first login.

โจ What You Get
- ๐ Monitor Websites โ HTTP/HTTPS checks
- ๐ Monitor Services โ TCP port checks
- ๐ Get Notified โ Email, Slack, Webhooks
- ๐ Track Incidents โ See when things went wrong
- ๐ Status Page โ Share status with customers
- ๐ ๏ธ Maintenance Windows โ Avoid false alarms during updates
- ๐ท๏ธ Organize โ Tag and group monitors
- ๐ Secure โ 2FA support
๐ Table of Contents
Installation
Docker (Recommended)
git clone https://github.com/denisakp/pulseguard.git
cd pulseguard
cp .env.example .env
docker compose up -dAccess at http://localhost:8080
The docker-compose includes everything: app, database, Redis, and reverse proxy.
How It Works
- Add Monitors โ Tell PulseGuard what to check (websites, APIs, services)
- Automatic Checks โ It checks every 5 minutes by default (customizable)
- Track Status โ See uptime history and incident timeline
- Get Alerts โ Email notifications when things go down
- Status Page โ Share public status with customers
That's it. No complexity.
Configuration
Environment Variables
# Database
DATABASE_URL=postgres://user:password@host:5432/pulseguard
REDIS_URL=localhost:6379
All options in .env.example
๐ญ Feedback & Testing
We're actively developing PulseGuard and value your input! Help us improve by:
- Share Your Feedback (Anonymous form) โ Tell us what you think about the UI, features, and user experience
- Report Bugs โ Found something broken? Open an issue
- Suggest Features โ Have ideas? Start a discussion
Your feedback helps shape the future of PulseGuard. The feedback form is completely anonymous and takes about 2 minutes.
๐ฌ Contributing
Found a bug? Have an idea? Let us know!
- GitHub Issues โ Report bugs or request features
- GitHub Discussions โ Ask questions
We welcome pull requests. Please read CONTRIBUTING.md first.
๐ License
MIT License โ See LICENSE for details.
You can use PulseGuard for commercial or personal projects.
๐ More Info
- Quick Start Guide โ Detailed setup walkthrough
- Contributing Guidelines โ How to help
- Architecture Docs โ How it works under the hood
- Security Policy โ Reporting security issues
Built with โค๏ธ by denisakp





