[ COMPARE · SCREENSHOTS FOR AI AGENTS ]
Agent-neutral desktop screenshots for people and AI agents
If you need an AI agent to take screenshots, the practical question is what it can capture and whether the output is stable enough to parse. Cloche captures any desktop app or window, not just a browser tab, and prints stable JSON on stdout with a published schema. It runs as a plain CLI or a small stdio MCP server, so any agent can call the same command. If you only ever screenshot web pages inside a Playwright or Puppeteer script, you already have that and do not need this.
[ 01 · THE PROBLEM ]
Agents that work on a desktop need to see the screen. The common screenshot tooling is browser-only: Playwright and Puppeteer capture a page inside a browser they control, and the screenshot is tied to the script that drives that browser. That covers web pages well, but it does not cover a native editor, a terminal, a settings window, or any other desktop app an agent might need to look at.
The second half of the problem is output. An agent calling a capture step needs a result it can parse the same way every run. A raw image buffer or an ad hoc log line forces every caller to build its own glue. What an agent wants is a single command that captures the desktop and returns structured, predictable output.
[ 02 · CLOCHE VS BROWSER SCREENSHOTS ]
A fair, capability-only comparison against Playwright and Puppeteer screenshots, the tools people most often reach for. These compare what each does, not benchmarks or counts.
| Capability | Cloche | Playwright / Puppeteer screenshots |
|---|---|---|
| What it captures | Any desktop app or window, plus full screen | Web pages inside a controlled browser only |
| How you call it | A standalone CLI command, or a stdio MCP server any agent can call | A script you write against the browser automation API |
| Structured output | Stable JSON on stdout, with a published schema (cloche schema) | A returned image buffer or file; structure is whatever your script builds |
| Presentation | Optional polished card: background cleanup, rounded corners, padding, shadow | Raw page screenshot; framing is up to you |
| Agent integration | Agent-neutral: any harness or MCP client can call the same command | Tied to the script and runtime that drives the browser |
| Best fit | Capturing arbitrary desktop apps for people and agents | End-to-end testing and scraping of web pages |
[ 03 · WHEN TO USE IT, WHEN YOU DON'T ]
Use Cloche when
You need an agent or a script to capture a desktop app or window, not just a browser tab, and you want stable JSON the caller can parse the same way every time.
Use Cloche when
You want one capture command that works from a shell script, Codex, OpenClaw, Claude Code, or any MCP client, instead of binding the capture side to a single agent stack.
You do not need this when
You only ever screenshot web pages inside a Playwright or Puppeteer script. You already have screenshot capture in that runtime, and adding a desktop tool buys you nothing. Keep using the browser tool you have.
[ 04 · FAQ ]
Does Cloche replace Playwright or Puppeteer?
No. If your target is a web page and you are already driving a browser, Playwright and Puppeteer screenshots are the right tool and you should keep using them. Cloche covers the case those tools do not: capturing any desktop application, not just a browser tab.
Why does stable JSON matter for an agent?
An agent that calls a capture command needs to parse the result the same way every time. Cloche prints the same structured object on stdout for every capture, and the schema is published with cloche schema, so an agent turn or a script can rely on the shape rather than scraping log lines.
Do I have to wire it into one specific agent stack?
No. Cloche is a plain CLI and an optional stdio MCP server. It works from a shell script, from Codex, OpenClaw, Claude Code, or any MCP client. The capture side stays neutral so you are not locked to one harness.
[ 05 · TRY IT ]
Cloche is a Rust CLI under the Apache-2.0 license. Install it, then run a capture and read the JSON.