Skip to content

h18n/pulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Pulse

AI-Powered Observability Platform for Modern Infrastructure

Pulse Demo

Live Demo Website β€’ Features β€’ Quick Start β€’ Getting Started β€’ Architecture β€’ Contributing

Version License PRs Welcome Sponsor this project


πŸš€ What is Pulse?

Pulse is a next-generation, AI-powered observability platform that unifies metrics, logs, traces, and incidents into a single pane of glass. Built for modern DevOps, SRE, and Platform Engineering teams, Pulse reduces Mean Time to Resolution (MTTR) by 75% through intelligent automation and an AI copilot.

Why Pulse?

Pain Point Pulse Solution
😫 Alert fatigue (70% non-actionable) πŸ€– AI-powered anomaly detection
πŸ”€ Tool sprawl (5-8 tools per org) πŸ“Š Unified platform for all telemetry
⏱️ Slow investigations (4+ hours MTTR) ⚑ AI Copilot for instant root cause
πŸ’Έ Unpredictable costs πŸ’° Predictable per-host pricing

✨ Features

πŸ“Š Unified Dashboards

  • Grafana-style view/edit with drag-and-drop panel layout
  • 12+ visualization types (Stats, Charts, Tables, Gauges, etc.)
  • Real-time auto-refresh, template variables, sharing & permissions

πŸ” Explore

  • Logs Explorer: Full-text search, live tailing, structured logging
  • Metrics Explorer: PromQL query builder with multi-query support
  • Global Query Explorer: Cross-region Thanos queries

🚨 Alerting & Incidents

  • Threshold and anomaly-based alerts with correlation rules engine
  • Multi-channel notifications (Slack, PagerDuty, Email, Webhooks)
  • Incident timeline and war room collaboration

πŸ€– AI Copilot & Automation

  • Natural language queries ("Show me errors in checkout service")
  • Automated root cause analysis & remediation suggestions
  • Runbook automation with step-by-step execution

πŸ“‘ Native OpenTelemetry

  • Ingest Metrics, Logs, and Distributed Traces natively via OTLP.
  • No vendor lock-in (otel-collector runs as a sidecar).
  • Turnkey integration for Node.js, Python, Go, and Java.

πŸ–₯️ Infrastructure Monitoring

  • Device inventory, auto-discovered service map
  • Resource utilization (CPU, Memory, Disk, Network)
  • MQTT sensor integration for IoT monitoring

🎨 Beautiful UX

  • "Hacker Chic" dark theme with glassmorphism effects
  • Fully responsive, WCAG 2.1 AA accessible
  • Command Palette (⌘K) for quick navigation

🏁 Quick Start

For a comprehensive setup guide, see Getting Started.

Prerequisites

  • Node.js 20+ and npm
  • Docker & Docker Compose (for backend infrastructure)
  • Google AI API key (get one here)

1. Clone & Configure

git clone https://github.com/h18n/pulse.git
cd pulse

# Copy environment templates
cp .env.example .env
cp ui/.env.example ui/.env.local

# Edit .env and add your GEMINI_API_KEY

2. Start Services via Docker Compose (Recommended)

Start the entire Pulse stack (UI and Backend Services) with one command.

docker-compose up -d

Open http://localhost:3000 in your browser.

Alternative: Local Development

If you prefer to run services manually for development, we've bundled everything into a single command using concurrently!

# Terminal 1 - Background Infra (if any)
npm run infra:up

# Terminal 2 - Start all 4 services at once
# (Installs all dependencies across the workspace first)
npm run install:all
npm run dev

Open http://localhost:3000 in your browser.

Demo Credentials

Role Email Password
Admin admin@pulse.io admin123
Viewer viewer@pulse.io viewer123

⚠️ These are demo-only credentials. See auth.ts for how to replace with a real database.


πŸ“ Project Structure

