Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/nebulae/trudiWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/nebulae/trudi/trudi-watch-alerts)<a href="https://agentmods.dev/commands/nebulae/trudi/trudi-watch-alerts"><img src="https://agentmods.dev/badge/commands/nebulae/trudi/trudi-watch-alerts/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/nebulae/trudi/trudi-watch-alerts"><img src="https://agentmods.dev/badge/commands/nebulae/trudi/trudi-watch-alerts.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00029 | $0.01513 |
| Opus 5.5 | $0.00012 | $0.00605 |
| Sonnet 5.5 | $0.00006 | $0.00303 |
| Haiku 4.5 | $0.00003 | $0.00151 |
Grade A, and why
trudi-watch-alerts scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 103 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/trudi-watch-alerts
A second-granularity, event-driven alternative to /loop 15s /trudi-check-alerts. /loop re-fires on the scheduler, which clamps to a
60s floor, so a 15s loop really polls ~once a minute. This command instead
runs a persistent waiter (bin/trudi-alert-waiter.py --follow) under the
harness Monitor tool: the waiter watches the case's monitoring/alerts/
directory every N seconds (default 2) and prints one line each time new
alerts land; Monitor turns each line into a notification that wakes me
immediately. I then run the same investigation + auto-protect flow as
/trudi-check-alerts. Detection is already real-time (the Velociraptor sidecar
streams alerts as they fire); this closes the gap on the agent side, with
time-to-response ≈ the poll interval instead of a minute.
The first argument names the case (else read ~/cases/.common/active_case).
The second, if given, is the waiter poll interval in seconds (default 2).
Why Monitor, not a one-shot background task
A one-shot waiter that exits on the first alert must be re-armed by the
agent after every investigation — and that re-arm step is easily dropped when
the agent dispatches into the long /trudi-check-alerts flow, so the loop runs
once and dies (alerts that arrive after the first batch are then missed). The
Monitor tool runs the --follow waiter persistently: it keeps emitting an
event per new-alert batch with no re-arm, and alerts that land while I'm
investigating still queue as later events. This is the robust mechanism.
Steps
1. Cold start (operator invoked this command)
- Resolve
CASE(argument orcat ~/cases/.common/active_case);N= second argument or2. - Pre-warm the response tool schemas — do this NOW, while nothing is on fire.
monitor_*/respond_*/velo_*are deferred tools; loading their schemas mid-alert cost a real run ~30 s of ToolSearch latency before it could even contain. Load the whole live-response set in ONE batched call up front so every tick is warm:
The forensic tools (ToolSearch("select:monitor_list_watchers,monitor_open_investigation_state,monitor_check_alerts,monitor_get_response_state,monitor_next_investigation_id,monitor_start_investigation,monitor_extend_investigation,monitor_set_awaiting_approval,monitor_clear_awaiting_approval,monitor_end_investigation,monitor_ack_alert,monitor_baseline_extend,respond_snapshot_evidence,respond_suggest_containment,respond_execute_action,respond_revert_action,respond_approve_action,velo_collect_artifact,velo_wait_for_flow,velo_get_collection_results,velo_query")reason_*,dair_assess,misc_record_finding, …) are not on the latency-critical path — let them load when step 6 begins. Once loaded, a schema stays callable for the rest of the session: do NOT re-ToolSearchper tick. monitor.list_watchers(CASE)— confirm a sidecar is alive. If none, STOP and tell the operator to run/trudi-start-watcherfirst (without the sidecar the alerts directory never fills).- Start the persistent watcher with the
Monitortool:command:python3 ~/trudi/bin/trudi-alert-waiter.py --follow --case-id <CASE> --interval <N>description:new TRUDI alerts for <CASE>persistent:trueThe--followwaiter readsmonitoring/_last_check_seq.txtfor its start cursor (so already-drained alerts aren't re-reported) and emits one JSON line per new batch. Tell the operator: "👁️ Watching — I'll act within ~s of each new alert. Say 'stop watching' to end."
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed · +20 lines 6b4c0da96235
- 2mo ago First seen · 83 lines · 29 tokens per session scan A 9bf55d7a699e
trudi-watch-alerts is a command published in the GitHub repository nebulae/trudi (67 stars, last pushed 5d ago), licensed MIT. It adds 29 tokens to every session and 1,513 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
ws
Word summary — anything told at N levels, from N words down to 1 word, for anything: a topic ("russian literature"), a URL, YouTube link, file, pasted text, a question, or "this". A leading number sets N (5 by default). Shortcut for the Fabric skill's WordSummary intent.
cancel-ralph
Cancel active Ralph Loop.
engage.actions
Execute Phase 7 - Actions on Objectives and Goal Achievement.
quickstart
Interactive onboarding guide — set up credentials, connect to orq.ai, and learn every command and skill.
focus
You are an ADHD focus assistant. Help the user commit to ONE task and block mental distractions.
stuck
You are an ADHD-friendly unblocking assistant. Help users get unstuck when they don't know what to do.