glasspulse
README.md
<div align="center">
# ◈ GlassPulse
**The glassmorphic service dashboard — monitoring so pretty, your status page goes viral.**
[](LICENSE)
[](https://www.typescriptlang.org/)
[](https://modelcontextprotocol.io)
[](CONTRIBUTING.md)
*Checks · Uptime · Latency · Performance — rendered in vivid aurora glass.*
</div>
---
## ✨ Why GlassPulse?
Status pages look like 1999. GlassPulse is what happens when a design system
and a monitoring engine fall in love: **frosted-glass cards on an animated
aurora gradient**, neon status signals, live latency sparklines — and a
native **MCP server** so your AI agent can watch your infrastructure with you.
- 🪟 **True glassmorphism** — backdrop blur, specular highlights, aurora blobs
- 🎨 **Vivid & vibrant** — violet → fuchsia → cyan palette, dark-first, light theme included
- 📊 **Real monitoring** — HTTP, TCP port, keyword, JSON-path and SSL-expiry checks
- ⚡ **Performance budgets** — services degrade (yellow) when latency exceeds your SLO
- 🧩 **Config-driven** — one `services.json`, JSON-Schema validated, zero backend required
- 🤖 **MCP-first** — ship your dashboard *and* an agent-ready MCP server from one repo
- 🌗 **Theme toggle** — dark aurora or light glass, persisted per browser
## 🚀 Quickstart
```bash
git clone https://github.com/MountainLabsDE/GlassPulse-Dashboard.git
cd GlassPulse
npm install
npm run dev # → http://localhost:5173
```
That's it. The bundled demo config probes real public endpoints (GitHub API,
Cloudflare, jsDelivr) so you can see live data immediately.
### Configure your services
Edit `app/src/config/services.json`:
```json
{
"title": "My Infrastructure",
"services": [
{
"id": "api",
"name": "REST API",
"group": "Core",
"icon": "🛰️",
"accent": "#8b5cf6",
"checks": [
{ "type": "http", "url": "https://api.example.com/health", "degradeAboveMs": 800 },
{ "type": "ssl", "host": "api.example.com", "warnDays": 14 }
]
}
]
}
```
Five check types: `http` · `tcp` · `keyword` · `jsonpath` · `ssl`
Full reference: [`app/schema/glasspulse.schema.json`](app/schema/glasspulse.schema.json)
> **Browser note:** the dashboard runs checks client-side, so CORS-enabled
> endpoints light up instantly. TCP/SSL checks (and any endpoint behind CORS)
> are marked *agent-only* — the MCP server probes them natively via Node.
## 🤖 MCP Server
GlassPulse ships a first-class MCP server (stdio + streamable HTTP):
```bash
npm run mcp:build
node mcp-server/dist/index.js # stdio
GLASSPULSE_MCP_TRANSPORT=http npm run mcp # HTTP :3100/mcp
GLASSPULSE_CONFIG=/path/to/your.json npm run mcp
```
**Tools:** `list_services` · `get_status` · `get_metrics` · `run_check`
**Resources:** `glasspulse://services` · `glasspulse://status`
### Claude Desktop / Cursor
```json
{
"mcpServers": {
"glasspulse": {
"command": "node",
"args": ["/absolute/path/to/GlassPulse/mcp-server/dist/index.js"]
}
}
}
```
Then just ask your agent: *"Is the API up? What's the p95 latency?"*
## 📦 Deploy
```bash
npm run build # static bundle in app/dist
```
Drop `app/dist` on GitHub Pages, Vercel, Netlify or any static host.
For TCP/SSL checks from the dashboard, run the MCP server (or any static
file server) inside your network and point `GLASSPULSE_CONFIG` at the
same config.
## 🗺 Roadmap
- [ ] Incident timeline & maintenance windows
- [ ] WebSocket live push (optional tiny agent)
- [ ] Webhook/alert integrations (Slack, Discord, Telegram)
- [ ] Multi-dashboards from one config
- [ ] Plugin checks (custom JS probes)
## 🤝 Contributing
PRs welcome! Keep the glass aesthetic, add tests for engine logic.
## 📄 License
**Apache-2.0** — © MountainLabs UG (haftungsbeschränkt).
We chose Apache-2.0 over MIT deliberately: it grants contributors and users
an explicit patent license while requiring attribution via `NOTICE`. The
"GlassPulse" name and logo remain trademarks of MountainLabs UG.
---
<div align="center">
Made with 💜 by <a href="https://github.com/MountainLabsDE">MountainLabs</a>
</div>
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues