---
title: "Share output from Cursor — Krowk setup"
canonical_url: "https://krowk.com/docs/cursor"
last_updated: "2026-09-02T08:08:03.197Z"
meta:
  description: "Install the krowk binary, add a .cursor/rules file, and Cursor publishes screenshots and recordings to permalinks that carry the commit and branch behind them."
  "og:description": "Install the krowk binary, add a .cursor/rules file, and Cursor publishes screenshots and recordings to permalinks that carry the commit and branch behind them."
  "og:title": "Share output from Cursor — Krowk setup"
---

**Docs**

# **Krowk in Cursor**

Install the binary, add one rule, and the agent publishes the screen it changed rather than telling you about it.

[The CLI reference](https://krowk.com/docs/cli) [MCP setup](https://krowk.com/docs/mcp)

**Setup**

## **Two commands.**

1 — install

```
$ curl -fsSL https://krowk.com/install | bash
```

2 — check it landed

```
$ krowk doctor
```

Same two pieces as any other harness: put the binary on the path, then tell the agent when to use it. Cursor has no skill mechanism, so the instruction is the whole integration.

## The rule

Cursor reads project rules from `.cursor/rules/`. One file is enough:

.cursor/rules/krowk.mdc

```
---
description: Publish visual evidence of UI changes
alwaysApply: true
---

After any visual change, capture it (screenshot if static, a short screen recording if it is an interaction) and publish it with the krowk skill. If the skill is missing or fails, run `krowk help --json`, then `krowk push FILE --title "what changed" --json`, and paste `paste.url` where you report the work.
```

Rule file formats are Cursor's, and Cursor changes them. If the front matter above has drifted by the time you read this, the instruction text is the part that matters — put it wherever the current version keeps standing instructions.

## What it records without being asked

`CURSOR_TRACE_ID` does double duty here: it is how Cursor is recognised as the harness, and it is also what the session is recorded as. Git supplies the rest — repository, commit, branch, dirty flag. Set `KROWK_MODEL` if you want the card to name the model too — Cursor does not publish it in a variable Krowk can read, so it is the one fact that has to be passed rather than found.

## MCP, if you would rather

Cursor speaks MCP. Add `krowk-mcp` as a stdio server and the agent gets `krowk_push` as a tool instead of a command — same client, same refusals.

.cursor/mcp.json

```
{
  "mcpServers": {
    "krowk": { "command": "krowk-mcp" }
  }
}
```

## **One rule file, and the evidence stops dying with the sandbox.**

No account needed for the first push.

[The CLI reference](https://krowk.com/docs/cli) [See the pricing](https://krowk.com/pricing)