Automatic worklog and rollup tool that aggregates GitHub, local Git, and Notion activity into Notion pages.
cairn collects a single developer's daily activity — GitHub PRs and reviews, local Git commits across multiple repositories, and Notion edits — and publishes a Korean-language summary to a Notion page each evening. Weekly and monthly rollups are produced automatically.
The tool runs locally on macOS via launchd and uses the Claude Agent SDK (no direct Anthropic API calls). Source code is never sent to external services.
v0.9.0 — all 8 stages complete (CLI + launchd + daily / weekly / monthly + setup guide). 1.0.0 is deferred until robustness work (multi-account GitHub, sleep-aware backfill) lands. Current state: docs/progress/.
- macOS (launchd)
- Node 24 LTS (see .nvmrc)
- pnpm 10+
- Claude Pro/Max subscription (for Agent SDK quota)
- GitHub fine-grained PAT (read-only)
- Notion internal integration token
Full step-by-step guide: docs/SETUP.md (한국어).
Quick start:
git clone <repo-url> cairn
cd cairn
nvm use
pnpm install
cp .env.example .env
cp worklog.config.example.json worklog.config.json
# fill in tokens in .env and absolute repo paths in worklog.config.json
pnpm build
node packages/core/dist/main.js --mode=daily --date=$(date +%F) --dry-run
ops/install.sh # register daily + weekly + monthly launchd jobs| Script | Description |
|---|---|
pnpm typecheck |
tsc --noEmit |
pnpm lint |
ESLint |
pnpm lint:fix |
ESLint with autofix |
pnpm format |
Prettier write |
pnpm format:check |
Prettier check |
pnpm build |
Build all packages (@cairn/core → packages/core/dist/) |
pnpm start |
Run packages/core/dist/main.js |
node packages/core/dist/main.js --mode=daily --date=$(date +%F) --dry-runModes: daily, weekly, monthly. Sources can be limited with repeated --source= flags (github, local-git, notion).
| Path | Contents |
|---|---|
| docs/SETUP.md (한국어) | Step-by-step setup guide |
| docs/plans/ | Living design plans |
| docs/progress/ | Work log entries and stage progress |
| docs/decisions/ | Architecture Decision Records |
| CLAUDE.md | Working context for Claude Code |
| .claude/rules/ | Project rules |
AGPL-3.0-or-later. Copyright (C) 2026 Donghyeok Lim.
Source code is public for reference and forks. Any derivative work — including modifications and any service that exposes this software over a network — must also be licensed under AGPL-3.0-or-later and provide its full source to users.