Review your agent's work from anywhere.

Claude is building at home. You're at lunch. Peekable turns what it made — a page, a deck, a video ad — into a private link: open it on any device, tap the exact spot that looks off, and leave a note. Your agent picks the note up, with context, and ships the revision.

claude code — checkout redesign
> /peekable share what you built
Shared as a private link:
  https://peekable.fyi/s/8jYX99tcWr

· Maya opened it on her phone
· Maya, on the price tag: "move this under the title"

Claude revised it · pushed v2 · waiting for the thumbs-up
peekable.fyi/s/8jYX99tcWr
LIVE v3 · 2 min ago

Your cart

2 items · ships in 3–5 days

Subtotal · $353.00 Checkout

↑ click any element to annotate · widget stays in the corner

The async review loop for AI-built work. No screenshots. No arrows. No "what I meant was…"
/peekable · share → tap → revise
01 HOW IT WORKS

Share. Tap. Revised.

Three steps, and two of them aren't yours. Installing the CLI teaches your agent the whole loop — you just type /peekable. Reviewers need no account and install nothing.

01 · SHARE

Ask your agent to share it.

Type /peekable in Claude Code or Codex. Installing the CLI installs the skill, so your agent already knows what it's showing and how to share it — a mockup, slides, a report, or the app running on your machine. You get a private link.

> /peekable share
peekable.fyi/s/8jYX99tcWr
private link · ready to send
02 · TAP

They tap the exact spot.

Whoever opens the link sees the real page — phone, tablet, laptop. They tap the actual button, heading, or section they mean and leave a note pinned right there. No account, nothing to install, nothing to learn.

on the price tag:
"move this under the title"
note pinned to that exact element
03 · REVISE

Your agent makes the change.

Notes flow back to Claude or Codex with the exact element and page attached — so "this button" means this button, not a guess from a screenshot. It revises, pushes the next version, and reviewers always see the latest.

> /peekable feedback
1 note from Maya
revised · pushed v2
THE LOOP YOU HAVE NOW

Screenshot → arrows → "what I meant was…"

  • Take a screenshot, crop it, draw arrows on it
  • Paste it in Slack and describe which button you mean
  • Answer the follow-up questions about which button you mean
  • The screenshot is stale by the next version anyway
THE LOOP WITH PEEKABLE

Tap it → your agent fixes it.

  • Open the private link — the real page, not a picture of it
  • Tap the exact element, write one note
  • Your agent gets the note with the element attached — zero guessing
  • It revises and pushes; the link always shows the latest
02 THE FEEDBACK

Notes that mean this button. Literally.

When someone taps and writes a note, Peekable remembers exactly what they tapped — the element, the page, the version. Your agent doesn't decode a screenshot. It knows.

REVIEWER · ON A PHONE
A real Peekable session open on a phone, with a note pinned to an element
a real session, not a mockup
BUILDER · LAPTOP
$ peekable feedback --watch
↳ watching peekable.fyi/s/8jYX99tcWr

new comment · 2s ago
  selector: .cart-item--headphones
  from: maya@forge.dev
  body: "move price under title?"

$ peekable feedback 8jYX --json | claude
↳ 1 comment · queuing edit…
patched in CartItem.tsx
REMOTE · ASYNC

You're not at the laptop. Your agent is.

The whole point: you don't have to sit in front of the machine that's building. Be on the train, at lunch, on someone else's couch — the link opens anywhere, and your notes land back in the loop while you're still out.

  • Phone-first review — pinch, scroll, tap an element
  • Bring anyone in — send the same link to a teammate or client
  • Always the latest — every revision updates the same link
  • The loop closes itself — notes get resolved as your agent ships fixes
comments.json
webhook.ts
.peekablerc
// peekable feedback --json --since 1h
[
  {
    "id": "cmt_8x2k4p",
    "reviewer": "maya@forge.dev",
    "page": "/s/8jYX99tcWr",
    "version": "v3.0.2",
    "selector": ".cart-item--headphones",
    "element_context": {
      "tagName": "div",
      "innerText": "Aurora Headphones · $289",
      "boundingBox": { "left": 32, "top": 184, "width": 312, "height": 96 },
      "viewport": { "width": 393, "height": 852, "dpr": 3 }
    },
    "body": "Move the price under the title?",
    "resolved": false
  }
]
UNDER THE HOOD · FOR THE CURIOUS

What your agent actually receives.

Every note arrives as structured data, not a screenshot to squint at: the exact element, its selector and text, the page, the version, and who said it. That's why the revision lands on the first try.

  • The element itself — selector and DOM path, not pixel coordinates
  • What it looked like — text, styles, and viewport, enough for visual agents
  • When and where — page route and version, so feedback is pinned in time
  • Who said it — reviewer name and timestamp
REAL-TIME · WEBSOCKET

Two people. One page. Zero refresh.

Share the link with a teammate and you're both on the same live session. When one of you drops a pin, it lands on the other screen in the same breath — no reload, no "did you see my comment yet?"

Both viewers see every pin as it lands · powered by a live websocket, not polling

WATCH MODE · BATCH NOTIFY

One command. Know the instant feedback lands.

Run peekable watch <session-id> in your terminal. When a reviewer submits their annotations, you get a single, clean notification — not a stream of noise for every pin.

watch fires once per submit batch — your agent isn't woken for every pin

