Nothing recorded yet. Raise an alert, or load a thread by id.
Nothing recorded yet. Raise an alert, or load a thread by id.
Production models fail quietly. Driftbell watches for the shift, works out why, and stops to ask before anything changes.
A canvas cannot loop, and an agent should not hold your credentials. n8n owns the macro plane: schedules, integrations, the audit trail, the approval you tap on your phone. LangGraph owns the micro plane: cycles, conditional edges, self-critique, checkpointed state. Every irreversible action lives in n8n. The agent only proposes.
drift detected → agent investigates → proposal
→ you approve → retrain → promote
The pale marks on the left are printed before the run starts: they are the graph, every node of it. The ink is what actually happened.
reason can emit a tool call, which routes through
tools and back, so the pen retraces the upper curve.
critique asks the model whether its own evidence is
sufficient and can send it round again, up to three times. Only then
does propose commit to RETRAIN, IGNORE or ESCALATE.
At human_gate the agent calls interrupt().
That raises clean out of the graph, after the checkpointer has written
every message, tool result and the proposal to SQLite. Nothing below
that line runs until someone resumes the thread.
Which is why the paper below the stop is blank rather than dimmed.
Nothing has happened there. The process holding that state can die,
and a different process hours later loads the same
thread_id and carries on from the mark.
A verdict of IGNORE skips the gate. Approval exists to authorise a change, so a non-action never asks for one and nobody gets paged.
The agent is sceptical by construction. A drift alert that coincides with a recorded ingestion incident is usually a bug rather than drift, and past pipeline failures are one of the four things it can look up.
A portfolio project, and a demonstration page rather than a hosted service. The running system needs n8n, a Telegram bot and a local agent. Source and setup on GitHub.