Local-first agent monitoring

Stop AI coding agents
from silently looping.

onpath wraps your coding agent and watches the session locally — detecting repeated failures, stalled progress, and wasted time. When the agent gets stuck, you know why, and what to run next.

Works with codexclaudecursor-agentopencode
Detectors
Catch repeated failures, edit loops, and no-progress-session sessions.
Local reports
Every session recorded to local SQLite. No upload by default.
MCP context
Expose findings read-only to Codex, Claude, and Cursor.
Policy
Warn, pause, or block when thresholds are crossed.
~/projects/billing  ·  onpath recording
The problem

Agents fail quietly. You notice an hour later.

A coding agent doesn't crash when it gets stuck — it keeps going. Same test, same error, same edit, on repeat. By the time you look, the context is gone and the time is spent.

01

Repeated failures look like progress

The agent reruns the same failing test with tiny edits. Output scrolls. Nothing actually changes.

02

Edit loops burn the budget

The same file is rewritten back and forth. Tokens and minutes disappear with no net diff.

03

Teams have vibes, not evidence

"It's been slow lately" isn't a metric. Leads need to see where agents actually stall.

04

Visibility shouldn't mean surveillance

Raw transcripts are sensitive. Teams need aggregate signal without collecting every keystroke.

14:02:09$pytest tests/test_proration.py
14:02:14FAILED — expected 1200, got 0
↻ same failure signature f1a4·c0
14:03:51FAILED — expected 1200, got 0
14:05:28FAILED — expected 1200, got 0
14:08:21FAILED — expected 1200, got 0
Stuck loop · 4 identical failures · 6m 12s elapsed
How it works

One prefix. Everything after runs as normal.

onpath sits between you and your agent. It records events, runs detectors, and writes a local report — without changing how the agent behaves.

STEP 01

Wrap the command

Prefix any agent invocation. onpath spawns it as a child process and watches the stream.

$ onpath run -- codex
STEP 02

Capture events locally

Commands, exit codes, file edits, and timings stream into a local SQLite store. Nothing leaves the machine.

.onpath/events.sqlite
STEP 03

Detect stuck patterns

Detectors hash failure signatures, track edit churn, and watch the clock against your thresholds.

repeated-failure-output · 4×
STEP 04

Report & recover

Get a markdown report and a recovery prompt. Optionally expose it read-only to your agent over MCP.

$ onpath report
What's in the box

Built for the way agents actually fail.

Detection, reporting, and integration that runs on your machine — with a hosted layer for teams when you want it.

Stuck-loop detection

Repeated commands, matching failure signatures, edit churn, permission and provider waits, context exhaustion, and configured no-progress or time-budget overruns — each its own detector.

Local markdown reports

Every session writes a readable report: timeline, commands, failure signatures, and findings — searchable by project or detector.

Read-only MCP

Install an MCP server so Codex, Claude, or Cursor can read findings and recovery context — never write, never act on your behalf.

read-only

Policy: warn / pause / block

Set thresholds per project or team. When an agent crosses them, onpath can warn, pause for a decision, or block the run — with bypass reasons logged.

Redacted sync preview

Before anything is shared, preview the exact payload. Raw terminal output is excluded by default; signatures are hashed.

Team analytics

Aggregate stuck-loop rate, findings by detector and repo, and policy decisions over time — process-focused, never an individual leaderboard.

pro
Command line

Install, monitor, inspect, and recover.

Install once, wrap any agent, and inspect the local report. Add read-only MCP when you want your agent to read the same local evidence.

macOS & Linux · script installer
zsh — onpath
# install
$ curl -fsSL https://agent.onpath.run/install.sh | sh
# wrap your agent — everything after -- runs normally
$ onpath run -- codex exec "fix the failing test"
↳ local recording active · session id is created at runtime
# read the latest report
$ onpath report
↳ opens the latest local report; exact findings depend on the session
# let your agent read its own findings (read-only)
$ onpath install codex --workspace .
# verify the host registered the server
$ codex mcp get onpath
Hosted dashboard · preview

Where your agents stall — across the whole team.

The optional hosted layer turns local findings into team visibility: stuck-loop rate, where it happens, and what to fix. Aggregate by design — no raw transcripts, no developer ranking.

Open the live dashboard
onpath
local fixture preview acme · platform

Overview

Sessions monitored
128
▲ 18% w/w
Stuck-loop rate
9.4%
▼ 2.1 pts
Open findings
31
— 6 critical
Policy decisions
12
contract-backed
Recent sessionsView all →
AgentRepoStatusDurationFindings
CCodexacme/billingstuck6m 12s2
ClClaudeacme/webdone3m 41s0
CuCursoracme/apiblocked11m 03s3
OOpenCodeacme/infradone2m 18s0
CCodexacme/billingwarn5m 56s1
Findings by detector
Repeated failure12
Edit loop8
No progress6
Time budget5
Stuck-loop rate · 7d9.4%
Local-first by default

Your sessions stay on your machine.

onpath records to local SQLite and uploads nothing unless you turn sync on. When you do share, you see the redacted payload first — raw terminal output never leaves by default.

No upload by default

Everything runs locally. Sync is opt-in, per project, and reversible.

Local SQLite storage

One file at .onpath/events.sqlite. Export or delete it any time.

Redacted sync preview

Inspect the exact payload before it's shared. Signatures are hashed; secrets are stripped.

Process, not people

Team analytics aggregate by repo and detector — never an individual developer leaderboard.

Sync payload preview redacted
# what leaves your machine when sync is on
{
  "session": "s_9f3a…b21",
  "agent": "codex",
  "repo": "acme/billing",
  "finding": "repeated-failure-output",
  "signature": "f1a4c0" // hashed,
  "repeats": 4,
  "command": «redacted»,
  "output":  «excluded by default»
}
Open-core

Free and local forever. Hosted when your team needs it.

The CLI, detectors, reports, and MCP are open and run on your machine. The hosted dashboard adds team analytics, shared policy, and support.

Local
$0
Everything a solo developer needs, running entirely on your machine.
Install the CLI
  • CLI monitoring & recording
  • All stuck-loop detectors
  • Local markdown reports
  • Read-only MCP integration
  • Local aggregate analytics
most teams
Pro
$19/ dev / mo
Hosted dashboard and team visibility for engineering teams.
Start a team trial
  • Everything in Local
  • Hosted team dashboard
  • Cross-session team analytics
  • Shared policy & thresholds
  • Redacted sync & retention controls
Enterprise
Custom
Private detector packs, advanced semantic detection, and support workflows.
Talk to us
  • Everything in Pro
  • Private detector packs
  • Advanced semantic detection
  • SSO, audit logs, SLAs
  • Support workflows

Know when the agent is stuck — before an hour disappears.

Local-first. Open-core. Two minutes to install and one prefix to start.

$ curl -fsSL https://agent.onpath.run/install.sh | sh