{"id":44862119,"url":"https://github.com/tomasz-tomczyk/crit","last_synced_at":"2026-07-03T12:01:42.974Z","repository":{"id":338824022,"uuid":"1159323006","full_name":"tomasz-tomczyk/crit","owner":"tomasz-tomczyk","description":"Your feedback loop with the agent","archived":false,"fork":false,"pushed_at":"2026-06-30T21:30:49.000Z","size":18147,"stargazers_count":628,"open_issues_count":10,"forks_count":46,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-06-30T22:23:29.970Z","etag":null,"topics":["agentic-coding","ai-agents","ai-tools","cli","code-review","developer-tools","llm","markdown"],"latest_commit_sha":null,"homepage":"https://crit.md","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomasz-tomczyk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-16T15:39:33.000Z","updated_at":"2026-06-30T21:32:52.000Z","dependencies_parsed_at":"2026-02-22T15:02:37.789Z","dependency_job_id":"6f80f296-06c3-47ca-93cc-af108911756a","html_url":"https://github.com/tomasz-tomczyk/crit","commit_stats":null,"previous_names":["tomasz-tomczyk/crit"],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/tomasz-tomczyk/crit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasz-tomczyk%2Fcrit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasz-tomczyk%2Fcrit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasz-tomczyk%2Fcrit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasz-tomczyk%2Fcrit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomasz-tomczyk","download_url":"https://codeload.github.com/tomasz-tomczyk/crit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasz-tomczyk%2Fcrit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35084820,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-coding","ai-agents","ai-tools","cli","code-review","developer-tools","llm","markdown"],"created_at":"2026-02-17T10:30:54.365Z","updated_at":"2026-07-03T12:01:42.967Z","avatar_url":"https://github.com/tomasz-tomczyk.png","language":"Go","funding_links":[],"categories":["Companion Apps \u0026 GUIs"],"sub_categories":["Quick Setup with cc-safe-setup"],"readme":"# Crit\n\n[![CI](https://github.com/tomasz-tomczyk/crit/actions/workflows/test.yml/badge.svg)](https://github.com/tomasz-tomczyk/crit/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/tomasz-tomczyk/crit/graph/badge.svg)](https://codecov.io/gh/tomasz-tomczyk/crit)\n[![Release](https://img.shields.io/github/release/tomasz-tomczyk/crit.svg)](https://github.com/tomasz-tomczyk/crit/releases)\n[![Go Report Card](https://goreportcard.com/badge/github.com/tomasz-tomczyk/crit)](https://goreportcard.com/report/github.com/tomasz-tomczyk/crit)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nReview and comment on plans, code diffs, frontend elements and send feedback directly to your agent.\n\n![Crit UI for \"notification-plan.md\" showing comment left on \"Queue - Redis Streams, SQS, RabbitMQ\" line saying \"Just use SQS - we're in AWS\"](docs/images/demo-overview.png)\n\n## Adaptive UI for each type of output\n\nFor agents, plans and code are all the same - it's just text, but for us, humans, reviewing generated plans and reviewing web application are two very different activities.\n\nCrit adds a proper interface for each type of output and lets you point at the exact thing that is wrong and leave a comment for the agent to fix:\n\n- `crit plan.md` renders a markdown file with proper formatting and review UI\n- `crit` auto-detects git changes and shows syntax-highlighted diffs for local review.\n- `crit http://localhost:3000` proxies your running app and adds a review interface to it\n- `crit landing.html` renders a static HTML artifact to review\n\nEverything runs locally via one single binary.\n\n## Quickstart\n\n### 1. Install Crit binary\nBrew:\n```bash\nbrew install crit\n```\n\u003cdetails\u003e\n\u003csummary\u003eAlso available via Go, Nix, Windows\u003c/summary\u003e\n\nGo:\n```bash\ngo install github.com/tomasz-tomczyk/crit@latest\n```\n\nNix:\n```bash\nnix profile install github:tomasz-tomczyk/crit\n```\n\nWindows:\n```bash\niwr https://github.com/tomasz-tomczyk/crit/releases/latest/download/crit-windows-amd64.exe -OutFile crit.exe\n```\n\u003e Note: Then move crit.exe somewhere on your PATH. ARM64 users: swap amd64 for arm64. WSL users: use the Linux binary instead.\n\n\u003c/details\u003e\n\nOr download the latest release from [GitHub](https://github.com/tomasz-tomczyk/crit/releases/latest).\n\n## 2. Integrate with your agent\nClaude Code:\n```\nclaude plugin marketplace add tomasz-tomczyk/crit\nclaude plugin install crit@crit\n```\n\nCrit also works with Cursor, GitHub Copilot, OpenCode, Codex, Gemini, Qwen, Hermes, Windsurf, Cline, Grok, Aider, and Pi — any agent that can read a file and run a command. See [`integrations/`](integrations/) for all install methods and details.\n\n### 3. Tell your agent to use `crit`\n\nMost integrations include a `/crit` slash command that automates the full review loop.\nAgent launches Crit, waits for your review and acts on the feedback.\nRepeat the process until you approve the changes.\n\nHere's a 2-minute demo walkthrough of plan review and branch review:\n[![Crit demo](docs/images/video-thumbnail.png)](https://www.youtube.com/watch?v=LHwfdvePf5A)\n\n## Usage\n\nThe recommended way is to use `/crit` command with your agent after any piece of work - whether it wrote a plan or made some code changes. You can however, launch it in your terminal by yourself and paste the prompt when you finish to your agent.\n\n```bash\ncrit                              # auto-detect changed files in your repo\ncrit plan.md                      # review a specific file\ncrit plan.md api-spec.md          # review multiple files\ncrit http://localhost:3000        # review a running dev server\ncrit landing.html                 # review a static HTML file\n```\n\nIf talking to an agent, you can invoke the `/crit` command and optionally provide arguments like the above examples or the agent will try to launch the right thing based on the context of the conversation.\n\n### Live mode\n\n`crit live \u003curl\u003e` (or `crit \u003curl\u003e`) proxies a running dev server through Crit's review UI. Crit's iframe loads the app on a different origin/port than your browser tab, so **host-scoped session cookies are not shared automatically**. If the direct URL works but Crit shows a login page or hydration mismatch, forward the upstream cookies:\n\n```bash\n# one-off\ncrit live http://localhost:4000/dashboard --cookie \"_crit_key=...\"\n\n# repeatable (Netscape jar or raw Cookie header lines)\ncrit live http://localhost:4000/dashboard --cookie-file .crit/live-cookies.txt\n\n# reuse cookies from a Chrome session with remote debugging enabled\ncrit live http://localhost:4000/dashboard --cdp-url http://127.0.0.1:9222\n```\n\n**Getting cookies:** log in to the app in your browser, then copy the session cookie from DevTools (Application → Cookies), export a cookie jar, or start Chrome with `--remote-debugging-port=9222` and pass `--cdp-url` so Crit reads cookies for the target origin automatically.\n\n**Config** (global or project `.crit.config.json`; project overrides global):\n\n```json\n{\n  \"live_cookie_file\": \".crit/live-cookies.txt\",\n  \"live_cdp_url\": \"http://127.0.0.1:9222\"\n}\n```\n\nRelative paths resolve from the repo root. Prefer a gitignored file under `.crit/` over committing `live_cookie` inline. Run `crit live --help` for all flags.\n\n```bash\ncrit status                       # show review file path and daemon status\ncrit stats                        # show lifetime review statistics\ncrit cleanup                      # delete stale review files\n```\n\n## Features\n\n### Round-to-round diff\n\nAfter your agent edits the file, Crit shows a split or unified diff of what changed - toggle it in the header.\n\n#### Split view\n\n![Round-to-round diff - split view](docs/images/diff-split.png)\n\n#### Unified view\n\n![Round-to-round diff - unified view](docs/images/diff-unified.png)\n\n### Inline comments: single lines and ranges\n\nClick a line number to comment. Drag to select a range. Comments are rendered inline after their referenced lines, just like a GitHub PR review.\n\n![Simple comments](docs/images/simple-comments.gif)\n\n### Programmatic comments\n\nAI agents can use `crit comment` to add inline review comments without opening the browser UI or constructing JSON manually:\n\n```bash\ncrit comment src/auth.go:42 'Missing null check'\ncrit comment src/handler.go:15-28 'Error handling issue'\ncrit comment --output /tmp/reviews src/auth.go:42 'comment'  # custom output dir\ncrit comment --clear   # remove the review file\n```\n\nComments are appended to the review file (stored in `~/.crit/reviews/`) and created automatically if it doesn't exist. Run `crit status` to see the active review file path.\n\n### Share for Async Review\n\nWant a second opinion before handing off to the agent? Click the Share button to upload your review and get a public URL anyone can open in a browser, no install needed. Each reviewer's comments are color-coded by author. Unpublish anytime.\n\nYou can also share directly from the CLI without starting the browser UI:\n\n```bash\ncrit share plan.md                    # share files and print the URL\ncrit share plan.md --qr               # also print a QR code in the terminal\ncrit share plan.md --org acme         # share under an organization\ncrit share plan.md --org acme --visibility unlisted  # org share with explicit visibility\ncrit unpublish                        # remove the shared review\n```\n\nWhen sharing under an org, visibility defaults to `organization` (members only). Override with `--visibility` (`organization`, `unlisted`, or `public`). The browser UI shows an org picker when you're signed in and belong to an organization.\n\nSharing uses [crit.md](https://crit.md) by default. To self-host, deploy [`crit-web`](https://github.com/tomasz-tomczyk/crit-web) and point `CRIT_SHARE_URL` (or `--share-url`, or `share_url` in config) at your instance. Set `share_url` to `\"\"` to disable sharing entirely.\n\nIf your self-hosted `crit-web` sits behind an SSO reverse proxy that the terminal can't authenticate against, set `proxy_auth: true` in your `~/.crit.config.json` (this option is config-only and global-only — it's a property of the deployment, not a per-invocation choice, so there's no flag or env var). Browser-driven Share / Pull / Re-share / Unpublish then route through a popup window where the proxy can complete its interactive auth flow. Terminal `crit share`, `crit fetch`, and `crit unpublish` remain unavailable behind SSO — use the browser UI buttons.\n\n#### Authentication\n\nYou can share anonymously or you can create a free crit.md account (using GitHub oAuth). To authenticate with crit-web (for sharing and other features that require an account):\n\n```bash\ncrit auth login                    # opens browser to log in\ncrit auth whoami                   # show current user info\ncrit auth logout                   # log out and revoke token\n```\n\n`crit auth login` uses the OAuth Device Flow - it opens your browser, you confirm, and the CLI receives a token automatically. The token is stored in your global config (`~/.crit.config.json`).\n\n### GitHub PR Sync\n\nCrit can sync review comments bidirectionally with GitHub PRs. Requires the [GitHub CLI](https://cli.github.com) (`gh`) to be installed and authenticated.\n\n#### Pull comments from a PR\n\n```bash\ncrit pull              # auto-detects PR from current branch\ncrit pull 42           # explicit PR number\n```\n\n#### Push comments to a PR\n\n```bash\ncrit push                          # auto-detects PR from current branch\ncrit push --dry-run                # preview without posting\ncrit push --message \"Round 2\"      # add a top-level review comment\ncrit push 42                       # explicit PR number\n```\n\n### Send to agent (experimental)\n\nClick \"Send now\" on any comment during a review to get an AI agent response in real-time. This feature only appears when `agent_cmd` is configured.\nThe agent reads the comment context, addresses it (editing code if needed), and replies\ninline - all while you continue reviewing.\n\n![Send to agent](docs/images/live-mode.png)\n\nConfigure in `~/.crit.config.json` (global config only):\n\n```json\n{\n  \"agent_cmd\": \"claude --dangerously-skip-permissions -p\"\n}\n```\n\n\u003e **Security note:** `agent_cmd` is read exclusively from your global `~/.crit.config.json`. Project-level `.crit.config.json` files cannot set it. This prevents a malicious repository from executing arbitrary commands when you trigger \"Send to agent\".\n\n#### Permission modes\n\nAgents need tool permissions to edit files on your behalf. How you grant them depends on your trust level:\n\n| Mode             | Command                                                   | What the agent can do                                                                       |\n| ---------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------- |\n| Full access      | `claude --dangerously-skip-permissions -p`                | Read, write, and run any tool. Simplest option - recommended for trusted repos.             |\n| Selective access | `claude --allowedTools Edit,Read,Bash,Write,Glob,Grep -p` | Only the listed tools are permitted. Good middle ground.                                    |\n| No permissions   | `claude -p`                                               | The agent can respond to comments but **cannot edit files**. Useful for Q\u0026A-only workflows. |\n\n#### How it works\n\n1. The agent receives the comment text, quoted text (if text was selected), file path, and line range on **stdin**.\n2. The agent's **stdout** is captured and posted as a reply to the comment automatically.\n3. If the agent edits files, Crit detects the changes via **file watching** and updates the UI.\n\n#### Live threads\n\nAfter the first agent interaction, the comment becomes a **live thread**:\n\n- Further replies you post in the thread are automatically sent to the agent - no need to click \"Send to agent\" again.\n- The agent sees the **full conversation history**, so it can build on previous context.\n- Live threads show a ⚡ **live** badge and green glow - the agent will respond immediately to further replies.\n\n#### Supported agents\n\n| Agent                 | `agent_cmd` value        |\n| --------------------- | ------------------------ |\n| Claude Code           | `claude -p`              |\n| OpenCode              | `opencode ask`           |\n| Cline                 | `cline --pipe`           |\n| Aider                 | `aider --message-file -` |\n| Cursor (experimental) | `cursor --pipe`          |\n\n\u003e **Tip:** Claude Code still prompts for permission in `-p` mode. To let it edit files freely, use `claude --dangerously-skip-permissions -p` instead. The other agents already operate without permission prompts in their pipe/non-interactive modes.\n\u003e\n\u003e You can also specify a model with `--model` (e.g. `claude --model sonnet -p`).\n\n### Everything else\n\n- **Per-branch review isolation.** Each branch gets its own review file — switch branches freely without losing comments. Review data lives in `~/.crit/reviews/`, not your repo.\n- **Draft autosave.** Close your browser mid-review and pick up exactly where you left off.\n- **Vim keybindings.** `j`/`k` to navigate, `c` to comment, `Shift+F` to finish. `?` for the full reference.\n- **Concurrent reviews.** Each instance runs on its own port - review multiple plans at once.\n- **Syntax highlighting.** Code blocks are highlighted and split per-line, so you can comment on individual lines inside a fence.\n- **Live file watching.** The browser reloads automatically when the source file changes.\n- **Dark/light/system theme.** Three-button pill in the header, persisted to localStorage.\n- **Local by default.** Server binds to `127.0.0.1`. Your files stay on your machine unless you explicitly share. (Override with `--host` / `CRIT_HOST` / `host` config key — e.g. `0.0.0.0` to expose on your LAN. No auth, so it's an explicit opt-in.)\n- **Collapsing generated files.** Honors `linguist-generated` in `.gitattributes` — matching files appear collapsed by default.\n- **No analytics or tracking.** Crit collects zero telemetry. No usage stats, no crash reports, no phone-home. If we ever add anonymous usage statistics in the future, they will be explicitly opt-in.\n- **Update check.** On startup, Crit makes one network request to check for a newer version and prints a notice if one is available. Set `CRIT_NO_UPDATE_CHECK=1` to disable it.\n\n## Configuration\n\nCrit supports persistent configuration via JSON files so you don't have to pass the same flags every time.\n\n| File                  | Scope   | Location                                         |\n| --------------------- | ------- | ------------------------------------------------ |\n| `~/.crit.config.json` | Global  | Applies to all projects                          |\n| `.crit.config.json`   | Project | Repo root (from `git rev-parse --show-toplevel`) |\n\nProject config overrides global. CLI flags and env vars override both.\n\n```bash\ncrit config --generate \u003e ~/.crit.config.json   # scaffold a starter config file\ncrit config                                    # view resolved config (merged global + project)\n```\n\n### Config keys\n\nAll keys are optional — omit any you don't need.\n\n| Key                    | Type     | Default                    | Description                                                                                                                                                                             |\n| ---------------------- | -------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `port`                 | int      | `0` (random)               | Port for the local server. `0` picks a random available port.                                                                                                                           |\n| `host`                 | string   | `\"127.0.0.1\"`              | Listen host. Set to `\"0.0.0.0\"` to expose the server on your LAN. There is no auth, so any non-loopback bind is an explicit opt-in.                                                     |\n| `no_open`              | bool     | `false`                    | Don't auto-open the browser when starting a review.                                                                                                                                     |\n| `quiet`                | bool     | `false`                    | Suppress terminal status output.                                                                                                                                                        |\n| `output`               | string   | repo root or file dir      | Output directory for review files. Reviews are stored in `~/.crit/reviews/` by default.                                                                                                 |\n| `author`               | string   | VCS user name              | Author name shown on comments. Falls back to your configured VCS user name.                                                                                                            |\n| `base_branch`          | string   | auto-detected              | Base branch to diff against (e.g. `\"main\"`, `\"develop\"`). Overrides auto-detection.                                                                                                     |\n| `ignore_patterns`      | string[] | `[\".crit/\"]` | File patterns to exclude from git-mode file lists. Global and project patterns are merged.                                                                                              |\n| `auto_viewed_patterns` | string[] | `[]`                       | File patterns auto-marked as viewed (collapsed) once when a review opens — e.g. `[\"*.lock\", \"generated/\", \"PLAN.md\"]`. Manually un-marking a file keeps it open. Global and project patterns are merged. |\n| `cleanup_on_approve`   | bool     | `true`                     | Automatically delete the review file when you approve with no unresolved comments. Set to `false` to preserve review history.                                                           |\n| `no_update_check`      | bool     | `false`                    | Don't check for new versions on startup.                                                                                                                                                |\n| `no_integration_check` | bool     | `false`                    | Skip the integration config freshness check on startup.                                                                                                                                 |\n| `vcs`                  | string   | auto-detected              | Preferred VCS backend: `\"git\"`, `\"sl\"`, or `\"jj\"`. When set, crit uses this VCS instead of auto-detecting. Falls back to git if the configured VCS isn't available. Can also be set via `--vcs` CLI flag (flag takes precedence over config). |\n| `live_cookie`          | string   | `\"\"`                       | Cookie header value forwarded to the upstream app in live mode (e.g. `\"_crit_key=...\"`). Global or project. Prefer `live_cookie_file` for secrets. |\n| `live_cookie_file`     | string   | `\"\"`                       | Path to a file with upstream cookies for live mode (raw header lines or Netscape jar). Global or project; relative paths resolve from repo root. |\n| `live_cdp_url`         | string   | `\"\"`                       | Chrome DevTools URL (e.g. `http://127.0.0.1:9222`) to reuse browser cookies for the live upstream. Global or project. |\n| `prompts`              | object   | `{}`                       | Custom finish-hook templates (project overrides global per key). See [Agent prompts](docs/agent-prompts.md). |\n\n### Agent prompts\n\nCustomize what Crit tells your agent when you **Finish Review** or **Approve**. Hooks are templates in global or project config (`prompts` map) and `.crit/prompts/*.md` files.\n\nSee the **[agent prompts guide](docs/agent-prompts.md)** for hook reference, template variables, trust flow, and examples.\n\n### Global-only config keys\n\nThese keys can only be set in `~/.crit.config.json` (global). Project-level `.crit.config.json` cannot override them — this prevents a malicious repository from hijacking local commands or redirecting share requests.\n\n| Key                    | Type     | Default                    | Description                                                                                                                                                                             |\n| ---------------------- | -------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `agent_cmd`            | string   | `\"\"`                       | Shell command for \"Send to agent\" (e.g. `\"claude -p\"`). See [Send to agent](#send-to-agent-experimental). |\n| `open_cmd`             | string   | `\"\"`                       | Custom command to open review URLs — receives the URL as its only argument (must be a single executable, no flags). Use when the browser isn't on the machine running crit, e.g. crit runs on a remote host over SSH and a small wrapper script opens the URL on your local machine. When unset, crit uses the platform default opener. |\n| `auth_token`           | string   | `\"\"`                       | Authentication token for crit.md. Set automatically by `crit auth login`. |\n| `share_url`            | string   | `\"https://crit.md\"`        | Base URL of the share service. Set to `\"\"` to disable sharing entirely. Self-host with [`crit-web`](https://github.com/tomasz-tomczyk/crit-web). |\n| `public_url`           | string   | `\"\"`                       | Advertised base URL for stderr and browser-open (e.g. `https://machine.ts.net` via tailscale serve). Listen address unchanged. |\n| `share_consented`      | bool     | `false`                    | Written automatically to `true` after you confirm the first-time share prompt. Reset to `false` to see the prompt again. Not used when `share_url` is a custom (self-hosted) URL. |\n| `proxy_auth`           | bool     | `false`                    | When `true`, share / pull / unpublish / re-share use the browser popup relay instead of the local Go server contacting crit-web directly. Use when crit-web is behind an SSO reverse proxy that the terminal cannot authenticate against. No flag or env var — this is a property of the deployment, not a per-invocation choice. |\n\n### CLI flags\n\n| Flag            | Short | Equivalent config key | Description                            |\n| --------------- | ----- | --------------------- | -------------------------------------- |\n| `--port`        | `-p`  | `port`                | Port to listen on                      |\n| `--host`        |       | `host`                | Listen host (default `127.0.0.1`)      |\n| `--public-url`  |       | `public_url`          | Advertised review URL (listen unchanged) |\n| `--no-open`     |       | `no_open`             | Don't auto-open browser                |\n| `--share-url`   |       | `share_url`           | Share service URL                      |\n| `--output`      | `-o`  | `output`              | Output directory for review files      |\n| `--quiet`       | `-q`  | `quiet`               | Suppress status output                 |\n| `--base-branch` |       | `base_branch`         | Base branch to diff against            |\n| `--vcs`         |       | `vcs`                 | VCS backend (`git`, `sl`, or `jj`)     |\n| `--no-ignore`   |       |                       | Temporarily bypass all ignore patterns |\n| `--version`     | `-v`  |                       | Print version and exit                 |\n\n**Live mode only** (`crit live \u003curl\u003e` — see `crit live --help`):\n\n| Flag            | Equivalent config key | Description |\n| --------------- | --------------------- | ----------- |\n| `--cookie`      | `live_cookie`         | Upstream cookie value (repeatable) |\n| `--cookie-file` | `live_cookie_file`    | File with upstream cookies |\n| `--cdp-url`     | `live_cdp_url`        | Chrome DevTools URL to reuse browser cookies |\n\n### Ignore patterns\n\nPatterns from global and project configs are merged. Supported syntax:\n\n| Pattern             | Matches                                         |\n| ------------------- | ----------------------------------------------- |\n| `*.lock`            | Files ending in `.lock` anywhere in tree        |\n| `vendor/`           | All files under `vendor/`                       |\n| `package-lock.json` | Exact filename anywhere in tree                 |\n| `generated/*.pb.go` | Path prefix with glob (`filepath.Match` syntax) |\n\nUse `--no-ignore` to temporarily bypass all patterns:\n\n```bash\ncrit --no-ignore\n```\n\n### Environment variables\n\n| Variable                    | Description                                       |\n| --------------------------- | ------------------------------------------------- |\n| `CRIT_PORT`                 | Default port for the local server                 |\n| `CRIT_HOST`                 | Listen host (default `127.0.0.1`)                 |\n| `CRIT_PUBLIC_URL`           | Advertised review URL (e.g. tailscale serve)      |\n| `CRIT_SHARE_URL`            | Override the share service URL                    |\n| `CRIT_AUTH_TOKEN`           | Override the auth token (skips `crit auth login`) |\n| `CRIT_NO_UPDATE_CHECK`      | Disable the update check on startup               |\n| `CRIT_NO_INTEGRATION_CHECK` | Skip integration config freshness checks          |\n\n## Other Install Methods\n\n### Build from Source\n\nRequires Go 1.26+:\n\n```bash\ngit clone https://github.com/tomasz-tomczyk/crit.git\ncd crit\ngo build -o crit ./cmd/crit\nmv crit /usr/local/bin/\n```\n\n### Go\n\n```bash\ngo install github.com/tomasz-tomczyk/crit/cmd/crit@latest\n```\n\n### Nix\n\n```bash\nnix run github:tomasz-tomczyk/crit -- --help\n```\n\nOr add it to a `flake.nix`:\n\n```nix\ninputs.crit.url = \"github:tomasz-tomczyk/crit\";\n```\n\n### Download Binary\n\nGrab the latest binary for your platform from [Releases](https://github.com/tomasz-tomczyk/crit/releases).\n\n### Windows\n\nNative Windows: download `crit-windows-amd64.exe` (or `crit-windows-arm64.exe`) from [Releases](https://github.com/tomasz-tomczyk/crit/releases), rename to `crit.exe`, and place it on your `PATH`.\n\nWSL: install the Linux binary as you would on Linux (`go install`, `nix run`, or download `crit-linux-amd64` from Releases). Crit detects WSL and opens URLs in your Windows host browser via `wslview` / `powershell.exe` / `cmd.exe`.\n\n### Docker (sandboxed agents)\n\nFor running crit alongside an AI agent inside a container, with the review UI reachable from your host browser, see [`integrations/docker/`](integrations/docker/). Includes a working `Dockerfile` + `entrypoint.sh` that bridges crit's loopback-bound server via `socat` so `docker -p` forwarding works without changing crit's threat model.\n\n## Acknowledgements\n\nCrit embeds the following open-source libraries:\n\n- [markdown-it](https://github.com/markdown-it/markdown-it): Markdown parser\n- [highlight.js](https://github.com/highlightjs/highlight.js): Syntax highlighting\n- [Mermaid](https://github.com/mermaid-js/mermaid): Diagram rendering\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasz-tomczyk%2Fcrit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomasz-tomczyk%2Fcrit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasz-tomczyk%2Fcrit/lists"}