AgentEd
시각적 마크다운 편집기로, 프론트매터와 토큰 추정 기능 제공
A free, open-source macOS app that saves your conversations with AI (Claude Code, Codex, Gemini, ChatGPT) on your own Mac and lets you search them later by keyword or date. Everything stays in a local SQLite database. Also works as a read-only MCP server so your AI can search past chats.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗日本語 | English
AIとの会話を、ぜんぶ残して、あとで探せる。
Claude Code・Codex・Gemini・ChatGPT との会話を、自分の Mac の中に1か所で保存する、無料のオープンソースアプリ(macOS)。キーワードや日付で探せるほか、AIに探させることもできます。
※画面は、作り話の会話です。
会社などが用意した SyncLane サーバーに自分で接続した場合だけ、選んだ会話を送ります(任意。下の「サーバーに送る」)。
| 取り込み元 | 方法 |
|---|---|
| Claude Code | アプリ起動中、30秒ごとに自動(~/.claude/projects) |
| Codex(Codex アプリ・Codex CLI) | アプリ起動中、30秒ごとに自動(~/.codex/sessions) |
| Gemini(ウェブ版)・ChatGPT(ウェブ版) | Chrome 拡張(手順) |
| Gemini CLI | アプリ起動中、30秒ごとに自動(~/.gemini/tmp) |
Antigravity CLI(agy) | アプリ起動中、30秒ごとに自動(~/.gemini/antigravity-cli) |
コマンド(CLI)は、配布版(dmg)には入っていません。ソースをビルドして使います(下の「開発」)。過去の会話を日付で取り込み直すときなどに使います。配布版のアプリは、画面と、AI から検索するための MCP(--mcp)だけです。
保存するのは、あなたの入力と、AIのテキストの応答です。ツールの実行結果と、AIの思考の過程は保存しません。
mrktools.app/ja/synclane/download/ から、dmg をダウンロードして、SyncLane.app を /Applications に入れます。署名・公証済みで、新しい版は、アプリが自動で知らせます。
アプリを起動しておくと、30秒ごとに、Claude Code の新しい会話(~/.claude/projects)と、Codex の新しい会話(~/.codex/sessions)、Gemini CLI の新しい会話(~/.gemini/tmp)、Antigravity CLI の新しい会話(~/.gemini/antigravity-cli)を取り込みます。
Web 版の Gemini(gemini.google.com)と ChatGPT(chatgpt.com)の会話は、ローカルにファイルが無いので、Chrome 拡張で取り込みます。
ストアを使わず、手で入れることもできます(開発者向け):
拡張をダウンロードして、展開します。~/Downloads/SyncLane-extension フォルダができます(このフォルダは、消さないでください。消すと、拡張が動かなくなります)。
https://mrktools.app/downloads/synclane/SyncLane-extension.zip
Chrome で chrome://extensions を開き、右上の「デベロッパー モード」をオンにします。
「パッケージ化されていない拡張機能を読み込む」で、~/Downloads/SyncLane-extension を選びます。
127.0.0.1)だけです。外部のサーバーには送りません。アプリが起動していなければ、あとで送り直します。extension/ フォルダを選びます。zip は、sh scripts/pack-extension.sh で作ります。chrome://extensions で、「SyncLane for AI chats」のスイッチがオンか)、SyncLane アプリが起動しているか、タブを再読み込みしたかを、確かめてください。拡張のアイコンに「×」が出ていれば、アプリに届いていません。extension/README.md を見てください。※画面は、作り話の会話です。
全文検索の索引つきで、日本語も、部分一致で探せます。索引で探せるのは3文字以上の語で、それより短い語は、本文を直接探します。索引のために、データベースが、おおよそ4割大きくなります。
一覧の題名の右にある ✎ から、題名を書き換えられます。Claude Code が付ける題名は、会話の最初に1度だけで、話題が変わっても更新されないためです。
会社などが用意した SyncLane サーバーに接続すると、選んだ会話を、そのサーバーへ HTTPS で送れます。チームで過去の経緯を探せるようになります。サーバーは別に提供されるもので、このリポジトリには含まれません。いまは、提供していません。
synclane sync mode manual にするか、除外のルールで絞ってください。password=… や …_key=… のような代入を、[MASKED:種類] に置き換えます。伏せるのは送る分だけで、手元の記録と検索は元のままです。迷ったら伏せる側に倒しているので、秘密でないものを伏せることもあります。mask-allow.txt。# で始まる行はコメント)。値が完全に一致したときだけ通ります。書いた値は、そのまま外に出ます。mask-block.txt)。普通の行はその文字列そのもの(大文字小文字を区別)、名前= や 名前: のように = か : で終わる行は続く値も伏せる、re: で始まる行は正規表現です。読めない正規表現の行は無視します。mask-allow.txt と同じ値があるときは、こちらが優先です。synclane server connect https://sync.example.com # ブラウザで承認する
synclane sync list # 会話と、送るかどうかの一覧
synclane sync include 12 14 --visibility org # 会話を選んで送る(org は、サーバーの全員に見える)
synclane sync exclude 13 # この会話は送らない
synclane sync mode auto # 除外した会話以外の全部を送る
synclane sync # 送る(アプリは自動で送ります)
synclane server disconnect
Claude Code に登録します。
claude mcp add --scope user synclane -- /Applications/SyncLane.app/Contents/MacOS/synclane-app --mcp
Claude アプリ(デスクトップ)には、claude_desktop_config.json に次を足します(設定画面の「MCP」タブでもコピーできます)。
{ "mcpServers": { "synclane": { "command": "/Applications/SyncLane.app/Contents/MacOS/synclane-app", "args": ["--mcp"] } } }
登録すると、AIに「SyncLane に聞いて」と頼むだけで、保存した会話から探して答えます。
AI が使えるツールは、次の4つです(すべて読み取り専用)。
| ツール | できること |
|---|---|
search_conversations | キーワードで会話を探す。project を付けると、そのプロジェクトの会話だけに絞る |
get_session | 見つけた会話の、前後を読む |
list_projects | プロジェクトの一覧(名前・場所・会話の数・使っているツール・最終更新) |
get_project_context | プロジェクトの最近の状況(直近の会話の題名と、最後のやりとり) |
登録すると、そのAIは、保存した会話をすべて読めます。パスワードや機密のコードが入っていないか、先に確認してください。
保存済みのイベントを日付ごとのタイムラインで確認できる最小画面を用意している。
cargo run --manifest-path src-tauri/Cargo.toml --offline
画面のデータは既定のSQLite(~/Library/Application Support/SyncLane/synclane.db)から読み込む。
作者は、Windows で動かして確かめていません。 配布版(インストーラー)は macOS 用だけです。保存先やブラウザを開く処理など、Windows 向けの分岐はコードに入っていますが、ビルドが通るか、画面が動くかは、確認していません。試す場合は、うまくいかなかった点を、Issues で教えてください。
必要なもの: Rust(MSVC 版)、Visual Studio Build Tools(「C++ によるデスクトップ開発」)、Git。画面(Tauri)には、WebView2 も必要です(Windows 11 には、はじめから入っています)。
git clone https://github.com/MR-TABATA/SyncLane.git
cd SyncLane
# コマンド(画面なし)
cargo build --release
.\target\release\synclane.exe --help
# 画面
cargo run --manifest-path src-tauri/Cargo.toml
保存先は %LOCALAPPDATA%\SyncLane\synclane.db です。取り込み元は、%USERPROFILE%\.claude\projects(Claude Code)、%USERPROFILE%\.codex\sessions(Codex)、%USERPROFILE%\.gemini\tmp(Gemini CLI)です。
cargo test --offline
ネットワークに接続できる環境では、通常の cargo test も使用できる。
データベースの既定の保存先は次のとおり。
~/Library/Application Support/SyncLane/synclane.db
開発中は --db で保存先を変更できる。
cargo run -- init
cargo run -- status
cargo run -- --db /tmp/synclane.db init
cargo run -- --db /tmp/synclane.db status
cargo run -- --db /tmp/synclane.db timeline --limit 20
cargo run -- --db /tmp/synclane.db timeline --date 2026-10-13 --limit 20
cargo run -- import claude --date 2026-10-13
cargo run -- --db /tmp/synclane.db import claude --root ~/.claude/projects --date 2026-10-13
SYNCLANE_DB 環境変数でも保存先を指定できる。
SYNCLANE_DB=/tmp/synclane.db cargo run -- status
import claude は ~/.claude/projects/**/*.jsonl を読み、ユーザー入力とAIのテキスト応答を sessions / events に追記する。ツール実行結果やthinkingブロックは、現段階では保存しない。
cargo run -- import claude --date YYYY-MM-DD
cargo run -- import claude --all
アプリは、~/.gemini/tmp/**/*.jsonl を、30秒ごとに読みます(大きさが変わったファイルだけ、読み直します)。Gemini CLI は、同じ会話を何度も別のファイルに書き出す(実際の記録で、会話 6 つに対して、ファイルが 2 万個あった)ので、同じ会話の複写は、いちばん新しい 1 つだけを読み、同じ発言の途中経過は、最後の版を採ります。コマンドの import gemini も、同じ記録を読み、ユーザー入力とGeminiのテキスト応答を追記する。Gemini CLIの更新ログは同じメッセージ配列を繰り返すことがあるため、メッセージIDで重複を除外する。
cargo run -- import gemini --date YYYY-MM-DD
cargo run -- import gemini --all
--date を省略しても全イベントが対象になるが、明示的に取り込む場合は --all を使う。--date と --all は同時に指定できない。取り込みは冪等で、同じログを再実行してもイベントは重複しない。
アプリは、~/.gemini/antigravity-cli/conversations/*.db(会話ごとに SQLite が 1 つ)を、30秒ごとに読みます。書き換わった会話だけを読み直し、読み取り専用で開くので、Antigravity の記録は書き換えません。保存するのは、あなたの発言と AI の回答だけです。ツールの実行・考え中の表示は保存しません。プロジェクトは、まだ取れないので、一律「Antigravity」と表示します。コマンドの import はありません(アプリの自動取り込みだけです)。
~/.gemini/antigravity/conversations/*.pb)は、取り込めません。 記録が暗号化されているらしく、読めないためです。CLI 版(agy)の会話が対象です。import codex は ~/.codex/sessions/**/rollout-*.jsonl(ChatGPT の Codex アプリと Codex CLI のログ)を読み、ユーザーの発言(UserMessage)と Codex の回答(AgentMessage)を追記する。考え中の表示・コマンドの実行・ファイルの変更などは保存しない。プロジェクトは、ログの作業フォルダ(cwd)から付け、題名は最初の発言から付ける。
cargo run -- import codex --date YYYY-MM-DD
cargo run -- import codex --all
timeline は保存済みイベントを新しい順に表示する。Tauri画面の表示モデルを固めるための初期版。
cargo run -- --db /tmp/synclane.db timeline --date YYYY-MM-DD --limit 20
SQLiteの設計は docs/sqlite-schema.md を参照。
主なテーブルは次のとおり。
sessions: AIツールのセッションevents: ユーザー入力・AI応答・ツール実行などの原イベントjournals: AIが生成した日記analyses: 期間ごとの傾向分析tags / event_tags: タグsettings: アプリ設定イベントは追記型で、source_tool と source_event_id の組み合わせで重複登録を防ぐ。
MIT(LICENSE)