Detectors you describe in plain English: list them, read what they fire on, train new ones.
A signal is a detector. It watches agent runs and fires when findings match a pattern described in plain English: “the agent retries a failed charge with no backoff,” “the assistant goes off-topic.” These live under Signals in the dashboard.A signal is a learned classifier, not a hand-written rule. Bento trains it on your own runs through the Deep Search loop, and once trained it fires in real time on new runs and backfills history. Each firing is an event, and Bento groups similar events into clusters.Every signal carries a source and a status:
The Deep Search loop trains a working detector. To register a record directly, signals create takes a body where name is required and prompt describes the pattern in plain English. A hand-created record lands in initializing and waits for its training step; it doesn’t train a classifier on its own.
bentolabs signals create --data '{"name": "Payment retry storm", "prompt": "Agent retries a failed charge with no backoff until timeout."}'
To edit a signal, send only the fields that change:
bentolabs signals update <signal-id> --data '{"prompt": "Agent retries a failed charge more than 3 times with no backoff."}'
signals delete is a soft delete. The record stays, the status flips to archived, and it stops firing:
bentolabs signals delete <signal-id>
The CLI can train a signal and create a notification channel, but binding a signal to a channel into a firing alert rule is dashboard-only. There’s no alert-rules group, so set the rule up in the dashboard.