v0.1 — open source & live on Chrome, Firefox, CLI

Screen recordings
your agents read like context.

Iris turns a recording into a structured, queryable context object — transcripts, frame analysis, action timelines — and serves it to Claude, Cursor, your CLI, your SDK. One click. No prompt engineering.

getiris.xyz/r/a1b2c3d4
⌘K
Recording — Bug repro: settings flow
02:34
01:42 / 02:34
00:05clickSettings nav
00:12clickDark mode toggle
00:18scrollPreview panel
00:24errorHydration mismatch
Claude · MCPconnected
user> what error did I just see in the dashboard?
tool call · iris.getLatestRecording
recording_id: "a1b2c3d4"
duration: 154s
claude> At 00:24, after toggling dark mode and scrolling the preview panel, a hydration mismatch fired in SettingsPanel.tsx. The toggle wrote to localStorage before the SSR'd HTML hydrated.
#settings#dark-mode#hydration#bug
600
frames analyzed / recording
<30s
from upload to queryable context
MCP · API · CLI · SDK
all included

Speaks fluent agent — connects to

Claude DesktopCursorWindsurfZedVS CodeContinue.devOpenAI AgentsCrewAILangChainLlamaIndexAnthropic SDKVercel AI SDKClaude DesktopCursorWindsurfZedVS CodeContinue.devOpenAI AgentsCrewAILangChainLlamaIndexAnthropic SDKVercel AI SDK
rec · settings.theme demo02:34
chrome
cli
upload
pipelinerunning
extract frames
transcribe audio
claude vision
detect actions
build context
> 600 frames analyzed
> 1,842 tokens of transcript
> 7 actions detected
share linkpublic
getiris.xyz/r/a1b2c3d4copy
mcp · claudeconnected
user> check the latest recording
claude> User toggled dark mode, triggered a hydration mismatch in SettingsPanel...

How Iris works

01 — Capture

Record once. Anywhere.

Browser extension, CLI, or any video upload. Iris doesn't care if it's a screenshare, a Loom export, or a Quicktime clip — drop it in.

02 — Extract

Frames become facts.

Every frame is read by Claude. Audio transcribed by Deepgram. UI actions detected automatically. The output is a structured context object — not a hallucination.

03 — Serve

Agents pull, humans share.

Claude, Cursor, your CLI — they all hit the same MCP and REST surface. Need to send a teammate the recording? Public link with chapters, transcript, and tags.

The platform

A capture layer built for agents, not just humans.

vision pipeline

Every frame goes through Claude. Every action, every URL, every error captured.

00:00
12:07
24:14
36:21
48:28
60:35
72:42
84:49
96:56
600 frames · 2:34 video✓ all analyzed
mcp server

One config line. Claude reads recordings.

"iris": {
  "command": "npx",
  "args": ["@iris/mcp"]
}
open source

Self-host on Docker. BYO Anthropic + Deepgram.

$docker pull tundra/iris
shareable links

Send a recording to a teammate. They get chapters, transcript, and the AI summary.

01:42
typescript sdk

Programmatic access. Search, fetch, upload — all typed.

const iris = new IrisClient({ apiKey });
const { context } = await iris.getLatestRecording();
console.log(context.summary);

Why teams use Iris

Three workflows, one capture layer.

01qa & bugs

Bug reports an AI can read

"What error did I just see in the dashboard?" — Iris pinpoints the moment, the stack, the URL.

  • Repro steps in plain English
  • Console errors + network failures captured
  • Auto-file Linear / Jira tickets from MCP
02async workflows

Walkthroughs your team rewatches with their agent

"Show me how I deployed the staging branch last Tuesday." Iris returns the recording, summary, and the commands you ran.

  • Searchable across every recording you've made
  • Public links with chapters, no signup
  • Onboarding loops you actually maintain
03agent memory

Durable context for long-running agents

Give your coding agent a memory it can re-read instead of a chat log it can’t.

  • Frame-grounded — agents quote screen state, not prose
  • Tags + timeline = retrieval that actually works
  • Works with Claude, Cursor, Windsurf, Zed

Integrate

Four ways in. Same context.

claude_desktop_config.json
{
  "mcpServers": {
    "iris": {
      "command": "npx",
      "args": ["@iris/mcp-server"],
      "env": {
        "IRIS_API_KEY": "ir_live_xxxxx"
      }
    }
  }
}

// Then just tell Claude:
// "Check the most recent recording"

FAQ

Questions we get a lot.

Loom is built for human-to-human video sharing. Iris does that too — but it also extracts structured context (timelines, actions, transcripts, OCR) that AI agents can consume via MCP, REST API, or SDK. Think of it as Loom + an AI understanding layer.

Iris uses Claude (Anthropic) for frame-by-frame vision analysis and context generation, and Deepgram for audio transcription. Both are configurable via environment variables. Self-hosters bring their own keys.

Yes. Iris is 100% open-source (MIT) and ships with a Dockerfile. Deploy on Railway, your own server, or any Docker-compatible infrastructure. Your recordings and data stay on your servers.

When self-hosted, your data never leaves your infrastructure. On the hosted version, recordings are stored in your workspace and accessible only with your credentials or API keys. We don't train models on your data.

Iris accepts WebM and MP4 recordings. The browser extension records in WebM. You can also upload any video file via the CLI, SDK, or dashboard.

The fastest way is the MCP server — add one config block to Claude Desktop or Cursor and your agent can query recordings directly. You can also use the REST API, TypeScript SDK, or CLI for custom integrations.

Ready when you are

Give your agents
eyes.

Free plan is permanent. No credit card. 60 seconds from signup to your first agent-readable recording.

MIT licenseBYO keysSelf-hostable