Webhooks
Eiryx receives webhooks at POST /api/webhooks/ingest/{type}?token={user_id}. The payload is parsed, normalized into a standard ErrorEvent, classified by AI, and optionally triggers a bugfix task.
Processing Pipeline
Incoming HTTP POST → Provider Parser → ErrorEvent → AI Classification → Threshold Check → Task Creation- Provider Parser — Extracts structured data from the raw JSON payload
- Normalization — All events become an
ErrorEventwith: source, severity, title, stack_trace, environment, event_id, url, tags - AI Classification — Gemini Flash classifies severity (for generic payloads where severity isn’t explicit)
- Threshold Check — Compares against user’s configured threshold (e.g., only
errorand above) - Task Creation — If threshold is met, creates a bugfix task with the error context
ErrorEvent Schema
| Field | Type | Description |
|---|---|---|
source | string | sentry, generic, manual |
severity | string | critical, error, warning, info |
title | string | Error message / title |
stack_trace | string | Full stack trace if available |
repo_url | string | Mapped to repository via integration config |
environment | string | production, staging, development |
timestamp | datetime | When the error occurred |
event_id | string | Unique ID in the source provider |
url | string | Link to the error in the source provider |
tags | object | Additional metadata |
Sentry Payload
Eiryx handles both Issue Alerts (error events) and Metric Alerts (threshold breaches).
Key fields parsed:
data.issue.title→ error titledata.issue.level→ severity mapping (fatal→critical,error→error,warning→warning)data.issue.exception.values[].stacktrace.frames→ reconstructed stack tracedata.issue.environment→ environment filterdata.issue.web_url→ link back to Sentry
Generic JSON Payload
For any tool that sends JSON, Eiryx auto-detects fields:
| Eiryx field | Looks for (in order) |
|---|---|
| Title | error, message, msg, title, exception |
| Stack trace | stack_trace, stacktrace, traceback, stack |
| Severity | severity, level (default: error) |
| Environment | environment, env (default: production) |
Adding a New Provider
Eiryx uses a parser registry pattern. Each provider is a Python function decorated with @register_parser("provider_name") that receives the raw payload dict and returns an ErrorEvent or None.
New parsers for Datadog, PagerDuty, and others will be added in future releases.