KI-Agenten-Monitoring
Ihr Agent meldete Erfolg.
Erzeugt hat er nichts.
Geplante Agenten scheitern leise. Ein Lauf, der nie startete, eine Schleife, die einen Tool-Fehler verschluckt und mit 0 endet, ein Modellaufruf, der nie zurückkommt. SteadyCron prüft das Ergebnis statt des Exit-Codes — und meldet sich, wenn kein echtes Resultat mehr eintrifft.
Keine Karte. Ein Agenten-Monitor gratis — mit allen Regeln.
So sah der Lauf aus
02:00 geplanter Lauf gestartet
02:04 Prozess beendet mit 0
02:04 ✓ als erfolgreich markiert
# out/digest.md → 0 Bytes
# verbrauchte Tokens: 84.300
# jemand alarmiert? nein Das hätten Sie wissen müssen
02:00 /start Lauf begann
02:04 Report: items=0
02:04 Regel: empty_result → Fehler
→ #ops-slack nightly-digest fehlgeschlagen
letzter guter Lauf: gestern 02:03 Das Problem
Bei einem unbeaufsichtigten Agenten sieht Stille wie Erfolg aus
Agent-Frameworks sind darauf gebaut, weiterzumachen. Ein Tool-Aufruf scheitert, das Modell entschuldigt sich und macht weiter, die Schleife endet sauber — ohne dass etwas geschrieben wurde. Der Prozess endet mit 0, weil er endete, nicht weil Arbeit geschah.
Unbeaufsichtigt zu laufen war der ganze Zweck, also liest niemand die Ausgabe. Der Scheduler meldet keinen toten Zeitplan, der Anbieter kein erschöpftes Budget, und der Agent nicht seinen eigenen leeren Lauf.
Der entscheidende Unterschied
Ein Agent, der Entwarnung meldet und null Durchsatz hat, ist nicht gesund — er ist symptomfrei.
- Exit-Code 0 ohne Artefakt — der häufigste Agenten-Fehler, und der, den jeder Uptime-Check bestätigt.
- Der Lauf startete gar nicht: ein deaktivierter Workflow, eine schlafende Maschine, ein verworfenes Zeitplan-Event.
- Ein Modellaufruf ohne Timeout blockiert den Lauf für Stunden, und die nächsten Läufe stauen sich dahinter.
- Rate Limits, ein erschöpftes Budget oder ein rotierter API-Key beenden den heutigen Lauf früh — und den morgigen auch.
- Eine abgekündigte Modell-ID oder ein geändertes Antwortformat bricht das Parsing im Zeitplan des Anbieters, nicht in Ihrem.
Drei Fehler, die einen Alarm verdienen
Erkannt über eine Zeitplan-Erwartung, nicht über einen Stacktrace
Tracing-Werkzeuge zeichnen auf, was ein Lauf getan hat. Keines kann einen Lauf aufzeichnen, der nie stattfand — es gibt keinen Trace. Dafür braucht es etwas, das von außen und nach der Uhr zusieht.
Der Lauf fand nie statt
GitHub Actions deaktivierte den Workflow nach 60 Tagen ohne Repo-Aktivität. Drei Tage lang fiel es niemandem auf, denn ein Lauf, der nicht startet, erzeugt kein Log, keinen Fehler und keinen Trace.
Nur eine externe Zeitplan-Erwartung erkennt eine Abwesenheit. Das ist der Fehler, den Ihr Observability-Stack strukturell nicht sehen kann.
Er lief — und erzeugte nichts
Das Such-Tool scheiterte, das Modell entschuldigte sich, die Schleife endete. Vier Minuten Tokens verbraucht, null Zeilen geschrieben — gemeldet als Erfolg, weil der Prozess ohne Exception endete.
Ihr Lauf meldet die Zahl; die Empty-Result-Regel macht aus einer Null einen Fehler samt Alarm. Sie müssen die Prüfung nicht selbst einbauen.
Er hing an einem Modellaufruf
Viele SDKs kommen ohne Request-Timeout. Eine blockierte Verbindung und der Lauf endet nie. Der /start-Ping kam an, /success nie.
Die Hänger-Erkennung macht aus einem blockierten Aufruf einen Alarm zu einer Frist, die Sie setzen — statt eines Laufs, der still nie endet.
Einbauen
Fünf Zeilen, wo auch immer Ihr Agent läuft
Pingen Sie beim Start, und pingen Sie Erfolg erst, nachdem Sie geprüft haben, dass die Ausgabe existiert. Diese zweite Hälfte ist der ganze Trick — sie macht aus einem leeren Lauf einen Alarm.
# Anthropic runs the schedule — but a routine that gets skipped, or
# finishes with nothing, tells nobody. Connect SteadyCron's MCP server
# and the agent reports its own runs with a tool call.
MCP server: https://api.steadycron.com/mcp
Auth: Bearer <your SteadyCron API key>
# Then, in the routine's prompt:
Call report_run_start with jobKey "nightly-digest" before you begin.
This is required — report_run is refused if no run is open.
Do the work. Write the result to out/digest.md.
When you are done, count what you actually produced and call report_run
with that count. If you produced nothing, report 0 — do not omit the
field, and do not round up.
report_run { jobKey: "nightly-digest", itemsProduced: 42,
model: "claude-opus-5", tokensIn: 18400, tokensOut: 2100 }
# SteadyCron turns a 0 into a failed run and an alert. No curl to get
# wrong, and a tool call is far harder for the model to skip than a
# sentence in the prompt. Grundlagen zu Pings, Kulanzzeit und Hänger-Erkennung in Heartbeat-Monitoring. Die ausführliche Anleitung je Plattform gibt es bislang nur auf Englisch.
Abgrenzung
Eine enge Frage, zuverlässig beantwortet
SteadyCron ist kein LLM-Tracing-Werkzeug und gibt sich nicht als eines aus. Es beobachtet den Lauf, nicht die Argumentation.
Was es tut
- Alarmiert, wenn ein geplanter Lauf nie stattfand — der eine Fehler, den ein Trace nicht festhalten kann.
- Alarmiert, wenn ein Lauf endet, ohne etwas erzeugt zu haben. Wir prüfen die Zahl, die Ihr Lauf meldet — Sie müssen das nicht selbst implementieren.
- Alarmiert, wenn ein Lauf mehr kostet als Ihre Obergrenze — pro Lauf oder über den Monat.
- Alarmiert, wenn Schritte oder Tool-Aufrufe auf eine Schleife hindeuten.
- Alarmiert, wenn ein Lauf startet und nie endet, gegen eine von Ihnen gesetzte Maximaldauer.
- Verfolgt die Kosten je Agent, mit Monatssumme pro Monitor.
- Formt das Rauschen — Kulanzzeiten, Schwellen für Folgefehler, Ruhezeiten, Auto-Resolve.
Was es nicht tut
- Span-Traces jedes Modellaufrufs und jeder Tool-Nutzung.
- Prompt-Verwaltung, Datensätze oder LLM-as-Judge-Bewertung.
- Antwortqualität bewerten oder Halluzinationen erkennen.
- Erklären, warum das Modell eine bestimmte Entscheidung traf.
Dafür nehmen Sie ein Tracing-Werkzeug — Langfuse, LangSmith und Verwandte machen das gut. Legen Sie die Trace-URL in die Ping-Nutzlast, dann verlinkt Ihr Alarm direkt auf den Lauf. SteadyCron beantwortet die Fragen, die jene nicht können: lief er, endete er, kam etwas heraus — und was hat er gekostet?
Wo die Daten liegen
Agentenläufe sind die sensibelsten Logs, die Sie haben
Ein Backup-Skript loggt „fertig“. Ein Agentenlauf trägt Prompts, abgerufene Dokumente, Tool-Argumente und alle Kundendaten, die durch das Kontextfenster gingen — und Sie schicken gerade eine Zusammenfassung davon an einen Monitoring-Anbieter.
SteadyCron läuft auf Hetzner-Servern in Deutschland, betrieben von einer deutschen Rechtsperson, unter einem Self-Service-AVV, den Sie ohne Vertriebsgespräch lesen und unterschreiben können. Und Sie entscheiden, was in den Ping kommt: hängen Sie eine Zeilenzahl an, nicht die Zeilen.
- Hetzner, Deutschland
- Deutsche Rechtsperson
- Self-Service-AVV
- Öffentliche Subprozessor-Liste
Eine Plattform für jeden geplanten Job
HTTP-Ausführung
Endpunkte planmäßig aufrufen — Wiederholungen, Timeouts und vollständige Laufprotokolle.
Heartbeat-Monitoring
Überwachen Sie Jobs, die Sie überall betreiben — Alarm, sobald einer verstummt.
KI-Agenten-Monitoring
Sie sind hierErfahren Sie, wenn ein geplanter Agent einen Lauf überspringt — oder leer endet.
Cron as Code
Jeden Job, Monitor und Alert in YAML oder Terraform definieren.
Richten Sie einen Monitor auf den heutigen Lauf
Heartbeat-Monitor anlegen, den Zeitplan setzen, den Ihr Agent halten soll, und den Ping ergänzen. Kommt das Ergebnis morgen nicht, wissen Sie es, bevor jemand fragt.
- Kostenlos, keine Karte
- 1 Agenten-Monitor gratis
- EU-gehostet
- Bezahlt ab 10 €/Monat