Part of the FluidifyAI open-source suite
Unlimited alert noise reduction and incidents, unlimited on-call schedules, and unlimited AI postmortems and handoff digests with 1-click Import from Grafana Oncall/Pagerduty
- AI incident summaries, Post-mortem, Handoffs Summaries with Slack/Teams synch (BYO key β OpenAI/Anthropic/Ollama)
| Category | Tools |
|---|---|
| Alert ingestion | |
| Prometheus Alertmanager Β· Grafana Β· AWS CloudWatch Β· Generic webhook | |
| Chat | |
| Slack Β· Microsoft Teams Β· Telegram | |
| AI | |
| OpenAI Β· Anthropic Β· Ollama (BYO key β local or cloud) | |
| Auth | |
| SAML 2.0 β Okta Β· Azure AD Β· Google Workspace Β· any compliant IdP | |
| Migration | |
| Grafana OnCall Β· PagerDuty | |
| Deploy | |
| Docker Compose Β· Kubernetes Helm Β· bare metal |
| Regen | PagerDuty | incident.io | Grafana OnCall | |
|---|---|---|---|---|
| Price | Free | $21β50/user/mo | $30+/user/mo | Archived |
| Self-hosted | β | β | β | β (archived) |
| Open source | AGPLv3 | β | β | Apache 2.0 |
| SSO | β Free | π° Paid | π° Paid | β Free |
| BYO AI | β | β | β | β |
| Agent-native | β | β | β | β |
| Alert + incident + on-call in one | β | π°π°π° Paid | π°π°π° Paid | π°π°π° Paid |
| 1-Click imports | β | β | β | β |
PagerDutyβ schedules, escalation policies, EU region supportedGrafana OnCallβ drop-in replacement for the archived OSS project
Quickest start β Docker Compose:
git clone https://github.com/FluidifyAI/Regen.git
cd Regen
cp .env.example .env # add your Slack token, AI key, etc.
make start
Open ** http://localhost:8080** β create your admin account on first load.
For detailed guides, see:
Full installation guideβ prerequisites, env vars, health checksDocker Compose self-hostingβ production setupKubernetes / Helmβ HA deploy with Helm chartEnvironment variablesβ all config options
Don't wanna host and manage yourself?
[Get in touch]and we'd do it for you.
| Scenario | Result |
|---|---|
| Webhook ingestion p99 | < 10 ms (target: < 200 ms) |
| Webhook sustained p50 / p95 | 1.55 ms / 2.82 ms |
| API reads p95 (list / detail) | 4.42 ms / 2.83 ms |
| Peak throughput (burst test) | 3,917 RPS β 0 Γ 5xx |
| PostgreSQL failover RTO | 11 s (Patroni + HAProxy, target: < 60 s) |
| Redis failover RTO | 5 s (Sentinel 3-node quorum) |
| In-flight requests lost on rolling deploy | 0 |
Production numbers will be higher β these were captured on a single-machine local HA stack. Reproduce yourself:
make load-test
andmake chaos-db
. Full methodology in[docs/RELIABILITY.md].
Zero-downtime deploysβ rolling restarts drain in-flight requests before pod shutdown (SIGTERM β 30 s drain β exit)** 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.Redis Sentinelβ 3-node quorum detects primary loss; workers reconnect to new master automatically** Kubernetes-native**β HPA, health-gated rolling deploys, resource limits out of the box** Webhook flood protection**β rate limiter returns 429 before the DB sees load spikes; validated at 3,917 RPS with zero OOM events** Full observability**β/metrics
(Prometheus) + pre-built Grafana dashboard indeploy/grafana/
curl -X POST http://localhost:8080/api/v1/webhooks/prometheus \
-H "Content-Type: application/json" \
-d '{
"receiver": "fluidify-regen",
"status": "firing",
"alerts": [{
"status": "firing",
"labels": {"alertname": "TestAlert", "severity": "critical"},
"annotations": {"summary": "Test alert from curl"},
"startsAt": "2024-01-01T00:00:00Z"
}]
}'
An incident is created automatically. If Slack is configured, a dedicated channel appears within seconds.
Connecting Slack:Regen uses Slack's HTTP Events API (signedPOST
to/api/v1/slack/{events,interactions,commands}
) β not Socket Mode. Local dev needs a public tunnel (ngrok). Full setup, including the three Request URLs and troubleshooting, is in[docs/getting-started/connecting-slack.md].
Authentication: bcrypt (cost 12), timing-safe comparison, 5-attempt account lockout, HTTP-only SameSite=Strict session cookies** No SQL injection surface**: All database access uses GORM parameterized queries β no raw string interpolation** Webhook verification**: Slack (HMAC-SHA256 + replay protection), Teams (RSA/OIDC), CloudWatch (RSA + SSRF-safe cert validation)** Rate limiting**: Redis Lua script enforcing three tiers β 10/min on auth endpoints, 120/min unauthenticated, 600/min authenticated** Security headers**: CSP, HSTS (2 years), X-Frame-Options, X-Content-Type-Options, Permissions-Policy on every response** Container hardening**: non-root UID 1001, read-only filesystem, all Linux capabilities dropped** CORS**: explicit allowlist viaCORS_ALLOWED_ORIGINS
; dev-only fallback to localhostFrontend: nodangerouslySetInnerHTML
, no secrets in bundle, session token never accessible to JavaScript
Review the ** Production Security Checklist** β TLS, PostgreSQL password, Redis auth, and CORS origins for prerequisiste checklist.
Full security architecture: SECURITY.md
Don't wanna manage uptime and security?
[Get in touch]and we'd do it for you.
We love contributions big and small. This is how you join us:
docker-compose up -d db redis
cd backend && go run ./cmd/regen/... serve
cd frontend && npm install && npm run dev
Read for raising a PR:
-
Read the setup & workflow in CONTRIBUTING.md - Discover all developer commands with
make help -
Have a big idea? Letβs discuss it first
If you find Regen useful, consider supporting us by:
- Star this repo - It helps others discover Regen Guide us- Every issue you raise goes into building
AGPLv3 β free forever, including SSO.
Built by FluidifyAI Β· your incident data belongs to you