Skip to content

ldhbenecia/cairn

Repository files navigation

cairn

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.

Status

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/.

Requirements

  • 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

Setup

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

Commands

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/corepackages/core/dist/)
pnpm start Run packages/core/dist/main.js

Usage

node packages/core/dist/main.js --mode=daily --date=$(date +%F) --dry-run

Modes: daily, weekly, monthly. Sources can be limited with repeated --source= flags (github, local-git, notion).

Documentation

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

License

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.

About

Personal NestJS-based worklog tool that aggregates daily activity from GitHub, local Git, and Notion into Notion pages, with weekly/monthly rollups via Claude Agent SDK.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors