Agent Frame

A live screen shared between you and your agent. Open it in any browser, then ask your agent to chart, draw, present, or show.

See how it works ↓

One copy and paste. No account or install.

Any screen

A spare tab, tablet, e-reader, monitor, or television becomes an agent-controlled display.

Instant updates

New content appears live. SVG, HTML, images, markdown, and generated visuals all work.

One simple API

Your agent sends one authenticated POST. No SDK, app integration, or conversation protocol required.

A second screen for the work

Ask in words. See the result.

agent

“Compare the benchmark runs
  and put a chart on the frame.”

POST agentfra.me/my-frame
  content-type: image/svg+xml

✓ frame updated

livemy-frame · display-01
benchmark
request flow
The frame can hold a chart, diagram, photo, slide, or whole HTML interface.

The frame is not another chat. It is a persistent visual surface your agent can update while it works.

Quick start

1

Open a frame

Use the button above. Agent Frame creates a private write key and a shareable viewing URL.

2

Paste the instructions into your agent

The generated block contains everything it needs for the first update. After that, it keeps the frame URL and key.

3

Ask to see something

Keep the frame open and speak naturally. Each update replaces the previous content instantly.

Put a summary of that on the frame.
Draw the request flow.
Show the test suite as it runs.
Mock up that page so I can see it.

One-call create

Agents can create and fill a new frame in one request. The response includes the frame URL and its first write key.

curl --fail-with-body -H 'content-type: text/markdown' \
  --data '# Findings

- First result
- Second result' \
  https://frame.new

Send a remote URL as text/url, a visual description as text/prompt, or actual content with its matching content type.

Creation returns 201 Created; later updates normally return 200 OK. Treat every 2xx response as success. For repeat updates, POST to the returned URL with Authorization: Bearer <key>.

HTTP API

POST https://frame.newCreate a frame and display the request body immediately.
GET /<id>Open the live frame in a browser.
POST /<id>Replace its content with SVG, HTML, an image, text, markdown, or a text/prompt description.
POST /<id>/overlaySet one temporary plain-text status over the content.
GET /<id>/infoRead content metadata, current overlay, and viewer count.
GET /<id>/viewersRead live viewer screen profiles for responsive output.
DELETE /<id>Delete the frame and its records.
WS /<id>/wsWatch for content and overlay updates.

Everything an agent needs is in skill.md. A small JavaScript wrapper is available at client.js.

Your new frame
From now on, our shared agent frame is at "https://agentcnvs.com/quiet-harbor-zx7vfstpyg". I'll be watching it on a second screen. Treat it as an auxiliary visual canvas or display, not as another conversational channel.

Store these two values separately and keep the key secret:
export FRAME_URL='https://agentcnvs.com/quiet-harbor-zx7vfstpyg'
export FRAME_KEY='03tk10segdxf2j3703xqxkk5mg'

Whenever you have something useful to show me, update the frame with:
curl --fail-with-body -sS -X POST "$FRAME_URL" -H "Authorization: Bearer $FRAME_KEY" -H 'Content-Type: image/svg+xml' --data "$SVG"

Every POST replaces the frame content instantly. Send:
- A remote image or page URL as text/url.
- A natural-language visual description as text/prompt.
- Actual SVG, HTML, Markdown, PNG, JPEG, GIF, WebP, or plain text with its matching Content-Type.
Make visuals fluid so they fit any screen. Do not post a placeholder; wait until you have something useful to show. Never put the key in the frame, a reply, a URL, or a log.

If no frame is available in a future session, create and fill one by POSTing content to https://frame.new. More details are at https://agentcnvs.com/skill.md, but you do not need to read them before the first update.
Paste into any capable AI agent.