03 VIDEO REVIEW · NEW

Notes pinned to a video frame. Shipped.

Your agent renders an ad, a demo, a motion cut — and pushes it to the same private link. You scrub to the moment, tap the layer that's off, and the note lands with the layer and timestamp attached. It re-renders; the conversation follows that layer into the next cut.

SAME LINK · SAME COMMANDS

Scrub. Tap the layer. Re-render.

Video feedback used to be "around 7 seconds, the logo thing." Peekable knows the composition — every layer, every scene — so a tap means that layer at that moment, and your agent reads it exactly like page feedback.

  • Tap a layer, not a pixel — notes snap to the logo, the caption, the end card
  • Pinned in time — every note carries the timestamp and the render it was left on
  • Threads across cuts — a layer keeps its conversation from v1 to v2, even after a full re-render
  • One loop, both mediapeekable push ad.mp4, then peekable feedback. Word-for-word the same as pages.
04 USE CASES

Built for the way you actually ship now.

Anything your agent can render, you can share — app screens, HTML pitch decks, slides, reports, video ads. And whoever you send it to just taps and types.

SOLO · ASYNC · AGENT

Vibe-check what your agent built — from anywhere.

Claude is building locally on your desktop. You're at lunch. Peekable lets you peek at the result on your phone, drop a few notes, and walk back into your office to a queued patch.

your desk
claude
building…
you, on a bench
peekable.fyi/s/...
↓ feedback flows back ↓ claude patches ↓ you peek again
05 UNDER THE HOOD

Simple on the surface. Serious plumbing underneath.

Your agent already knows Peekable

Installing the CLI installs the skill for Claude Code and Codex. Type /peekable and your agent knows what it's showing, how to share it, and how to pull the feedback into its next loop. No orchestration code, no prompt engineering.

> /peekable · that's the whole integration

Localhost relay

Run peekable proxy <port> and your local dev server gets a public URL routed through Peekable. No deploy, no SSH gymnastics — just send the link.

$ peekable proxy 3000

Element-level annotations

Reviewers click any element on the page and leave a note. Comments stick to selectors, not pixels.

3 unresolved

Versioned pushes

Every peekable push bumps a version. Reviewers always see the latest, and feedback is pinned to the version it was left on.

push #1 → push #2 → push #3

Resolve & ship

Mark comments resolved from the CLI, then push the next version. The loop closes where you live — the terminal — not in another tab.

$ peekable resolve cmt_8x2k4p

Rich element context

Each comment carries selector, DOM path, element text, computed styles, bounding box, route, push version, and reviewer name.

selector · dom path · text
bbox · route · version

Watch mode

Tail new comments as they come in, while your agent is still working. Pipe them straight into the next prompt.

$ peekable feedback 8jYX99tcWr --watch

Agent-friendly CLI

Predictable flags, stable JSON output, no interactive prompts unless you ask. Works with Claude Code, Cursor, Codex, and anything that can shell out.

$ peekable feedback --json | jq

Password-gated shares

Set a view secret on any session and reviewers unlock once. Rotate the secret and every existing viewer is kicked out instantly. No restart, no revoke queue.

view secret · rotatable

Safe by default

Point push-url at anything. It won't touch localhost, RFC1918 addresses, or cloud metadata endpoints unless you explicitly opt in. Redirects re-validate. Bodies get size-capped.

$ peekable push-url https://…

Live multi-viewer

Two reviewers open the same share and see each other's pins land in real time over a websocket. No refresh. No "did you see my comment yet?"

2 viewers · live · pins fan out

Video review

Push a rendered video with its manifest. Notes pin to a layer at a moment — and thread across re-renders, because layer IDs stay stable from cut to cut.

logo-lockup · 0:07 · v2
06 HOSTED BETA

Built for the first review loop.

The hosted beta runs on Peekable's managed service. We're focusing the first batch on the CLI and support loop, so hosted peekable.fyi is the fastest way in.

~/peekable — zsh
cli
# the whole loop, in your terminal
$ peekable create "Cart redesign" --json
  ↳ {"id":"8jYX99tcWr", "url":"peekable.fyi/s/..."}

$ peekable push 8jYX99tcWr ./out.html
  ↳ {"version":1}

$ peekable feedback 8jYX99tcWr --watch
  ↳ watching for new comments…

$ peekable resolve cmt_8x2k4p
$ peekable push 8jYX99tcWr ./out.html
  ↳ {"version":2}
07 IN THE WORKS

Next up: Peekable Studio.

Review is half the loop. Studio is where you direct the cut — timeline, layers, re-render from a note. Coming soon.

08 EARLY ACCESS

Free during early access.

Full access to the hosted beta. Share live links, get element-pinned feedback, and keep your agent in the loop. No credit card required.

  • Free during Early Access — no credit card
  • Full CLI — create, push, feedback, watch, resolve
  • Localhost relay via peekable proxy
  • Element-level annotations
  • Up to 5 active sessions
  • Agent skill for Claude Code & Codex
HOSTED · PEEKABLE.FYI FREEduring early access
EARLY ACCESS · OPEN NOW

The next loop is one peek away.

Enter your email and we'll send your access code and a short setup guide. It takes about two minutes, with no credit card and no invite queue.

Free during Early Access · no credit card required · Questions? Email support from the person building it.
By continuing you agree to the Terms and Privacy Policy.