pulse/
β”œβ”€β”€ ui/                          # Next.js Frontend (port 3000)
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/                 # App Router pages
β”‚   β”‚   β”‚   β”œβ”€β”€ (dashboard)/     # Dashboard route group
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ dashboards/  # Dashboard CRUD pages
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ alerts/      # Alert & correlation rules
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ automation/  # Runbook automation
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ copilot/     # AI Copilot
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ devices/     # Infrastructure & sensors
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ explore/     # Logs, metrics, global queries
β”‚   β”‚   β”‚   β”‚   └── incidents/   # Incident management
β”‚   β”‚   β”‚   β”œβ”€β”€ api/             # API routes
β”‚   β”‚   β”‚   └── login/           # Authentication
β”‚   β”‚   β”œβ”€β”€ components/          # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ lib/                 # Utilities & services
β”‚   β”‚   └── stores/              # Zustand state management
β”‚   └── .env.example             # UI environment template
β”‚
β”œβ”€β”€ apps/                        # Backend microservices
β”‚   β”œβ”€β”€ ai-engine/               # AI/ML Engine (port 3002)
β”‚   β”œβ”€β”€ alert-ingestion/         # Alert processing (port 3001)
β”‚   β”œβ”€β”€ config-manager/          # Configuration service (port 3003)
β”‚   └── slack-pacer/             # Slack bot integration
β”‚
β”œβ”€β”€ infra/                       # Infrastructure
β”‚   β”œβ”€β”€ docker-compose.yml       # Local dev environment
β”‚   β”œβ”€β”€ prometheus/              # Prometheus config
β”‚   └── telegraf/                # Telegraf config
β”‚
β”œβ”€β”€ docs/                        # Documentation
β”‚   β”œβ”€β”€ GETTING_STARTED.md       # Beginner setup guide
β”‚   β”œβ”€β”€ PRD.md                   # Product Requirements
β”‚   β”œβ”€β”€ DESIGN_SYSTEM.md         # Design System Guide
β”‚   β”œβ”€β”€ API_SPECIFICATION.md     # API Reference
β”‚   └── TESTING_STRATEGY.md      # Testing Framework
β”‚
β”œβ”€β”€ .env.example                 # Root environment template
β”œβ”€β”€ ARCHITECTURE.md              # System architecture
β”œβ”€β”€ CONTRIBUTING.md              # Contribution guidelines
β”œβ”€β”€ CODE_OF_CONDUCT.md           # Code of Conduct
β”œβ”€β”€ LICENSE                      # Apache 2.0
└── README.md                    # This file

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                              CLIENTS                                     β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚   β”‚   Web    β”‚    β”‚  Mobile  β”‚    β”‚   CLI    β”‚                          β”‚
β”‚   β”‚   App    β”‚    β”‚   App    β”‚    β”‚   Tool   β”‚                          β”‚
β”‚   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚               β”‚               β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     APPLICATION LAYER                                    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
β”‚  β”‚ Alert Ingest β”‚  β”‚  AI Engine   β”‚  β”‚Config Managerβ”‚                  β”‚
β”‚  β”‚   (3001)     β”‚  β”‚   (3002)     β”‚  β”‚   (3003)     β”‚                  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                 β”‚                 β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           DATA LAYER                                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”‚
β”‚  β”‚ Prometheus β”‚   β”‚Elasticsearchβ”‚  β”‚  Telegraf  β”‚                      β”‚
β”‚  β”‚   (9090)   β”‚   β”‚   (9200)    β”‚  β”‚   (9273)   β”‚                      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Tech Stack

Layer Technology
Frontend Next.js 15, React 19, TypeScript, Tailwind CSS
UI Components shadcn/ui, Lucide Icons, Recharts
State Management Zustand, React Hooks
Real-time WebSocket, MQTT integration
Authentication NextAuth.js
Backend Fastify, TypeScript, Slack Bolt
AI Google Gemini 2.0 Flash
Databases Prometheus, Elasticsearch
Infrastructure Docker, Docker Compose

πŸ“– Documentation

Document Description
Getting Started Step-by-step setup guide for beginners
Architecture System architecture details
PRD Product Requirements Document
Design System UI components, colors, typography
API Specification REST API reference
Testing Strategy Testing frameworks and patterns
Instrumentation OpenTelemetry instrumentation recipes

πŸ§ͺ Testing

cd ui

# Run all tests
npm run test

# Unit tests with coverage
npm run test:coverage

# E2E tests
npm run test:e2e

# Lint & type check
npm run lint
npm run type-check

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“Š Roadmap

βœ… Completed

  • Unified dashboards with drag-drop, resize, sharing
  • Logs & Metrics explorers with Thanos global queries
  • AI Copilot with natural language queries
  • Automated Root Cause Analysis (ARCA)
  • Correlation rule engine & runbook automation
  • MQTT sensor integration
  • Service map with interactive topology

πŸ”„ In Progress

  • Multi-region deployment
  • Trace Explorer
  • AI Copilot v2 (Actions)

πŸ“‹ Planned

  • SLO Dashboard & anomaly detection
  • Custom plugin system
  • SSO/SAML & audit logging
  • Terraform provider

πŸ“„ License

This project is licensed under the Apache License 2.0 β€” see the LICENSE file for details.


πŸ™ Acknowledgments


Made with ❀️ by the Pulse Contributors

About

Pulse is a next-generation, AI-powered observability platform that unifies metrics, logs, traces, and incidents into a single pane of glass. Built for modern DevOps, SRE, and Platform Engineering teams, Pulse reduces Mean Time to Resolution (MTTR) by 75% through intelligent automation and an AI copilot

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors