{"slug": "show-hn-cairn-self-hosted-shape-up-tool-with-a-code-aware-pm-agent", "title": "Show HN: Cairn – self-hosted Shape Up tool with a code-aware PM agent", "summary": "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.", "body_md": "**The hard part of building software moved from how to what.**\n\nCairn 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.\n\n[ cairnpm.com](https://cairnpm.com) ·\n\n[Self-host](/cairnpm/cairn/blob/main/DEPLOY.md)·\n\n[Roadmap](/cairnpm/cairn/blob/main/ROADMAP.md)·\n\n[How the agent works](/cairnpm/cairn/blob/main/docs/intake.md)·\n\n[Contributing](/cairnpm/cairn/blob/main/CONTRIBUTING.md)\n\nAI made shipping cheap: *how* to build something is no longer the bottleneck. The\nscarce skill now is deciding **what** to build — and in what order — in a roadmap\nthat fills up faster than anyone can read it. Cairn is built for that exact moment:\n**an agent does the sorting** (read, deduplicate, shape, route) so your judgment\ngoes to the decision, not the pile.\n\n**🪨 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`\n\n, 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)).\n\nIntake |\nConversational agent: triage → clarify → propose → commit. Reads `.docx` /images, splits transcripts into N features, dedupes, attributes every change. |\nCode-aware |\nLink 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. |\nBacklog |\nShaped features with problem · appetite · solution · rabbit holes · no-gos. Manually-assigned shapers. |\nBetting table |\nCollaborative deliberation: members vote, the owner validates → it bets features and opens a hill. |\nHills |\nIn-flight cycles with builders, periods and frozen scope. |\nWorkspace |\nEmail + password auth, token invitations, roles, avatars, full attribution/audit trail. |\n\nCairn is a **single container** backed by an embedded SQLite file — no external\ndatabase. Bring an Anthropic API key (or add it later in the UI) and a place to\nkeep `/data`\n\n. Pick whichever fits:\n\n**One-click on Render:**\n\n**Docker Compose** (recommended for your own server):\n\n```\ngit clone https://github.com/cairnpm/cairn && cd cairn\ncp .env.example .env        # set NUXT_SESSION_PASSWORD (and your Anthropic key)\ndocker compose up -d        # → http://localhost:3000\n```\n\nAlso supported — **Fly.io**, plain **Docker**, backups and env vars: see\n** DEPLOY.md**. Prebuilt images are published to\n\n`ghcr.io/cairnpm/cairn`\n\n.First boot creates a single owner account — `ceo@cairn.local`\n\n/ `cairn`\n\n— change the\npassword right away. The workspace starts **empty**; set `CAIRN_SEED_DEMO=1`\n\nto load a\ndemo backlog/hills/team for a tour.\n\n```\npnpm install\necho 'ANTHROPIC_API_KEY=sk-ant-…' > .env\npnpm dev            # http://localhost:3000\npnpm test:members   # hermetic auth/invitations test suite\n```\n\n`cairn`\n\nis a thin HTTP client over the running server, so an agent can ground itself\non the roadmap and feed signal into the intake — no second write path.\n\n```\nexport CAIRN_URL=http://localhost:3000\nexport CAIRN_EMAIL=agent@your-workspace   # use a DEDICATED, least-privilege account:\nexport CAIRN_PASSWORD=…                    # the cached session can hit any endpoint it's a member of\n\npnpm exec cairn features --status shaping  # reads: features / feature <id> / hills / betting / overview\npnpm exec cairn capture \"les users veulent le mode sombre\"   # → {session_id, state, agent_message, proposal}\npnpm exec cairn capture --session <id> \"priorité haute\"      # answer a clarify turn\npnpm exec cairn commit --session <id>                        # finalise a single proposal\npnpm exec cairn commit-batch --session <id> --segments a,b   # finalise a decomposed (batch_review) capture\n```\n\nOutput is JSON by default (`--pretty`\n\nfor humans). The session cookie is cached in\n`./.cairn/`\n\n**relative to the working directory** — run from the workspace root. The\ncommand surface is a closed allowlist (reads + intake); it's an agent guardrail, not a\nsecurity boundary — a real boundary is the account's own permissions.\n\nCairn is free to **run, read, modify and self-host** — for any purpose except\nre-selling it as a competing hosted product. That single restriction is what lets\na small team keep building it in the open instead of behind a closed door.\n\nIt's licensed under the ** Functional Source License** (FSL-1.1-ALv2):\ntwo years after each release, that version automatically becomes\n\n**Apache-2.0**. So the protection is temporary and the openness is permanent — you're never locked out of your own infrastructure, and our infra is never in your critical path.\n\nToday everything is free and self-hostable. Team/organisation capabilities (SSO, multi-workspace, advanced integrations) may later require a license key — the core always runs without one. See the\n\n[roadmap].\n\n(Vue 3) + Nitro — SSR app and single write gateway[Nuxt 4](https://nuxt.com)— embedded database, zero native deps`node:sqlite`\n\n+ Tailwind v4 — dark, calm UI[shadcn-vue](https://www.shadcn-vue.com)via a thin provider interface (swap-able; deterministic offline fallback)[Anthropic Claude](https://www.anthropic.com)\n\nIssues and PRs are welcome — see ** CONTRIBUTING.md** for the\nsetup, commit convention and how routing decisions are tested. Be kind; assume\ngood intent.\n\n[FSL-1.1-ALv2](/cairnpm/cairn/blob/main/LICENSE) — source-available now, **Apache-2.0** two years after\neach release. © 2026 The Cairn Authors. \"Cairn\" and the logo are trademarks and\nare not covered by the code license.", "url": "https://wpnews.pro/news/show-hn-cairn-self-hosted-shape-up-tool-with-a-code-aware-pm-agent", "canonical_source": "https://github.com/cairnpm/cairn", "published_at": "2026-08-19 10:24:05+00:00", "updated_at": "2026-08-19 10:43:25.634210+00:00", "lang": "en", "topics": ["ai-agents", "ai-products", "developer-tools"], "entities": ["Cairn", "Anthropic", "Render", "Docker Compose", "Fly.io", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-cairn-self-hosted-shape-up-tool-with-a-code-aware-pm-agent", "markdown": "https://wpnews.pro/news/show-hn-cairn-self-hosted-shape-up-tool-with-a-code-aware-pm-agent.md", "text": "https://wpnews.pro/news/show-hn-cairn-self-hosted-shape-up-tool-with-a-code-aware-pm-agent.txt", "jsonld": "https://wpnews.pro/news/show-hn-cairn-self-hosted-shape-up-tool-with-a-code-aware-pm-agent.jsonld"}}