Driftbell

drift watchman

looking for an agent

Raise a drift alert

The payload workflow 01 posts once it has computed PSI and KS on the canvas.

Resume a frozen thread

A thread parked at the gate outlives the process that started it. Paste an id from an earlier run. A restart in between changes nothing.

Record no thread

    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.

    Why two layers

    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

    What the pen draws

    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.

    How the pause survives

    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.

    When it does not ask

    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.