arf.io / ARF / Terminal UI / ARF — Autonomous Request Filter · Agent Router & Filter
ARF · Agent Rendering Framework

The watchdog
has eyes.

The Agent Rendering Framework is ARF's live terminal dashboard. Watch every request in real time. Inspect governance decisions as they happen. Flip circuit breakers by hand. Diff what the agent changed. Know exactly what's happening in a terminal, the way it should be.

Main Dashboard

Live proxy traffic.
Everything, now.

arf · sessions · 1 active · proxy:on
Sessions
[+] Launch New Session
  Start a new prompt/chat

 [claude] refactor auth module
  Tokens: 28.4k  running
  anthropic  ·  grade: A

 [codex] write test suite
  Tokens: 12.1k  done
Launch Governed Session
Discovered Models
[claude] claude-opus-4-7
[claude] claude-sonnet-4-6
[claude] claude-haiku-4-5
[codex]  gpt-4.1
[gemini] gemini-2.5-pro
[ollama] qwen3-coder:30b
[ollama] llama3.2:3b
Details & Configs
Selected Model: claude-opus-4-7
Engine: claude
Type: Cloud Frontier
Connection Mode: CLI Subscription
Sandbox Level: Workspace (Dir scoped)

System Prompt instructions (Optional):
<Default standard system instructions>
↑/↓:agents · →:sidebar · Tab:prompt · F1:nav · q:quit F1:Nav  F2:Actions  F3:Loop  F4:Launch  F5:Doctor  F6:Proxy  F7:Govern  F8:Settings
Governance Pane

Policy decisions,
in real time.

arf · F7:Govern · governance rules & policy
rules │ governance rules & policy configuration │ 8 active │ standard
Loaded Rules
 block-credential-leak           block  req
  stream-credential-leak          block  stream
  rewrite-credential-output       rewrite stream
  no-destructive-commands         block  req
  scope-boundary                  warn   req
  sandbox-escape-detection        block  req
  prompt-injection-detection      block  req
  clamp-high-temperature          modify req
Policy Detail
Rule: block-credential-leak
Severity: block
Trigger: request
Patterns: 12 patterns
OWASP: A3 Injection · A6 Security Misconfig

Last matched: 14:23:09.112 (ANVIL-2 req #89)
Circuit Breakers  ↑↓:select  Enter:reset  Space:detail
CLOSED  token_budget        0 / 50000 tokens
CLOSED  repeated_failure    0 / 3 consecutive failures
CLOSED  stall               no stall detected
[[A]ll [B]lock [W]arn [I]nfo] · ↑↓:breaker · Enter:reset · Space:detail F1:Nav  F2:Actions  F3:Loop  F4:Launch  F5:Doctor  F6:Proxy  F7:Govern  F8:Settings
Provenance View

The full chain.
Every record.

arf · [E] Audit Chain · evidence
activity │ live event stream │ 1 agent142 eventsstreaming

14:23:08.441  proxy      reqanthropic  claude  1.2k tok
14:23:08.904  proxy      resanthropic  211ms  0.8k tok
14:23:09.112  governance EVAL  tool_use: write_file  /src/auth/session.ts
14:23:09.114  governance HOLD  require_approval match: Write
14:23:11.340  governance APPROVED  daniel@hyperwolf.ai  write_file
14:23:11.341  proxy      reqanthropic  claude  0.9k tok
14:23:11.819  proxy      resanthropic  478ms  1.4k tok
14:23:12.001  proxy      reqanthropic  claude  2.1k tok
14:23:12.445  proxy      resanthropic  444ms  1.8k tok
──────────────────────────────────────────────────────────────────────────
filter: all | governance | proxy | agent | git | vault | evidence | deny | uia | af
/:search · f:filter · Enter:detail · e:export · ↑↓:scroll · Esc:back
←/→:navigate DAG · ↑/↓:parent chain · Enter:expand · Tab:'f' to cycle filter F1:Nav  F2:Actions  F3:Loop  F4:Launch  F5:Doctor  F6:Proxy  F7:Govern  F8:Settings
Diff Viewer

What did the agent
actually change?

arf · [D] Diff Viewer
src/auth/session.ts  ·  record #141  ·  approved: daniel@hyperwolf.ai
───────────────────────────────────────────────────────────────────────────
  1   import { createClient } from 'redis';
  2   import { SessionData } from './types';
  3  
- 4   const SESSION_TTL = 3600; // 1 hour
+ 4   const SESSION_TTL_SECONDS = 3600; // 1 hour renamed for clarity
  5  
- 6   export async function createSession(userId: string): Promise<string> {
- 7     const token = Math.random().toString(36);
+ 6   export async function createSession(userId: string): Promise<string> {
+ 7     const token = crypto.randomUUID(); // cryptographically secure
  8     await redis.setex(`sess:${token}`, SESSION_TTL_SECONDS, userId);
  9     return token;
 10   }
───────────────────────────────────────────────────────────────────────────
n:next-hunk  p:prev-hunk  ]/[:next/prev-file  ↑↓:scroll  Esc:close
n:next-hunk  p:prev-hunk  ]/[:next/prev-file  ↑↓:scroll  Esc:close F1:Nav  F2:Actions  F3:Loop  F4:Launch  F5:Doctor  F6:Proxy  F7:Govern  F8:Settings
Keyboard Shortcuts

The whole watchdog,
at your fingertips.

Navigation (F-keys + menu)
F1 Open navigate menu (H/N/G/E/W/A/D/B/T/S)
F2 Actions menu (launch, kill all, toast log...)
F3 Start Loop (run all runners)
F4 Launch Agent modal (runner, backend, pack, prompt)
F5 Doctor (health check, model scan)
F6 Proxy status (restart, stop)
F7 Governance rules + circuit breakers
F8 Settings (runners, proxy, appearance)
In Agent View (N)
Select session
Open session sidebar
Tab Switch to prompt input
Alt+R Resume previous sessions
Alt+K Kill all running agents
Alt+T View toast history
In Governance (F7)
Navigate circuit breakers
Enter Reset tripped breaker
Space Detail view
A Filter: All rules
B Filter: Block rules only
W Filter: Warn rules only
I Filter: Info rules only
In Activity (A) / Traffic (T)
/ Search events
f Cycle filter
Enter Expand event detail
e Export events
Scroll
aog Filter by anthropic / openai / gemini (traffic only)