~/docs/getting-started
Erste Schritte
bugzero ist ein KI-Agent, der Bugs behebt, samt Kontrollzentrum, um ihn zu steuern. Wenn etwas kaputtgeht – gemeldet von Sentry, PostHog oder deiner eigenen App über einen Webhook –, läuft der Agent in deinen eigenen GitHub Actions und öffnet einen Pull Request mit einem Fix; du steuerst alles von einem Dashboard aus. Dein Code verlässt nie deine Infrastruktur. Hier findest du alles, was du einrichten musst, und warum jeder Schritt wichtig ist.
Wie aus einem Fehler ein Pull Request wird.
7 Schritte bis zu deinem ersten Fix.
Konto erstellen
pflichtRegistriere dich mit deiner E-Mail-Adresse und einem Passwort. Du bekommst einen Team-Workspace im Free-Plan – 5 Fixes pro Monat, keine Karte nötig.
GitHub verbinden
pflichtInstalliere auf der Seite Integrationen die GitHub App von bugzero, wähle das Konto oder die Organisation und dann die Repositories aus, in denen bugzero Fixes starten darf.
Fehlerquelle verbinden
pflichtVerbinde unter Integrationen → Fehlerquellen den Error-Tracker, den du schon nutzt, und wähle die Projekte, die bugzero überwachen soll – oder sende Fehler aus deiner eigenen App. Du kannst mehr als eine Quelle nutzen.
- Sentry – verbinde deine Organisation per OAuth.
- PostHog – wähle deine Region und füge einen persönlichen API-Schlüssel mit den Scopes
project:read,hog_function:writeundquery:readein. - Eigener Webhook – lege für jede App einen Endpoint an und sende Fehler aus jeder Sprache und jedem Tool an seine geheime URL; siehe Eigener Webhook weiter unten.
Jedes Projekt mit einem Repository verknüpfen
pflichtWähle für jedes überwachte Projekt das GitHub-Repository, das der Agent fixen soll. Das legst du direkt neben dem jeweiligen Projekt auf der Seite Integrationen fest. Ein Endpoint für einen eigenen Webhook bekommt sein Repository schon beim Anlegen.
bugzero-Workflow hinzufügen
pflichtKlicke unter Integrationen → Runner-Einrichtung neben jedem Repository auf Workflow hinzufügen. GitHub öffnet sich mit der vorausgefüllten Datei .github/workflows/bugzero.yml – prüfe sie und committe sie in deinen Standard-Branch. Klicke dann auf Erneut prüfen.
KI-Schlüssel als Actions-Secret hinterlegen
pflichtÖffne in jedem verbundenen Repository Settings → Secrets and variables → Actions und lege ein neues Secret namens ANTHROPIC_API_KEY (oder OPENAI_API_KEY) mit deinem eigenen KI-Schlüssel an.
Actions Pull Requests öffnen lassen
pflichtÖffne in jedem verbundenen Repository Settings → Actions → General, scrolle zu Workflow permissions, hake Allow GitHub Actions to create and approve pull requests an und speichere. Ist die Option ausgegraut, muss ein Inhaber der Organisation sie zuerst unter den eigenen Settings → Actions → General der Organisation erlauben.
pull-requests: write im Workflow selbst überschreibt das nicht. Ohne sie pusht der Agent seinen Fix trotzdem in einen Branch, aber GitHub verweigert das Öffnen des Pull Requests – du bekämst einen Branch statt eines PRs.Optional, aber empfohlen.
Auf die richtigen Umgebungen beschränken
optionalHake bei jeder Projekt-Verknüpfung die Umgebungen an, auf die reagiert werden soll – zum Beispiel nur production. Lässt du alle leer, wird jede Umgebung überwacht. Endpoints für eigene Webhooks haben denselben optionalen Filter.
Agent konfigurieren
optionalWähle auf der Seite Agent Modell und Aufwand (die neuesten Modelle von Claude oder GPT), schreib Anweisungen mit den Konventionen deines Teams und lege ein tägliches Sicherheitslimit fest. Jedes Mal, wenn du Anweisungen veröffentlichst, entsteht eine neue Version – vergleiche Versionen, sieh, wie jede abschneidet, und setze mit einem Klick zurück.
Auf Pro upgraden, wenn du so weit bist
optionalFree enthält 5 Fixes pro Monat. Wenn du mehr brauchst, upgrade unter Abrechnung auf Pro – 9 $/Monat für unbegrenzte Fixes und verwalte oder kündige dein Abo über das Kundenportal.
Deinen ersten Fix erhalten
optionalWenn ein neuer Fehler in einem überwachten Projekt und einer überwachten Umgebung auftritt, startet bugzero einen Lauf, der mit einem Pull Request endet. Verfolge den Fortschritt auf der Seite Läufe, öffne dann den PR, lies den Diff und die Zusammenfassung der Ursache und merge, wenn alles passt.
Sende Fehler von überall.
Fehler, die dein Tracker nicht erfasst – aus einem Worker, einem Cronjob, einem Skript – oder gar kein Error-Tracker? Schick sie selbst an bugzero: ein HTTP-Request aus jeder Sprache oder jedem Tool, kein SDK.
Lege unter Integrationen → Fehlerquellen für jede App einen Endpoint vom Typ Eigener Webhook an: einen Namen, das Repository, das der Agent fixt, seinen Basis-Branch und optional die Umgebungen, auf die reagiert werden soll. Jeder Endpoint bekommt seine eigene geheime URL.
endpoint anlegen →Authentifizierung
Der Token am Ende der URL identifiziert den Endpoint. Ruf die URL so auf, wie sie ist, oder sende den Token stattdessen im Header Authorization an die feste URL – besser, wenn deine Tools URLs loggen.
# token in der URL POST https://bugzero.dev/api/webhooks/custom/bzc_… # oder: token im header POST https://bugzero.dev/api/webhooks/custom Authorization: Bearer bzc_…
Payload
Sende ein JSON-Objekt mit Content-Type: application/json, bis zu 256 KB. Nur message ist Pflicht.
- messagestring · pflicht
- Die Fehlermeldung.
- typestring
- Die Fehlerklasse, z. B.
TypeError. Standard:Error. - titlestring
- Ersetzt den Standardtitel
type: message. - stacktracestring | array
- Ein String oder ein Array aus Zeilen oder Frames
{ file, line, column, function }, der jüngste Aufruf zuerst. - environmentstring
- Wird mit dem Umgebungsfilter des Endpoints abgeglichen. Events ohne Umgebung kommen immer durch.
- fingerprintstring
- Gruppiert Events desselben Fehlers (siehe „Ein Fix pro Fehler“ unten). Standard: abgeleitet aus dem Typ, der Meldung und dem obersten Stack-Frame.
- urlstring
- Ein Link zum Fehler in deinem System (http oder https), angezeigt beim Lauf und im Pull Request.
- contextobject
- Beliebige zusätzliche Details für den Agenten (Request, User, Tags…), als JSON gesendet und auf 4.000 Zeichen gekürzt.
- testboolean
- Ein Probelauf: meldet, was passieren würde, und startet nichts.
Unbekannte Felder werden ignoriert, null gilt als nicht vorhanden und langer Text wird gekürzt.
Beispiele
Mit curl, aus einem Terminal oder einem Skript:
curl -X POST "$BUGZERO_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{
"message": "order.customer is undefined",
"type": "TypeError",
"environment": "production",
"stacktrace": [
{ "file": "src/orders/receipt.ts", "line": 42, "function": "sendReceipt" },
{ "file": "src/orders/checkout.ts", "line": 88, "function": "completeOrder" }
],
"url": "https://logs.example.com/errors/8812",
"context": { "orderId": "ord_8812", "plan": "pro" }
}'Aus Node.js, zum Beispiel in einem catch-Block:
export async function reportError(error, context = {}) {
await fetch(process.env.BUGZERO_WEBHOOK_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
type: error.name,
message: error.message || String(error),
stacktrace: error.stack,
environment: process.env.NODE_ENV,
context,
}),
signal: AbortSignal.timeout(5000),
}).catch(() => {});
}
try {
await completeOrder(order);
} catch (error) {
await reportError(error, { orderId: order.id });
throw error;
}Ein Fix pro Fehler
Der Agent startet einmal pro Fehler: Nach dem ersten Event werden Events mit demselben fingerprint am selben Endpoint übersprungen, auch wenn dieser Lauf fehlgeschlagen ist. Ist er fehlgeschlagen, korrigiere die Einrichtung (etwa einen fehlenden Workflow oder KI-Schlüssel) und klicke auf der Seite des Laufs auf Erneut versuchen.
Standardmäßig werden Zahlen und IDs in der Meldung ignoriert, sodass „User 123 not found“ und „User 456 not found“ derselbe Fehler sind. Du willst einen neuen Fix, wenn ein Fehler in einem späteren Release wieder auftaucht? Sende einen fingerprint, der das Release enthält, z. B. "send-receipt@2.4.1". Er ersetzt den Standardwert, also halte den Rest stabil – keine IDs oder Zeitstempel.
Testen
Füge "test": true hinzu, um die URL und deinen Payload zu prüfen, ohne etwas zu starten. Die Antwort sagt dir, ob ein echtes Event den Agenten starten würde – und falls nicht, warum:
curl -X POST "$BUGZERO_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{"message": "order.customer is undefined", "test": true}'{
"ok": true,
"outcome": "test",
"wouldStart": true,
"fingerprint": "5d0c41a7e2b9f8c3a1d6e4b2c9f07a18",
"title": "Error: order.customer is undefined"
}Antworten
Jede Antwort ist JSON. Wiederhole nur bei einem 5xx: Derselbe Fehler startet den Agenten nie zweimal, Wiederholen ist also sicher.
- 202 outcome: "started"
- Der Agent wurde gestartet. Der Body enthält
runIdundstatusdes Laufs. - 200 outcome: "skipped"
- Nichts gestartet;
reasonsagt, warum (siehe unten). - 200 outcome: "test"
- Ein Probelauf; nichts gestartet (siehe „Testen“).
- 400 error: "invalid_json"
- Der Body ist kein gültiges JSON.
- 400 error: "invalid_payload"
- Ein Feld fehlt oder hat den falschen Typ;
issueslistet jedes Problem mit seinem Pfad auf. - 401 error: "unauthorized"
- Unbekannter Token: Prüfe die URL – oder der Endpoint hat eine neue URL bekommen oder wurde gelöscht.
- 413 error: "payload_too_large"
- Der Body ist größer als 256 KB.
- 5xx
- Bei uns ist etwas schiefgelaufen. Wiederholen ist sicher.
- reason: "duplicate"
- Dieser Fehler wurde bereits behandelt;
runIdist sein Lauf. - reason: "environment"
- Die Umgebung des Events ist nicht im Filter des Endpoints.
- reason: "repo_not_connected"
- Das Repository des Endpoints ist in der GitHub-Karte nicht ausgewählt.
- reason: "limit"
- Das monatliche Free-Limit oder das tägliche Sicherheitslimit wurde erreicht;
codeistfree_limitoderdaily_cap.
Halte den Token geheim
- Sende Events nur von deinem Server, nie aus einem Browser – dort könnte jeder den Token auslesen.
- Wenn deine Proxys oder Logs URLs aufzeichnen, sende den Token stattdessen im Header
Authorization. - Wenn die URL nach außen gelangt, erzeuge eine neue für den Endpoint; die alte funktioniert sofort nicht mehr.
- Alles, was du sendest, wird mit dem Lauf gespeichert und dem KI-Agenten gezeigt – lass also Passwörter, Schlüssel und personenbezogene Daten weg.
Alles eingerichtet, aber keine Pull Requests?
Fast immer ist es einer dieser Punkte:
- Noch keine Verknüpfung Projekt → Repo (Schritt 04) – mit Abstand die häufigste Ursache.
- Der bugzero-Workflow ist nicht im Standard-Branch, oder das Secret ANTHROPIC_API_KEY / OPENAI_API_KEY fehlt (Schritte 05 und 06). Bei fehlgeschlagenen Läufen steht der Grund auf der Seite des Laufs.
- Der Fix wurde in einen Branch gepusht, aber es hat sich kein Pull Request geöffnet – GitHub erlaubt Actions nicht, welche zu erstellen (Schritt 07).
- Die Umgebung des Fehlers ist nicht in deiner Liste überwachter Umgebungen (Schritt 08).
- Es ist noch kein neuer Fehler aufgetreten – bugzero reagiert auf neue Issues, nicht auf alte.
- Du hast die 5 Fixes von Free in diesem Monat aufgebraucht, oder das tägliche Sicherheitslimit wurde erreicht – sieh im Dashboard nach.
- Das Repository ist in der GitHub-Karte nicht ausgewählt (Schritt 02).
- Du sendest Fehler an einen eigenen Webhook? Seine JSON-Antwort sagt dir, warum ein Event übersprungen wurde; füge
"test": truehinzu, um zu prüfen, ohne etwas zu starten.
Bereit für die Einrichtung?
Erstelle dein Konto und verbinde dein erstes Repository – Free enthält 5 Fixes pro Monat.