reviewmy / Products / 03 · Agent Console
See what your agents did, and what it cost.
Post each run and its events to one endpoint, and the console lists them as they arrive: model calls, tokens and cost per run, and every event inside it. It watches. It never controls a run.
What it does today
Every run, every event, what it cost.
Four things, each working now on your own runs. What the console is growing into is further down, under its own heading.
- Runs as they arrive
The live screen lists each run as its events land and refreshes every few seconds: the agent, its status, model calls, tokens in and out, and cost. Open a run to see every event inside it.
- Cost you can check
A model call costs what you send with it, or our rate for a model we know. A model we cannot price counts as $0 and the run is flagged as unpriced, rather than guessed at.
- Keys and a monthly cap
Each tier sets how many keys you can hold and how many events a month it accepts. A key is shown once, stored as a hash and revocable. Past the cap, ingest refuses with a plain message rather than charging for overage.
- Watches, never controls
There is no pause, no kill and no approve anywhere in the console. It records what your agents report, and nothing it shows can change a run.
Integration
One HTTP call, from anything.
No SDK to install and nothing to import. Post a run and its events to one endpoint from whatever language the agent is written in, and the run appears on the live screen within seconds.
await fetch('https://review-my-site.com/api/agents/ingest', {
method: 'POST',
headers: { authorization: 'Bearer agk_...', 'content-type': 'application/json' },
body: JSON.stringify({
run: { id: runId, agent: 'support-bot', environment: 'prod' },
events: [
{ seq: 1, kind: 'start' },
{ seq: 2, kind: 'model_call', name: 'plan', model: 'claude-sonnet-5',
input_tokens: usage.input_tokens, output_tokens: usage.output_tokens },
{ seq: 3, kind: 'end', detail: { status: 'succeeded' } },
],
}),
});Without a subscription you get 1 key and 10,000 events a month. Watch takes 100,000 events a month. Audit raises that to 500,000, and Govern to 2,000,000.
Pricing
Priced on what you ingest, not on seats.
The Agent Console is metered separately from the review plans. Watching agents scales with how many runs there are, not with how many page reviews you buy. A tier buys keys and events; nothing listed as coming below is part of any tier yet.
Watch
- Per month
- $15
- Per year
- $150/year
- API keys
- 3
- Events a month
- 100,000
Audit
- Per month
- $29
- Per year
- $290/year
- API keys
- 10
- Events a month
- 500,000
Govern
- Per month
- $99
- Per year
- $990/year
- API keys
- 25
- Events a month
- 2,000,000
Free is the absence of a subscription, not a trial. It does not expire, nothing auto-converts, and doing nothing charges nothing. Every figure above is read from the same catalogue the checkout charges against, so a price shown here cannot differ from a price taken.
Coming, not shipped
Where the console is going.
Designed, and running below on one sample run built to tell a story rather than to benchmark anything. None of it reads your runs yet, and none of it is part of what a tier buys today. Each tab says what it is.
- Step by step replay
One playhead over a run, with a lane per agent, the diff each step wrote, and spend and tokens adding up as it plays.
- Flag a step back to the agent
A brief drafted from the step you flag, collected by the agent over MCP and marked as raised by a human.
- Policies and budget alerts
Rules checked after a run finishes, and an alert when an environment passes its budget. Advisory: neither would stop a run.
- AI reviewers and a copilot
Reviewers over a finished run that publish their hit rates so you can switch one off, and a copilot that cites the step behind every claim.
- Runtime attribution
Per-step tokens and tool arguments from Claude Code, commands and exit codes from Codex, and run totals from anything else.
The Planner read the component named in the brief, then grepped for its call sites before writing a four-step plan.
The Coder added an empty-string guard and surfaced the API error.
It then re-ran that identical command nine more times across nine seconds without changing a line, which is the single largest cost in the run.
The fix was one line in the test file: awaiting the mock.
The Reviewer read both files, raised two notes, built a preview and opened the pull request.
A model wrote this from the run data. Every claim links to the step it came from.
Planner
claude-sonnet
Coder
claude-sonnet
Reviewer
gpt-5-codex
src/checkout/CouponField.tsx+38 −6
export function CouponField({ onApply }: Props) {
const [code, setCode] = useState("");
const [error, setError] = useState<string | null>(null);
async function submit() {
await onApply(code);
if (!code.trim()) return setError("Enter a code first.");
const res = await onApply(code);
if (!res.ok) return setError(res.message);
setError(null);
}- Duration
- 1:02
- Cost
- $0.75
- Tokens
- 65,500
- Wasted, estimated
- $0.37 · 49%
- Files written
- 2
Retry and wasted are heuristics, not measurements. Sometimes a re-run is the right call.
Moving the playhead moves your view of the run. The run itself finished before this screen loaded and nothing here can pause, resume or alter it.
0:26, run_tests · retry 3–11Workflow audit: coming, not shipped. The real screen component, running on sample data, and not yet reading your runs. Scrub it, click it, flag a step.
The other half
What reviewmy does to websites.
Stop guessing what the agent did.
Mint a key, and the next run is on the live screen within seconds of the agent reporting it.