shyn について
shynはApple Silicon搭載Mac向けのローカルメモリーMCPサーバーです。画面、会議、閲覧履歴、メモを取り込み、AIアシスタントが検索できるようにします。暗号化したデータを端末内に保存し、キーワードとセマンティック検索を組み合わせます。
主な機能
- 01画面上のテキストを検索可能な履歴として保存
- 02会議をローカル録音し話者ラベル付きで文字起こし
- 03Chrome、Safariの履歴とApple Notesを取り込み
- 04キーワードとオンデバイスのセマンティック検索
- 05取り込みの一時停止、アプリ除外、メモリー削除
活用シーン
- 01会議で決まった内容を探す
- 02以前読んだウェブページや資料を見つける
- 03アシスタント経由でメモや文字起こし全文を取得
MCP 対応
shynは標準のstdio MCPサーバーを通じて、メモリー検索、文書取得、記録、削除、状態確認のツールをクライアントに提供します。ファイル検索のオプション機能には、別アプリのthatoneが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
shyn — Mac の記憶をいつでもすぐに ☀️
shyn.day · macOS(Apple Silicon)· プレアルファ · Elastic License 2.0
Shyn は、Mac のための常時稼働する記憶のパートナーです。 画面、会議、ブラウジング、メモなど、見たもの、聞いたもの、読んだものを静かに記憶し、あなたの人生について、AI アシスタントがすべてを思い出せるようにします。Claude に「昨日の朝会で何を決めた?」や「例のリテンションバグについてどこで読んだ?」と尋ねれば、インターネット上の情報ではなく、あなた自身の履歴に基づいた答えが返ってきます。
記憶はローカルに保存されます。プライバシーを最優先に設計されています。 shyn が記録するものはすべて、Mac 上の暗号化データベースに保存されます。記録した内容がアップロード、同期されたり、外部に送信されたりすることはありません。マシンの外に出るのは、あなた自身が質問することを選んだときに、その質問に関連するわずかな情報だけです。選んだ AI に送信されます。
ベータ期間中、shyn は匿名の使用データも送信します。 shyn はさまざまなバージョンの macOS、ハードウェア、権限の状態で動作しており、組み合わせによって、再現もテストもできないバグが発生します。そうしたバグに遭遇した人のほとんどは、報告せずにアプリを終了してしまいます。そのため shyn は、どの機能が使われているか、何がクラッシュしたか、バージョン、処理時間の数値を、あなた個人とは結び付かないランダム ID に関連付けて報告します。
shyn が記録した内容は一切含まれません。画面のテキストも、文字起こしも、検索内容も、個人情報も含まれません。初回起動時に選択でき、設定のワンクリックでいつでも変更できます。オフにすれば、shyn は上記の約束どおりです。あなた自身の質問以外がマシンの外に出ることはありません。
ステータス:プレアルファ。 Shyn はまだ新しく、急速に開発が進んでおり、macOS 専用です(Apple Silicon)。未完成な部分や、互換性を損なう変更があることをご了承ください。インストールは Homebrew cask の 2 つのコマンド(
brew install+shyn setup)で行います。アプリは自己署名されており、Apple による公証は受けていません。shyn setupによってローカルで再署名されます。ワンクリックでインストールできる公証済みバージョンは、今後のロードマップに含まれています。
shyn を選ぶ理由
- 🧠 何でも、すぐに思い出せます。 ローカルソケット経由で、記録したすべての内容を対象に、キーワード検索(FTS5/BM25)とセマンティック検索(オンデバイスの埋め込み)を組み合わせたハイブリッド検索をミリ秒単位で実行できます。
- 👁️ 画面を常時記憶。 軽量なエージェントが作業中の画面上のテキストを記録します。読んだもの、書いたもの、クリックしたものが検索可能な履歴になります。
- 🎙️ 会議の内容も記憶。 Shyn は通話を検出し、双方の音声をローカルで録音して、Whisper を使ってオンデバイスで文字起こしし、話者ラベル付きの文字起こしを記憶に保存します。音声がソケットを通ることはなく、文字起こしが保存された時点で消去されます。テキストは残り、音声データは消えます。カレンダーへのアクセスを許可すると、Mac 内蔵のカレンダーストアから該当する予定を読み取り、文字起こしに予定名(「スプリント朝会」など)や参加者を追加します。Google API は使わず、データがマシンの外に出ることもありません。
- 🌐 デジタル上の足跡をつなげます。 Chrome と Safari の履歴、Apple Notes は自動的に取り込まれ、ファイルと PDF は必要に応じて取り込めます。
- ☀️ ひと目でわかる安心感。 すりガラス風のメニューバーコンパニオンで、すべてが動作していることを確認できます。メニューバーの太陽アイコンで 4 つの状態をリアルタイム表示し、会議を録音している間は赤い点が点滅します。ひそかに動作することはありません。
- 🔒 同意を最優先した記録。 録音の開始を通知し、猶予時間内ならキャンセルできます。ワンクリック、または
shyn pause 30mですべてを一時停止できます。アプリを除外したり、どんなデータでも削除したりできます。forgetはバイト単位で正直です。データは完全に消去され、ソフト削除ではありません。 - ⚡ すぐ使える設計。 キーワード検索は起動直後から使えます。埋め込みモデルはバックグラウンドでダウンロードされ、検索結果は気付かないうちにハイブリッド検索へアップグレードされます。モデルが利用開始の妨げになることはありません。
仕組み
バックグラウンドデーモンが暗号化された SQLite インデックス(キーは macOS
キーチェーンに保存)を管理し、Unix ソケット経由で JSON-RPC を提供します。キャプチャエージェント(画面、会議)とソースリーダー(Chrome、Safari、Apple Notes)からデータを受け取ります。
AI は 6 つの MCP ツール(および任意で追加できる 7 つ目のツール、
search_files。以下を参照)を通じてアクセスします。仕組みはこれだけです。1 つのプライベートなインデックスに、さまざまな記憶を集め、MCP に対応するあらゆるアシスタントから利用できます。
| ツール | AI が取得できる情報 |
|---|---|
search_memory(query, …) | 出典情報付きのハイブリッド検索。中心となるツールです |
recent_activity(hours?, …) | 状況把握に使えるタイムライン。曖昧な質問への最初の呼び出しに最適です |
get_document(uri | doc_id, …) | 抜粋ではなく、ドキュメント全体(完全な文字起こしやノート全体など)を読み取ります |
remember(content, tags?) | 「これを記録する」という明示的な記憶 |
forget(doc_id | source | time-range, confirm) | 確実に削除します。confirm: true がない場合は拒否します |
memory_status() | ヘルス状態、インデックス件数、モデルのダウンロード状況、接続済みソース |
search_files(query, kinds?, folder?, limit?) | 任意:別アプリの thatone を使って、意味に基づいて自分のファイルを検索します |
ファイル検索(任意)
search_files は、Mac 上のファイル(画像、PDF、ドキュメント、音声、動画、
テキスト)を内容に基づいて検索します。別アプリの
thatone(ソースコード公開、
Elastic License 2.0、Apple Silicon 搭載 macOS 用、プレアルファ版)が同じ Mac 上で実行されている必要があります。shyn 自体はファイルをインデックス化しません。ファイルのインデックスは thatone が管理します。
- 送信される情報: クエリテキストと、任意の
kinds、folder、limitのみが thatone のローカルソケットに送られます。どちらのプログラムもネットワーク経由で情報を送信しません。結果(ファイルパスと、自分のファイルからの短い抜粋)は、search_memoryの結果と同じように AI クライアントへ渡されます。 - 返される情報: ファイルパス(写真項目は「in: Apple Photos,
name」の形式で表示)、種類、録音や動画内の時間、PDF のページ番号、および最大 300 文字の抜粋です。これらは
search_memoryの結果と同じように AI のコンテキストに入るため、thatone をインストールして実行するかどうかは任意です。 - 無効化: 設定はありません。thatone を終了またはアンインストールすると、約 20 秒以内にツールが表示されなくなります。shyn はその間隔で再確認します。
- ソケット: 既定のパスは
~/Library/Application Support/thatone/thatone.sockです。 環境変数SHYN_FILE_SEARCH_SOCKETで上書きできます。 - 状態:
memory_statusの最終行は、file search: ready (thatone)、file search: not running (thatone)、またはfile search: not installed (thatone)のいずれかです。
クイックスタート
Homebrew でインストール(推奨)
brew install --cask shyn-labs/tap/shyn
shyn setup
コマンドは 2 つです。cask は固定されたチェックサムと照合してダウンロードを検証し、
shyn setup はすべてを起動して、☀️ メニューバーウィンドウから権限の設定を案内します。Node、Xcode、リポジトリのクローンは不要です。cask の注意事項をお読みください。実際の細かい条件(ローカル署名、隔離属性、EDR)が記載されています。後で更新するには、brew upgrade shyn && shyn setup を実行します。
またはソースからビルド(コントリビューター向け)
pnpm install
# start the daemon (first run downloads the embedding model in the
# background; search works before that finishes)
pnpm --filter @shyn/daemon start
MCP サーバーを Claude Code に登録します。
claude mcp add shyn -- pnpm --dir <path-to-shyn-repo> --filter @shyn/mcp-client exec tsx src/main.ts
<path-to-shyn-repo> を、このリポジトリをクローンした絶対パス(例:リポジトリ内で pwd を実行したときの出力)に置き換えます。
何かを入力して、Claude に質問します。
pnpm shyn ingest /absolute/path/to/some/folder
絶対パスを使用してください。これはドキュメントの uri として保存されます。取り込みには、単一のファイル(.md、.txt、.pdf)または走査対象のディレクトリを指定できます。ブラウザーの履歴と Apple Notes は、いつでも pnpm shyn sync で取り込めます。
フルコンパニオン(デーモン+エージェント+メニューバー)をワンコマンドで
pnpm setup
以上です。依存関係をインストールし、安定したローカル署名 ID を作成して、
デーモンのバンドル+キャプチャエージェント+ステータスアプリをビルドし、
すべてを launchd で起動します。冪等性があるため、git pull のたびに再実行できます。
内部では、デーモン、画面エージェント、会議エージェント、メニューバーのステータスアプリを準備して起動し、
再起動後も動作するようにして、ログを
~/Library/Logs/shyn/ に記録します。macOS から求められる権限を付与してください(会議にはマイク+
システムオーディオ、画面キャプチャには画面収録+アクセシビリティ、Safari/メモを使いたい場合に限りフルディスクアクセスが必要です。それ以外は
権限がなくてもすべて動作し、ダークパターンも煩わしい通知もありません)。
pnpm shyn uninstall # stop + remove, keep data
pnpm shyn uninstall --purge # scorched earth: data, logs, keys
Claude Desktop
pnpm build:mcpb を実行すると dist/shyn.mcpb が生成されます。これを Claude Desktop の
「設定」→「拡張機能」ページにドラッグしてください。(MCP クライアントを登録します。上記の
install でデーモンを起動しておく必要があります。)
完全ローカルモデルを含む、その他のクライアント
Shyn は標準的な stdio MCP サーバーです。あらゆる MCP クライアントで動作し、メモリを 有料 API に送信する必要は一切ありません。これまでにテストしたもの:
-
Claude Code/Claude Desktop — 普段使いのクライアントです。促されなくても、いつメモリを参照すべきかを判断する能力は最高クラスです。
-
Open WebUI 経由でローカル実行する Qwen3 14B(Apple Silicon 上の MLX)。MCP を OpenAPI に橋渡しする mcpo を使用します。
uvx mcpo --port 8600 -- "$HOME/Library/Application Support/shyn/bin/shyn-mcp" # then add http://localhost:8600 as a tool server in Open WebUI
テストで分かった率直な所見:検索品質はどの環境でも同じです。ランキング処理はモデルではなくデーモン内で実行されます。異なるのはドライバーです。
小型のローカルモデルは、明示的に指示すれば(「メモリを検索して…」など)適切に回答しますが、自分で検索する判断はあまり得意ではありません。また、思考モードのモデルでは、推論を抑える必要がある場合があります(Qwen3 では
/no_think)。デーモンと併せて 14B モデルを使う場合、共有メモリは約 10GB を見込んでください。
日常の操作
pnpm shyn status # daemon + agents + index health
pnpm shyn search "that one thing" # search from the terminal
pnpm shyn pause 30m # pause all capture (2h, until-tomorrow too); resume to undo
pnpm shyn exclude com.1password.1password # never capture an app
pnpm shyn meeting status # live meeting controls (stop | cancel too)
shyn voice forget-self # delete shyn's sample of your voice
…またはターミナルを使わず、メニューバーの ☀️ をクリックしてください。
細かな注意点(皆さんに手間をかけさせないよう、細部まで気を配っています)
- 保存データの暗号化は、盗難に遭ったディスクや漏えいしたバックアップからデータを保護します。 ご自身のユーザー権限で動作するマルウェアからは保護できません。この点は明確にお伝えしています。
- 会議:チャンネルベースの話者ラベル(話者分離がオフのときのデフォルトは
Me:/Others:)、録音開始前にキャンセル可能な 10 秒の猶予、180 分のハード上限、取り込み時に一時音声データを バイト単位で消去します。会議室、講演、スピーカーフォンなど、Shyn が自分の音声を拾えない場面では、メニューバーの **「録音を開始」**をクリックしてください。短いフォームが表示され、内容と参加者を尋ねます。どちらも任意で、回答はタイトルと参加者リストになります(ターミナルでも同様です:shyn meeting start "Day 5 review" --with "Maya R, Dev P")。すべての会議について、Mac が使用していたタイムゾーンも記録されるため、旅行後でも検索できます。文字起こしのデフォルトは Whispersmallです。このサイズでは、ヒンディー語/ヒングリッシュやその他の英語以外の音声が、英語の要約として出力されることがよくあります(隠さず明記しています)。多言語の文字起こしを大幅に改善するには、メニューバーのポップオーバーで「会議の言語」の下にある **「多言語」**をクリックしてください(約 3GB のダウンロードが一度だけ行われ、すぐに開始します。ポップオーバーには、次の会議で使用するモデルが明確に表示されます)。手動で切り替える場合は、~/Library/Application Support/shyn/capture.jsonに"meeting": { "whisperModel": "large-v3_turbo" }を設定してください(ここでは WhisperKit の任意のモデル名を使用できます。認識されない名前はポップオーバーに「custom」と表示されます)。 設定は再起動なしでホットリロードされます。文字起こしでは、各チャンネルの無音部分を除いた音声区間だけを、一度に複数デコードします("chunkedTranscription": falseにするとチャンネル全体のデコードに戻ります)。会議ごとのログには、各チャンネルで音声が含まれていた割合が記録されます。実行中はアイドルスリープを抑止しますが、ノート PC の蓋を閉じるとスリープして一時停止します。文字起こし中はポップオーバーにその旨が表示されます。手元のファイルでデコーダーの所要時間を測定したり、比較したりするには、次を実行してください:shyn-meeting transcribe mic.wav system.wav [--whole](ステージング済みのshyn-meeting.app内のバイナリ)。 話者の分離(メニューバー、「Speaker separation」)。通話では、相手側がSpeaker 1、Speaker 2…に分けられます。あなたのマイクはMe:のままで、1 対 1 の通話で声が 1 人だけの場合は、参加者の名前が表示されます。対面では、マイクに入った全員の声が分離され、shyn がどの声があなたのものかを判別します。デフォルトでは話者の分離はオフであり、オンにするまで有効にならない点にご注意ください。 shyn は、対面の会議であなたを識別するために、あなた自身の声紋のみを保存します。声紋は通話から学習されます。shyn voice forget-selfを実行すると削除されます。 他の人の声は、話者に番号を割り当てるために使われた後、破棄されます。 - 会議タイトルは任意で、複数の情報源から取得します:まずカレンダーのイベント(カレンダーへのアクセスが必要です)、次に通話ウィンドウのタイトル(アクセシビリティへのアクセスが必要です)、どちらも取得できない場合は「アプリ名 · 日付」です。すべてのアクセスを拒否しても、会議の文字起こしは問題なく行われます。
- メニューバーアプリは 1 日に 1 回、GitHub で新しいリリースを確認します — 最新バージョン番号を取得するだけの、認証なしのリクエストです。あなたやあなたのマシンに関する情報が送信されることはありません。capture.json の
"updateCheck": falseで無効にできます。 - ベータ期間中の匿名利用データ。 送信するのはデーモンのみで、初回起動時の確認に回答した後に限られます。送信されるのは、使用された機能、クラッシュ、バージョンと OS、所要時間の数値、およびあなたと結び付かないランダムな ID です。送信されないのは、shyn が取り込んだあらゆる情報です。検索テキスト、ドキュメントのタイトル、ファイルパスも含まれます(送信前に、エラーメッセージから認証情報とホームディレクトリのパスが除去されます)。イベント名は
analytics.tsに定義された固定リストから取得されます。そのリストを確認してください。送信対象はそのリストに記載されたものだけです。設定で無効にすると、直ちに送信が停止し、送信待ちのデータも破棄されます。キャプチャエージェント自体がネットワークリクエストを送信することは一切ありません。 - 権限が必要なソースは、何も取得せずに黙っているのではなく、平易な言葉で理由を示して利用不可であることを通知します。
- 評価ハーネス(
pnpm eval:keyword、eval:hybrid)は、事前にコミットされた CI 用の合格・不合格基準に対して、合成コーパスを実行します。これはベンチマークではなく、その数値は精度を示すものではありません。 - 既知の制約や注意点は
docs/known-issues.mdに記載されています — 誠実さも機能の一部です。
shyn が決して行わないこと
- 取り込んだ記憶を外部に送信すること。 画面上のテキスト、文字起こし、ドキュメント、検索クエリは、どのような設定でも Mac の外に出ることはありません。外部への通信は、あなたが質問した内容に関連する抜粋、メニューバーアプリによる GitHub へのバージョン確認、および以下に記載する匿名のベータ利用データの 3 つに限られます。
- 検索した内容を保存すること。 使用統計はローカルデータベースに件数として保存されます(1 日あたりの検索回数という数値であり、クエリそのものは保存されません)。ベータ期間中に報告される情報も同様で、検索が行われたことは送信されますが、何を検索したかは送信されません。
- 選択肢を確認する前に何かを送信すること。 ベータ期間中、shyn は匿名の利用データとクラッシュデータを報告しますが、初回起動時に確認を求め、イベントが 1 件でも送信待ちになる前に回答を受け取ります。拒否すると識別子さえ生成されません。設定でいつでも変更できます。送信対象の内容については、上記の「ベータ期間中の匿名利用データ」をご覧ください。
- コンテンツを外部に送信すること。 不具合が起きた場合は
shyn diagnoseを実行してください。バージョン、サービスの状態、エラーログの行を含む、コピーして貼り付けられるブロックが出力されます。ドキュメントの内容は一切含まれません。どこに貼り付けるかは、あなた自身が選べます。
ライセンス
Elastic License 2.0(ソースコードを閲覧できます)。
簡単に言うと、個人でも職場でも、無料で使用、閲覧、変更、共有できます。ただし、shyn を販売したり、商用サービスまたはマネージドサービスとして他者に提供したりすることはできません。その権利はプロジェクトに留保されています。全文は 1 ページで、読む価値があります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。