Rendered at 23:47:45 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
pnezis 6 hours ago [-]
Hi HN, author here.
Agents can now do real work on their own: they review pull requests, draft emails, write documents and generate images. The hard part is no longer getting the work done, but reviewing it well before it is used.
Pinrail is a desktop app for that review. The agent submits what it made and waits. You see it in a view made for that kind of content, such as comments on a diff, a set of draft emails or an image you can mark up, and you decide item by item. The agent then continues with your decision.
I built it because I kept approving agent work in the worst possible place: a terminal scrollback. When the agent drafted twelve review comments for a pull request, I either let it post all of them or argued about them one by one in chat. Neither worked well, so I had the agent write its comments into a custom HTML page that showed them on the diff. There I could accept some, reject others with a reason, edit one, and hand the whole decision back at once. That page worked so well that I wanted the same for everything else my agents asked me about, and that is how Pinrail started.
It works like this. In the agent's instructions you name the steps that need a person, for example "before posting review comments, submit them to Pinrail and wait". When the agent reaches that step, it runs:
The review appears in the app's inbox and you get a notification. You decide in a view made for that kind of content. The command then prints your decision as markdown, or as JSON with `--json`, and exits with a code that says how the review ended. If you ask for changes, the agent sends a new round with `--revises`, and the app shows your previous verdicts next to it. If you discard a review, the command exits 5 and the agent stops the work the review was gating.
Some details:
- It works with any agent that can run a command: Claude Code, Codex, Cursor, OpenCode, Gemini CLI, or a CI job. The app can install a skill that teaches the agent how to submit and wait.
- Each kind of review is a plugin: a manifest, two JSON Schemas (what the agent sends and what comes back) and an HTML view, which runs in a sandboxed iframe. The app comes with plugins for lists, questions, code review, images and markdown documents. Others cover emails, calendars, HTML pages, logos and 3D models. `pinrail plugins new` creates your own.
- Everything is local. The app runs its server on 127.0.0.1, stores reviews in SQLite, and has no account and no telemetry.
- It is built with a Rust core, Tauri and React. It runs on macOS and Linux. Windows is planned.
- It is free and open source under Apache 2.0.
Agents can now do real work on their own: they review pull requests, draft emails, write documents and generate images. The hard part is no longer getting the work done, but reviewing it well before it is used.
Pinrail is a desktop app for that review. The agent submits what it made and waits. You see it in a view made for that kind of content, such as comments on a diff, a set of draft emails or an image you can mark up, and you decide item by item. The agent then continues with your decision.
I built it because I kept approving agent work in the worst possible place: a terminal scrollback. When the agent drafted twelve review comments for a pull request, I either let it post all of them or argued about them one by one in chat. Neither worked well, so I had the agent write its comments into a custom HTML page that showed them on the diff. There I could accept some, reject others with a reason, edit one, and hand the whole decision back at once. That page worked so well that I wanted the same for everything else my agents asked me about, and that is how Pinrail started.
It works like this. In the agent's instructions you name the steps that need a person, for example "before posting review comments, submit them to Pinrail and wait". When the agent reaches that step, it runs:
The review appears in the app's inbox and you get a notification. You decide in a view made for that kind of content. The command then prints your decision as markdown, or as JSON with `--json`, and exits with a code that says how the review ended. If you ask for changes, the agent sends a new round with `--revises`, and the app shows your previous verdicts next to it. If you discard a review, the command exits 5 and the agent stops the work the review was gating.Some details:
- It works with any agent that can run a command: Claude Code, Codex, Cursor, OpenCode, Gemini CLI, or a CI job. The app can install a skill that teaches the agent how to submit and wait. - Each kind of review is a plugin: a manifest, two JSON Schemas (what the agent sends and what comes back) and an HTML view, which runs in a sandboxed iframe. The app comes with plugins for lists, questions, code review, images and markdown documents. Others cover emails, calendars, HTML pages, logos and 3D models. `pinrail plugins new` creates your own. - Everything is local. The app runs its server on 127.0.0.1, stores reviews in SQLite, and has no account and no telemetry. - It is built with a Rust core, Tauri and React. It runs on macOS and Linux. Windows is planned. - It is free and open source under Apache 2.0.
It is early, and I expect rough edges.
Site and downloads: https://pinrail.dev Docs: https://pinrail.dev/docs/