{"id":49793183,"url":"https://github.com/FluidifyAI/Regen","last_synced_at":"2026-05-28T21:00:52.359Z","repository":{"id":350666541,"uuid":"1152301358","full_name":"FluidifyAI/Regen","owner":"FluidifyAI","description":"Open-source incident management Alerts, on-call, AI post-mortems. Self-hosted alternative to PagerDuty \u0026   incident.io. Works with Prometheus, Grafana, Datadog, Slack, and Teams. Free forever, BYO-AI.","archived":false,"fork":false,"pushed_at":"2026-05-23T19:10:22.000Z","size":42829,"stargazers_count":38,"open_issues_count":14,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-05-23T20:22:09.834Z","etag":null,"topics":["ai","alerting","devops","grafana","incident-management","observability","on-call","open-source","pagerduty-alternative","prometheus","self-hosted","slack","sre"],"latest_commit_sha":null,"homepage":"https://fluidify.ai","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FluidifyAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","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":"2026-02-07T17:13:23.000Z","updated_at":"2026-05-23T19:09:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/FluidifyAI/Regen","commit_stats":null,"previous_names":["fluidifyai/regen"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/FluidifyAI/Regen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FluidifyAI%2FRegen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FluidifyAI%2FRegen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FluidifyAI%2FRegen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FluidifyAI%2FRegen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FluidifyAI","download_url":"https://codeload.github.com/FluidifyAI/Regen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FluidifyAI%2FRegen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33626142,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ai","alerting","devops","grafana","incident-management","observability","on-call","open-source","pagerduty-alternative","prometheus","self-hosted","slack","sre"],"created_at":"2026-05-12T07:00:31.052Z","updated_at":"2026-05-28T21:00:52.353Z","avatar_url":"https://github.com/FluidifyAI.png","language":"Go","funding_links":[],"categories":["Incident Management / Incident Response / IT Alerting / On-Call"],"sub_categories":["Container Orchestration"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\".github/assets/logo-light.svg\"\u003e\n    \u003cimg src=\".github/assets/logo-dark.svg\" alt=\"Fluidify\" width=\"520\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Part of the \u003ca href=\"https://fluidify.ai\"\u003eFluidifyAI\u003c/a\u003e open-source suite\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/FluidifyAI/Regen/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/FluidifyAI/Regen/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/FluidifyAI/Regen/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/FluidifyAI/Regen\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/b6PSdhzDa\"\u003e\u003cimg src=\"https://img.shields.io/discord/1487668241718579342?label=discord\u0026logo=discord\u0026logoColor=white\u0026color=5865F2\" alt=\"Discord\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-AGPLv3-blue.svg\" alt=\"License: AGPLv3\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/FluidifyAI/Regen/pkgs/container/regen\"\u003e\u003cimg src=\"https://img.shields.io/badge/docker-ready-0ea5e9\" alt=\"Docker\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/FluidifyAI/Regen/backend\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/FluidifyAI/Regen/backend\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003e Unlimited alert noise reduction and incidents, unlimited on-call schedules, and unlimited AI postmortems and handoff digests.\n\n\u003e The **one-stop alternative to PagerDuty + incident.io**, with **1-click import from Grafana OnCall/PagerDuty**.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/assets/demo.gif\" alt=\"Fluidify Regen — incident kanban and Slack collaboration\" width=\"960\"\u003e\n\u003c/p\u003e\n\n---\n\n## Features\n\n- Incident lifecycle with immutable timeline\n- On-call rotations, layers, overrides\n- Escalation policies with multi-step timeouts\n- Alert ingestion — Prometheus, Grafana, CloudWatch, generic webhook\n- Slack integration — channels, bot commands, timeline sync\n- Microsoft Teams integration — Adaptive Cards, bot commands\n- 1-click migration from Grafana OnCall/PagerDuty\n- AI incident summaries + post-mortem drafts (BYO key — OpenAI/Anthropic/Ollama)\n- AI Postmortems, Handoffs, Summaries sych with Slack/Teams\n- SSO / SAML — Okta, Azure AD, Google Workspace — **free, always**\n- Docker Compose + Kubernetes Helm chart\n- PostgreSQL HA + Redis Sentinel support\n- No limits on incidents/AI features\n\n---\n\n## Integrations\n\n| Category | Tools |\n|---|---|\n| **Alert ingestion** | Prometheus Alertmanager · Grafana · AWS CloudWatch · Generic webhook |\n| **Chat** | Slack · Microsoft Teams · Telegram |\n| **AI** | OpenAI · Anthropic · Ollama (BYO key — local or cloud) |\n| **Auth** | SAML 2.0 — Okta · Azure AD · Google Workspace · any compliant IdP |\n| **Migration** | Grafana OnCall · PagerDuty |\n| **Deploy** | Docker Compose · Kubernetes Helm · bare metal |\n\n---\n\n## Highlights of AI Capabilities\n\n### Incident Summarization\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/assets/ai-summary-ss.png\" alt=\"Fluidify Regen — Create AI assisted summaries for efficient context transfer across engineers\" width=\"960\"\u003e\n\u003c/p\u003e\n\n### Historical Pattern Matching\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/assets/pattern-matching-ss.png\" alt=\"Fluidify Regen — Pattern matching and learning with historical incidents\" width=\"960\"\u003e\n\u003c/p\u003e\n\n### Post-Mortem Agent\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/assets/pm-ss.png\" alt=\"Fluidify Regen — Editable AI Postmortems for Incidents\" width=\"960\"\u003e\n\u003c/p\u003e\n\n### Handoff Digest\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/assets/handoff-ss.png\" alt=\"Fluidify Regen — Create AI Assisted Handoff Digests for Incident handovers, briefings, status changes, pending actions, sycnhed with Slack/Teams\" width=\"960\"\u003e\n\u003c/p\u003e\n\n---\n\n## Fluidify Regen Vs Pagerduty/incident.io/Grafana Oncall\n\n| | Regen | PagerDuty | incident.io | Grafana OnCall |\n|---|---|---|---|---|\n| Price | Free  | $21–50/user/mo | $30+/user/mo | Archived |\n| Self-hosted | ✅ | ❌ | ❌ | ✅ (archived) |\n| Open source | AGPLv3 | ❌ | ❌ | Apache 2.0 |\n| SSO | ✅ Free | 💰 Paid | 💰 Paid | ✅ Free |\n| BYO AI | ✅ | ❌ | ❌ | ❌ |\n| Agent-native | ✅ | ❌ | ❌ | ❌ |\n| Alert + incident + on-call in one | ✅ | 💰💰💰 Paid | 💰💰💰 Paid | 💰💰💰 Paid |\n| 1-Click imports | ✅ | ❌ | ❌ | ❌ |\n\n---\n\n\u003e ## Migrate in 1 click from\n\u003e\n\u003e - [PagerDuty](docs/migrations/pagerduty.md)\n\u003e - [Grafana Oncall](docs/migrations/grafana-oncall.md)\n\n---\n\n## Installation\n\n```bash\ndocker pull ghcr.io/fluidifyai/regen:latest\n```\n\nFor detailed installation guides, see:\n- [Docker](install-docker.md)\n- [Docker Compose](install-docker-compose.md)\n- [Kubernetes](install-kubernetes.md)\n\n---\n\n## Built for production\n\n### Benchmark results (HA stack · Apple M2 / Colima · 2026-03-31)\n\n| Scenario | Result |\n|---|---|\n| Webhook ingestion p99 | **\u003c 10 ms** (target: \u003c 200 ms) |\n| Webhook sustained p50 / p95 | **1.55 ms / 2.82 ms** |\n| API reads p95 (list / detail) | **4.42 ms / 2.83 ms** |\n| Peak throughput (burst test) | **3,917 RPS — 0 × 5xx** |\n| PostgreSQL failover RTO | **11 s** (Patroni + HAProxy, target: \u003c 60 s) |\n| Redis failover RTO | **5 s** (Sentinel 3-node quorum) |\n| In-flight requests lost on rolling deploy | **0** |\n\n\u003e Production numbers will be higher — these were captured on a single-machine local HA stack.\n\u003e Reproduce yourself: `make load-test` and `make chaos-db`. Full methodology in [docs/RELIABILITY.md](docs/RELIABILITY.md).\n\n### How it stays up\n\n- **Zero-downtime deploys** — rolling restarts drain in-flight requests before pod shutdown (SIGTERM → 30 s drain → exit)\n- **PostgreSQL HA** — Patroni manages automatic primary election; HAProxy re-routes to the new primary within one health-check interval (3 s). No app restart, no config change.\n- **Redis Sentinel** — 3-node quorum detects primary loss; workers reconnect to new master automatically\n- **Kubernetes-native** — HPA, health-gated rolling deploys, resource limits out of the box\n- **Webhook flood protection** — rate limiter returns 429 before the DB sees load spikes; validated at 3,917 RPS with zero OOM events\n- **Full observability** — `/metrics` (Prometheus) + pre-built Grafana dashboard in `deploy/grafana/`\n\n### Send a test alert\n\n```bash\ncurl -X POST http://localhost:8080/api/v1/webhooks/prometheus \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"receiver\": \"fluidify-regen\",\n    \"status\": \"firing\",\n    \"alerts\": [{\n      \"status\": \"firing\",\n      \"labels\": {\"alertname\": \"TestAlert\", \"severity\": \"critical\"},\n      \"annotations\": {\"summary\": \"Test alert from curl\"},\n      \"startsAt\": \"2024-01-01T00:00:00Z\"\n    }]\n  }'\n```\n\nAn incident is created automatically. If Slack is configured, a dedicated channel appears within seconds.\n\n---\n\n## Security\n- **Authentication**: bcrypt (cost 12), timing-safe comparison, 5-attempt account lockout, HTTP-only SameSite=Strict session cookies\n- **No SQL injection surface**: All database access uses GORM parameterized queries — no raw string interpolation\n- **Webhook verification**: Slack (HMAC-SHA256 + replay protection), Teams (RSA/OIDC), CloudWatch (RSA + SSRF-safe cert validation)\n- **Rate limiting**: Redis Lua script enforcing three tiers — 10/min on auth endpoints, 120/min unauthenticated, 600/min authenticated\n- **Security headers**: CSP, HSTS (2 years), X-Frame-Options, X-Content-Type-Options, Permissions-Policy on every response\n- **Container hardening**: non-root UID 1001, read-only filesystem, all Linux capabilities dropped\n- **CORS**: explicit allowlist via `CORS_ALLOWED_ORIGINS`; dev-only fallback to localhost\n- **Frontend**: no `dangerouslySetInnerHTML`, no secrets in bundle, session token never accessible to JavaScript\n\nReview the **[Production Security Checklist](SECURITY.md#11-production-security-checklist)** — TLS, PostgreSQL password, Redis auth, and CORS origins for prerequisiste checklist.\n\nFull security architecture: [SECURITY.md](SECURITY.md)\n\n---\n\n## Contributing\n\nWe love contributions big and small. This is how you join us:\n\n```bash\n# Start backend + dependencies\ndocker-compose up -d db redis\n\n# Run backend with hot reload\ncd backend \u0026\u0026 go run ./cmd/regen/... serve\n\n# Run frontend with hot reload\ncd frontend \u0026\u0026 npm install \u0026\u0026 npm run dev\n```\n\nRead for raising a PR:\n- Read the setup \u0026 workflow in [CONTRIBUTING.md](CONTRIBUTING.md)\n- Discover all developer commands with `make help`\n- Have a big idea? [Let’s discuss it first](https://github.com/FluidifyAI/Regen/discussions)\n\n---\n\n## Support us\nIf you find Regen useful, consider supporting us by:\n- Star this repo - It helps others discover Regen\n- [Guide us](https://github.com/FluidifyAI/Regen/issues/new) - Every issue you raise goes into building\n\n---\n\n## License\n\n[AGPLv3](LICENSE) — free forever, including SSO.\n\n---\n\n\u003cp align=\"center\"\u003eBuilt by \u003ca href=\"https://fluidify.ai\"\u003eFluidifyAI\u003c/a\u003e · your incident data belongs to you\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFluidifyAI%2FRegen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFluidifyAI%2FRegen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFluidifyAI%2FRegen/lists"}