// OPEN-SOURCE AGENT OBSERVABILITY

Your agents are running.
Are you watching?

keelwave captures every decision, detects loops, and tracks cost — without changing how you write agents. Self-host with one command.

pip install keelwave
localhost:3000/agents
keelwave dashboard — agent runs overview with loop rate, cost, and run health

// WHY KEELWAVE

Sentry for AI agents — open source, self-hosted.

Your agent traces never leave your infra. See exactly why an agent looped, stalled, or burned tokens — not just that latency looked fine.

run research-agent
loop_detected
01think······plan next query
02tool_call8be201search("pricing docs")
03tool_call8be201search("pricing docs")← loop
04replan······vary query — break the cycle
terminated loop_detected · 4 steps · 2,113 tokens

// LOOP DETECTION

See exactly where the agent went in circles.

Every step fingerprinted with SHA-256. Repeated tool calls surface as a flagged loop on the decision trace — no more guessing why a run burned tokens and stalled.

localhost:3000/agent-runs/9f2e
keelwave — decision trace with a flagged loop between repeated tool calls

// FEATURES

What keelwave captures.

agent_steps

Decision traces

Every step in the loop — think → tool_call → result → replan — captured in order.

input_fingerprint

SHA-256 loop detection

Duplicate tool_name + input fingerprints flag loops the moment they happen.

v_agent_tool_stats

Tool analytics

Success rate, p95 latency, and failure counts per tool across every run.

total_tokens

Token efficiency

Tokens per step and per run, so you see where budget actually goes.

SHA-256
Loop detection
TimescaleDB
Time-series store
1 dep
Python SDK
MIT
Self-host, open source

// QUICKSTART

Two lines to first trace.

Wrap your agent loop in a context manager. keelwave fingerprints every step, rolls up cost, and flags loops — no manual instrumentation.

pip install keelwave
agent.pypython
from keelwave import Keelwave kw = Keelwave(api_key="kw_...") with kw.run("research-agent") as run:    run.step("think", thought)    run.tool_call("search", input=q, output=r, ok=True)# loop detection + cost tracking — automatic

Self-host in one command.

MIT licensed. No account, no data leaving your infra.

Get started on GitHub
pip install keelwave