Git-native · Self-hostable · Claude-ready

Your team makes decisions in Slack.
Six months later, nobody remembers why.

Limn lets you leave a comment on any line of any file in your repo — visible in your editor, readable by your AI assistant, and searchable forever. The conversation stays anchored to the text it belongs to, not lost in a thread three channels deep.

$ npx @limn/cli show docs/auth.md
limn.sh/view?repo=acme/api&file=docs/auth.md
Authentication Service
The auth service handles token issuance and validation across all client-facing APIs.
Token Lifecycle
All tokens expire after 24 hours and are stored in Redis. 3
The gateway validates tokens on every request. Rate limiting is applied at the gateway level with a 1,000 req/min ceiling.
Database
We use PostgreSQL 16 with PgBouncer for connection pooling…
"All tokens expire after 24 hours…"
Claude AI 3d ago
24h may violate your compliance policy. Legal should review before next audit.
A alice 2d ago
Legal confirmed: must be 1h. Updating in PR #291.
B bob 1d ago
PR merged. Resolving thread.
Works with GitHub / GitLab Enterprise / VS Code / Claude Code MCP / CLI

The review loop every team knows

Architecture docs, RFCs, API specs, design reviews — they're all written in Markdown. But reviewing them looks like this:

  1. Write your RFC or architecture doc in Markdown
  2. Need team review? Paste it into Google Docs
  3. Teammates leave inline questions, approval threads, change requests
  4. Export as .docx, convert back to Markdown — formatting breaks
  5. Save as .docx again to extract comments — your AI can't read them

Every session. For every doc. And when you paste that Markdown into Claude Code — every review thread, approval, and decision is gone. AI tools can't read Google Docs comments.

Comments created with Limn stay anchored to the text in your repository — readable by Claude Code and other AI tools, no export required.

See it on real docs

Three documents with pre-seeded review threads — open without an account.

RFC / proposal review
tc39/proposal-temporal

A TC39 proposal that rewrites how JavaScript handles dates and times — with pre-seeded review threads already open.

View →
AI workflow docs review
anthropics/anthropic-cookbook

Anthropic's collection of Claude recipes — see how teams review AI tooling documentation with inline threads.

View →
Open-source docs review
sveltejs/svelte

Svelte's README and architecture docs reviewed with inline threads — a living conversation alongside the source.

View →

Two ways to start

Pick the path that fits your workflow — both converge on the same review experience.

Open source with GitHub

  1. Paste any GitHub file URL at /open — or use limn.sh/view?repo=…&file=…
  2. Copy the badge markdown shown automatically in the viewer
  3. Paste into your README — every visitor can now comment
Add to your README →

Enterprise with GitLab

  1. Sign in via GitLab OAuth, or paste a public GitLab URL at /open
  2. For private repos: add a GitLab PAT in Settings → Integrations
  3. Share the viewer URL with colleagues — they use the same PAT flow or sign in via GitLab
Connect GitLab →

PR comments are not documentation

When a PR merges, every comment on it is effectively archived. The Markdown file it edited has no record of what was discussed.

PR #247 Merged & closed
reviewer Why 24h? That seems long for tokens
author Legacy decision — probably should revisit
PR merged · thread locked · 8 clicks to find
Slack #eng 3 months ago
alice Should token expiry really be 24h? Legal flagged it
bob let's change to 1h
Buried under 4,000 messages
auth.md Live thread
Claude 24h may violate compliance — legal should review
alice Legal confirmed: must be 1h. PR #291 in progress
bob PR merged. Resolving ✓

Claude with and without Limn

Same file. Same prompt.

Without Limn
Review auth.md and flag any risks
Claude
The authentication service looks reasonable. The 24-hour token expiry is a common pattern — it balances security with user experience well.
Does not know alice flagged 24h expiry as a compliance issue 3 days ago.
vs
With Limn MCP
Review auth.md and flag any risks
Claude
I can see alice flagged the 24h token expiry as a compliance risk 3 days ago, and legal confirmed it should be 1h. Here's a patch:
- All tokens expire after 24 hours + All tokens expire after 1 hour

Features

01

Text-anchored threads, not line numbers

Each thread is anchored to a text fingerprint — selected text plus surrounding context. When the file changes, the anchor fuzzy-matches back to position. When text is gone, the thread becomes detached rather than silently wrong.

02

VS Code extension with gutter UI

Open any .md file and threads appear in the editor gutter — same feel as GitHub code review. Reply and resolve without leaving the editor. Thread count shows in the status bar and file explorer badge.

Install from VS Code Marketplace →
03

MCP server for Claude Code

Add one line to .claude/mcp.json and every file Claude reads comes with your team's open threads as built-in context. Claude can post AI-attributed comments, surface stale discussions, and suggest resolutions.

"limn": { "command": "npx @limn/mcp" }
# Claude now reads before every file:
→ alice (2d): "24h expiry flagged by legal…"
→ bob (1d): "+1, updating in PR #291 now"
→ 1 open thread · 0 resolved
04

GitHub App for org-wide awareness

When a PR touches a Markdown file with open threads, the bot posts a summary with deep links to each thread. Teams stay aware of doc feedback without manually checking a separate tool.

05

Self-hostable, one command

All comments stay in your infrastructure. GitLab EE on-prem, air-gapped networks, SAML SSO. No data leaves your environment.

# docker-compose.yml included
docker compose up

How it works

1

Web viewer

Paste any GitHub or GitLab URL. Markdown renders with threads inline. Select text to start a comment — no install needed.

2

VS Code

Install the extension. Open any .md file. Threads load in the gutter. Right-click a selection → Add Limn comment.

3

Claude Code

Add the MCP server to .claude/mcp.json. Every file Claude reads includes your team's open threads as context.

4

CLI

npx @limn/cli show docs/arch.md — view threads in the terminal, export JSON, find stale discussions.

Common questions

How is this different from GitHub PR review comments?

PR comments are tied to a specific pull request. Once the PR merges, those comments are effectively archived — the Markdown file itself has no record of the discussion. Limn threads live at the file URL and persist across all commits. No PR required.

How does Claude Code read my comments?

Add one line to .claude/mcp.json and Limn's MCP server automatically injects open threads as context before every file Claude reads. Claude sees your team's open discussions and can reply to them. It's not magic — it's just context.

Who can see my comments?

Public repos: anyone who loads the file URL can read threads. Private repos: only users who can access the file can read threads (GitLab OAuth or PAT required). Comments are stored in Limn's database, not committed to your repo.

Free
  • Unlimited threads on public repos
  • MCP server for Claude Code
  • VS Code extension
  • Unlimited collaborators

No credit card. No expiry.

Individual $9/mo
  • Everything in free, plus
  • Private repo access
  • Slack notifications soon
  • Comment export soon

Billing coming soon — private repos currently open during early access.

The conversation belongs next to the text.

Not scattered across Slack, closed PRs, and Confluence pages.

Free for public repos. No credit card required.