local-first · MIT
AI が止まっても、
作業は消えない。
セッションが落ちても、relay run <id> 一発で context が SQLite から戻る。Claude Code / Codex / Gemini を、正しい repo で起動。データはあなたのマシンの中だけ。
Problem
既存ツールは、個人 × 多リポ × AI 実行可能 を満たさない
作業の散在
コード TODO、GitHub issue、セッション、ノート — 横断ビューが存在しない
context 復元コスト
数日後に再開するたびに、repo の状態把握に数分を失う
AI タスク蒸発
Claude Code の TodoWrite は session 終了で消える。git にも残らない
象限の不在
Linear はチーム前提、Things は AI 非対応。個人 × 多リポ × AI 実行可能の象限を埋めるツールがなかった
40+リポを持つ個人にとって、タスクの置き場所は常に分散している。code TODO、GitHub issue / PR、Claude Code セッションの TodoWrite、.agents/*.md ノート — それぞれ別の場所に、横断ビューは存在しない。
AI コーディング固有の問題もある。Claude Code の TodoWrite は session が閉じれば消える。数日後に同じ repo を再開するたびに、コンテキスト復元で数分を失う。
Linear・GitHub Projects はチーム共有前提。Things は AI 実行に踏み込まない。TodoWrite はセッション内に閉じる。個人 × 多リポ × AI 実行可能 — その象限を埋めるツールは、これまでなかった。
Key Features
タスクは「実行可能ユニット」になる
relay は単なるタスクリストではない。各タスクが
(repo, agent, prompt, files, context) を持ち、
一発で該当 repo に Claude Code / Codex / Gemini を起動できる。
-
15 ソースを横断インデックス化
code-todo / github-issue / github-pr / gh-notification / gh-run-failure / gh-project-card / git-interrupted / git-stash / orphan-branch / claude / codex / gemini / cursor セッション / agents-note / manual。
UNIQUE(source_type, source_id)で重複なく ingest。 -
relay run — AI agent を正しい repo で即起動
relay run <id>でタスクの assignee に応じた agent を 該当 repo の cwd で起動。Codex は--resumeパリティ対応 (F-2)、 prompt と files も自動で渡す。 -
中断した作業を、そのまま再開できる
Claude Code Stop hook が自動で
relay context saveを呼び、 branch・HEAD SHA・dirty files・TodoWrite summary を退避。後日relay runで同じセッションを resume できる。 -
セッションが SQLite に残る
Claude / Codex / Gemini / Cursor のセッション履歴を
sessionsテーブルで保持。タスク → session、 session → タスクへの双方向ナビ。メッセージ単位の rendered/raw markdown トグル付き。 -
/insights — ローカルで動く分析ダッシュボード
WFR (Work-in-Flow Rate) / throughput / stale tasks / repo activity / sync reliability を
/insightsでグラフ可視化。 外部送信ゼロ、すべてローカル完結で集計。 -
13 種のテーマプリセット
dark / light / sunset / matrix / ocean / notebook / blueprint / washi / sketch / midnight / mist / solar / paper。
prefers-color-scheme連動、テーマ picker で即切替。 -
CLI と Web UI — 同じ SQLite を共有
relay today/relay lsの CLI とhttp://127.0.0.1:7340の Web UI は同一 SQLite を直接参照。 どちらから操作しても矛盾しない。 -
データはすべてローカル、外部送信ゼロ
~/.relay/db.sqliteに保存。外部依存はgh/git/rgのみ。 認証不要。クラウド同期は意図的に範囲外。 -
40+ リポ・900 タスクで sync 3 秒以内
relay sync全件 ~2.4–2.8s、relay today~64ms (MacBook Air 実測)。SSE ストリームでアダプタ単位の進捗を表示。
13 themes
あなたのデータは、あなたのマシンの中にある。forever.Your data stays on your machine. Forever.
How it works
15 のアダプタが、1 つの SQLite に流れ込む
各アダプタは fetch() で TaskInput[] を返すシンプルなインタフェース。
UNIQUE(source_type, source_id) により再 ingest は重複なし。
Code 1
- code-todo
rgで TODO / FIXME / HACK / XXX を全スキャン
GitHub 5
- github-issuegh CLI 経由で owned repo の issue
- github-prPR (レビュー待ち含む)
- gh-notification未読通知をタスク化
- gh-run-failureActions 失敗を検知
- gh-project-cardProject v2 カード
Git states 3
- git-interruptedrebase / merge / cherry-pick の中断
- git-stashstash されたままの変更
- orphan-branchPR の付いていない放置ブランチ
AI sessions 4
- claude
~/.claude/projects/**/*.jsonlの TodoWrite - codexCodex セッションの plan・chat
- geminiGemini セッションのタスク
- cursorCursor セッションの TODO
Notes & Manual 2
- agents-note
.agents/*.mdの- [ ]チェックボックス - manual
relay addによる手動入力
Agents
- claude-code
claude --resume <sid> - codex
codex --resume '<prompt>' - gemini
gemini '<prompt>' - self
$EDITOR <repo>
Compare
他のツールとの位置づけ
relay は Linear / GitHub Projects の置き換えではなく、補完関係。 両者がカバーしない「個人 × 多リポ × AI 実行可能」を埋める。
| 観点 | Linear | GitHub Projects | TodoWrite | relay |
|---|---|---|---|---|
| 横断リポ | ||||
| AI 実行可能 | session 内のみ | |||
| コンテキスト復元 | ||||
| ローカルファースト | ||||
| セッション resume | Codex/Claude | |||
| ローカル分析ダッシュボード | /insights | |||
| 個人多事業主の量に耐える | ||||
| マルチエージェント中立 | Claude のみ | Claude / Codex / Gemini | ||
| データがマシンの外に出ない | SaaS 必須 | GitHub 必須 | session 経由 | SQLite ローカル |
※ 比較表は README ベース。Linear / GitHub Projects はチーム共有・プロジェクト管理で引き続き有用。relay は個人の横断ハブとして共存する設計。
Quickstart
数分でローカルに立ち上がる
Bun ≥ 1.1 と gh CLI があれば導入完了。
→ Bun のインストール
relay quickstart
初回 sync + today view まで一気通貫
詳細手順を表示
# 1. install dependencies
bun install
# 2. build the Web UI once (served by `relay web`)
cd web/nextjs && bun install && bun run build && cd ../..
# 3. initialize ~/.relay/ (config + SQLite schema)
relay init
# 4. first sync + today view (one-shot)
relay quickstart
# 5. daily use
relay today # N picks for today
relay web # http://127.0.0.1:7340
relay run <task-id> # launch agent in the right repo
# 6. (optional) wire Claude Code Stop hook for context save
relay hook install
さらに詳しいコマンド (manual add / snooze / context save / daemon) は SPEC.md を参照。
Architecture
薄く速く、依存を持たない
外部 SaaS への送信ゼロ。CLI と Web は同じ SQLite を直接共有し、 HTTP ラウンドトリップは Web からの mutation のみ。
-
Bun ≥ 1.1 — ビルドステップ不要、即起動
bun:sqliteによる同期 IO。ビルドステップ不要でbun run src/cli.tsがそのまま動く。 -
Hono on Bun — 単一プロセスで低メモリ
Web バックエンドは Hono の単一プロセス。
/api/sync/streamは SSE でアダプタ単位の進捗を流す。 -
Next.js 15 + React 19 — 静的配信、サーバー不要
静的エクスポートして
web/nextjs/out/に。バックエンドが/でそのまま配信する。 -
sessions テーブル — AI セッションを永続化して再開
Claude / Codex / Gemini / Cursor のセッションを SQLite に永続化。タスク↔session 双方向ナビ対応。
-
SQLite — インストール不要、1 ファイル完結
すべては
~/.relay/db.sqliteに集約。schema_versionでマイグレーション管理。 -
gh + rg + git — 外部依存 3 つのみ
外部依存はこの 3 つのみ。GitHub 認証は
gh authに委譲、コード scan は ripgrep に任せる。
FAQ
よくある質問
データは ~/.relay/db.sqlite にのみ保存され、外部送信はゼロ。Bun が動く macOS / Linux / WSL で動作し、MIT ライセンスで無料利用可能。
データはどこに保存されますか?
すべて ~/.relay/db.sqlite (環境変数 RELAY_HOME で上書き可) に保存されます。
外部 SaaS への送信はなく、認証も不要。バックアップが必要なら relay export --json
で JSON スナップショットを取得できます。
Codex CLI / Gemini CLI との関係は?
relay は agent の置き換えではなく 起動装置 です。タスクの
assignee に応じて claude / codex /
gemini バイナリを該当 repo の cwd で spawn し、prompt と
context summary を渡します。各 CLI 自体の挙動には介入しません。
Codex は --resume パリティ対応済み。
Claude Code の TodoWrite と何が違う?
TodoWrite は セッション内 のチェックリストで、session が閉じれば消えます。
relay は Stop hook で TodoWrite を claude_session_todo タスクとして
SQLite に退避 し、後日 relay run で同じ session を resume
できるようにします。さらに 40+リポを横断した俯瞰ビューも提供します。
チームで使えますか?
v0.1 は 個人多事業主向けのローカルファースト設計です。マルチユーザーや
共有は明示的に non-goal。ただし、仕事 Mac / 個人 Mac の往復用に
relay export --json ↔ relay import --json
の JSON スナップショット同期 (last-writer-wins) は対応しています。
どの OS で動きますか?
Bun が動く環境 — macOS / Linux / WSL を想定しています。実測ベンチは macOS (MacBook Air)
で取得。Windows ネイティブは現状未検証です。gh CLI と
rg (ripgrep) が PATH にあれば追加依存はありません。
Screen reader / 低視力環境では使えますか?
Web UI (relay web) が主要な操作インタフェースです。
semantic HTML、status / priority 信号への role="img" + aria-label、
focus-visible リング、prefers-contrast: more 対応を備え、
screen reader (NVDA / JAWS / VoiceOver) でも操作可能です。
キーボードのみでも全操作をカバーします。
マルチマシン間で同期できますか?
クラウド同期は意図的に non-goal ですが、仕事 Mac ↔ 個人 Mac の往復には
relay export --json で JSON スナップショットを出力し、
別マシンで relay import --json で取り込む方法が使えます (last-writer-wins)。
テーマを変更できますか?
Web UI には 13 種のテーマプリセット (dark / light / sunset / matrix / ocean /
notebook / blueprint / washi / sketch / midnight / mist / solar / paper) が
あり、theme picker で即切替できます。prefers-color-scheme にも連動します。