Show HN: Cairn – self-hosted Shape Up tool with a code-aware PM agent Cairn, a self-hosted Shape Up project management tool with a code-aware PM agent, launched on Hacker News. The tool uses an AI agent to triage feedback, deduplicate against the real codebase, and shape roadmaps, requiring users to bring their own Anthropic API key. It is source-available, runs as a single Node process with embedded SQLite, and offers one-click deployment on Render or Docker Compose. The hard part of building software moved from how to what. Cairn is the PM agent that turns a dense, scattered stream of feedback into a roadmap you can actually reason about — open, self-hosted, built on Shape Up. cairnpm.com https://cairnpm.com · Self-host /cairnpm/cairn/blob/main/DEPLOY.md · Roadmap /cairnpm/cairn/blob/main/ROADMAP.md · How the agent works /cairnpm/cairn/blob/main/docs/intake.md · Contributing /cairnpm/cairn/blob/main/CONTRIBUTING.md AI made shipping cheap: how to build something is no longer the bottleneck. The scarce skill now is deciding what to build — and in what order — in a roadmap that fills up faster than anyone can read it. Cairn is built for that exact moment: an agent does the sorting read, deduplicate, shape, route so your judgment goes to the decision, not the pile. 🪨 An agent, not a form. Paste a Slack thread, a bug report, or a whole meeting transcript. The intake agent extracts the distinct signals, recontextualizes each one, deduplicates against the backlog, and proposes where it belongs — you confirm. Writing only ever happens on confirmation. 🔍 Grounded in your real code. Link your product repo read-only GitHub App or a local path and the agent checks what's actually shipped before it shapes: it dedupes against reality — citing file:line , not a stale ticket — grounds each pitch in the real architecture, and answers "is X built yet?" by reconciling the roadmap with the code. Zero-egress: the repo is grepped locally, never sent anywhere. 🧗 Shape Up, natively. Pitches with a real problem and an appetite, a betting table to choose what's worth doing, hills to track in-flight work, frozen scope once a bet is placed. The method is the product, not a template. 🧹 Anti feature-factory. No artificial caps, no vanity metrics. The backlog is meant to stay small : duplicates get merged, noise gets discarded, shaping is a discipline — not a place where requests go to die. 🔌 Bring your own LLM key. The agent runs on your Anthropic key. No data detour through us — there is no "us" in the loop. 🏠 Self-hosted, you own the data. One Node process, one embedded SQLite file. No external database, no telemetry, no account on someone else's server. 🔓 Source-available. Read every line, audit it, run it for free forever. It even becomes Apache-2.0 over time see License license . Intake | Conversational agent: triage → clarify → propose → commit. Reads .docx /images, splits transcripts into N features, dedupes, attributes every change. | Code-aware | Link the product repo; the intake greps it to dedupe against what's shipped and ground specs. Read-only, zero-egress — GitHub App short-lived tokens, self-host manifest flow or a local clone. | Backlog | Shaped features with problem · appetite · solution · rabbit holes · no-gos. Manually-assigned shapers. | Betting table | Collaborative deliberation: members vote, the owner validates → it bets features and opens a hill. | Hills | In-flight cycles with builders, periods and frozen scope. | Workspace | Email + password auth, token invitations, roles, avatars, full attribution/audit trail. | Cairn is a single container backed by an embedded SQLite file — no external database. Bring an Anthropic API key or add it later in the UI and a place to keep /data . Pick whichever fits: One-click on Render: Docker Compose recommended for your own server : git clone https://github.com/cairnpm/cairn && cd cairn cp .env.example .env set NUXT SESSION PASSWORD and your Anthropic key docker compose up -d → http://localhost:3000 Also supported — Fly.io , plain Docker , backups and env vars: see DEPLOY.md . Prebuilt images are published to ghcr.io/cairnpm/cairn .First boot creates a single owner account — ceo@cairn.local / cairn — change the password right away. The workspace starts empty ; set CAIRN SEED DEMO=1 to load a demo backlog/hills/team for a tour. pnpm install echo 'ANTHROPIC API KEY=sk-ant-…' .env pnpm dev http://localhost:3000 pnpm test:members hermetic auth/invitations test suite cairn is a thin HTTP client over the running server, so an agent can ground itself on the roadmap and feed signal into the intake — no second write path. export CAIRN URL=http://localhost:3000 export CAIRN EMAIL=agent@your-workspace use a DEDICATED, least-privilege account: export CAIRN PASSWORD=… the cached session can hit any endpoint it's a member of pnpm exec cairn features --status shaping reads: features / feature