iris
Screenshots of live websites. Minimal interface, powerful engine.
What is it?
What it is
Iris is a Rust-based command-line tool (and MCP server) that captures screenshots of web pages using the Chrome DevTools Protocol, providing a reliable visual camera for coding agents.
Why it exists
To give coding agents the ability to obtain trustworthy, programmatic images of web UI so they can verify, debug, and act on visual information without leaving their workflow.
Who should use it
Developers, coding agents, and automation scripts that need reliable, programmatic screenshots of web pages or elements. Ideal for CI/CD pipelines, documentation generation, visual testing, and providing visual context to AI assistants.
Who should avoid it
Users seeking interactive browser automation, cross‑origin iframe captures, or capturing multiple matching elements. Also not suitable for environments without a Chrome-family browser or for those wanting advanced diffing/review workflows.
Stars over time
+2 stars in the last 1 day
How it works
A quick walkthrough in plain English
How iris works
Step 1 of 3
You interact with it
Open iris, send a request, or connect it to your stack.
Features
Advantages
- Produces trustworthy, accurate screenshots using real Chrome rendering
- Fast one-command capture suitable for CI/CD and automation workflows
- Integrates directly with coding agents via MCP for inline image responses
- Concurrent batch processing reduces total capture time
- Smart waiting ensures visually complete captures before shutter
- High-resolution Retina output by default
- Failed URLs in batch mode don't terminate the entire operation
- Flexible input: CLI args, stdin, or file paths
- Element-specific capture with precise framing and padding
- JSON output enables programmatic parsing and pipeline integration
- Single binary with no external runtime dependencies beyond Chrome
- Configurable timeouts and concurrent job limits for resource management
Disadvantages
- Requires a Chrome-family browser to be pre-installed
- No support for capturing cross-origin iframe contents
- Only captures the first matching CSS selector (no multiple matches)
- CLI mode spawns a new Chrome process per invocation (slow for repeated calls)
- No built-in browser interaction scripting or automation
- No diff or visual comparison tooling included
- Element capture conflicts with --full page mode
- Full pages exceeding Chrome's ~16k px limit auto-fallback to @1x scale
- No support for capturing Shadow DOM or nested frame contents selectively
- Batch filenames derived from URLs may be unwieldy or conflict
- Exit code 1 on any batch failure requires error handling in scripts
Installation
native
curl -fsSL https://raw.githubusercontent.com/brijr/iris/main/install.sh | sh or cargo install iris-screenshot
FAQ
How do I install Iris?
Iris can be installed via the official installer script: `curl -fsSL https://raw.githubusercontent.com/brijr/iris/main/install.sh | sh`. Alternatively, with a Rust toolchain, run `cargo install iris-screenshot` which installs the `iris` command. The only runtime dependency is an installed Chrome-family browser (Chrome, Chromium, Edge, or Brave).
What are the most useful CLI flags for capturing images?
Key flags include `--selector` (CSS selector to target specific elements), `--padding` (nonnegative pixel padding around the selection), `--size` (WxH dimensions or presets like desktop, iphone, ipad), `--full` (capture the entire page height), `--dark` (emulate dark theme), `--format` (output format: png, jpg, or webp), `--json` (emit JSON lines for programmatic access), and `--wait-for` (wait for a selector to exist before capturing).
How do I integrate Iris's MCP server with coding agents?
Add Iris's stdio MCP server to an agent using `codex mcp add iris -- iris mcp` or configure it directly in another MCP client with: ```json { "mcpServers": { "iris": { "command": "iris", "args": ["mcp"] } } } ``` The server exposes a `capture` tool that returns images inline with structured metadata. Pass `output` when the agent also needs a file.
What browser is required for Iris to function?
Iris requires a Chrome-family browser (Chrome, Chromium, Edge, or Brave) running locally. It uses this browser via the DevTools Protocol to capture screenshots. The browser is either auto-detected or specified with the `--chrome` flag.
How can I verify my Iris installation works correctly?
Run `iris --version` to check the installed version. Then perform a smoke test: `iris https://example.com --selector h1 --padding 8 --scale 1 --json -o /tmp/iris-smoke.png` should return `status: ok` and a non-empty PNG file. For MCP verification, call `iris mcp get iris` or use the configured MCP server to confirm the `capture` tool is available.
Can I capture images from standard input?
Yes. Use `cat urls.txt | iris - -o shots/` to batch capture multiple URLs from stdin (comments are ignored). You can also specify individual files with `iris -o shots/ a.com b.com c.com` for batch processing.
Featured in Videos
YouTube tutorials and walkthroughs for iris
Alternatives
Similar projects ranked by category, topics, and text overlap.