local-first · MIT

AI が止まっても、
作業は消えない。

セッションが落ちても、relay run <id> 一発で context が SQLite から戻る。Claude Code / Codex / Gemini を、正しい repo で起動。データはあなたのマシンの中だけ。

  • Scale40+ repos / 898 tasks
  • Full sync2.4s p50
  • Today view64ms p50

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-todorg で 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- [ ] チェックボックス
  • manualrelay add による手動入力

Agents

  • claude-codeclaude --resume <sid>
  • codexcodex --resume '<prompt>'
  • geminigemini '<prompt>'
  • self$EDITOR <repo>

Compare

他のツールとの位置づけ

relay は Linear / GitHub Projects の置き換えではなく、補完関係。 両者がカバーしない「個人 × 多リポ × AI 実行可能」を埋める。

Linear / GitHub Projects / Claude Code TodoWrite / relay の比較
観点 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 のインストール

TL;DR
bash
relay quickstart

初回 sync + today view まで一気通貫

詳細手順を表示
bash
# 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 --jsonrelay 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 にも連動します。

今日から使える。必要なのは Bun と gh だけ。

MIT ライセンス・完全無料。外部送信なし。