@saihm/mcp-server-pro について
@saihm/mcp-server-proは、セッション、モデル、ベンダーをまたいで使えるAIアシスタント向けの永続メモリーを提供します。メモリーは端末から送信される前に暗号化され、高速な呼び出し用に暗号化されていないローカルコピーを任意で保持できます。
主な機能
- 01セッションやAIクライアントをまたぐメモリー
- 02端末外へ送信する前の暗号化
- 03呼び出しを速める任意のローカルコピー
- 04メモリーの共有、共有解除、完全削除
- 05クライアントが起動するローカルMCPサーバー
活用シーン
- 01後のアシスタントセッションで情報を呼び出す
- 02異なるAIクライアント間で同じメモリーを使う
- 03別のエージェントと共有したメモリーを後から取り消す
MCP 対応
AIクライアントが起動するローカルMCPサーバーとして動作します。READMEには複数のMCPクライアント向け設定が記載され、サーバーはエンドポイントURLを介してSAIHMに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @saihm/mcp-server-proSAIHM_ENDPOINT_URLSAIHM operator endpoint. Optional: defaults to the hosted service at https://saihm.net/mcp.SAIHM_SELF_JOINSelf-join is ON by default: the saihm_join tool creates a non-custodial identity on this device and starts activating its free memory, which needs one browser sign-in; no master secret is needed. Set to '0' to suppress the tool.SAIHM_MASTER_SECRET_FILEシークレットPath to a mode-600 file holding a 64+ hex-char master secret. Only needed if you opt out of self-join, are restoring an existing identity, or keep your key file outside SAIHM_HOME. Never transmitted.SAIHM_IDENTITYシークレットAn identity token written by export-identity: brings an existing SAIHM identity to this machine or a hosted agent environment without copying a key file. Set together with SAIHM_IDENTITY_PASSPHRASE; leave both unset to use this machine's own identity.SAIHM_IDENTITY_PASSPHRASEシークレットThe passphrase export-identity generated for SAIHM_IDENTITY. The two together are the identity: store it as a secret.SAIHM_TIERThe plan this identity onboards with (FREE, PRO, PRO_FAST, ENTERPRISE, ENTERPRISE_FAST). Defaults to FREE while self-join is on (the default); set it for a paid plan, and with SAIHM_SELF_JOIN=0 for every plan, FREE included. An export-identity token carries its own, which a non-empty value here overrides.SAIHM_PAYMENT_METHODThe payment rail of a paid plan, e.g. stripe. Required for a paid SAIHM_TIER unless an export-identity token carries it.SAIHM_EPHEMERAL_HOMESet it (e.g. 1) where the home directory is discarded at session end, or is a CI runner's home that later jobs can reach: the join then refuses to create a key, and SAIHM keeps no recall copy and no sign-in there. A copy or sign-in already written there stays until you delete it: the recall.* and session.* files in SAIHM_HOME (~/.saihm by default). 0 declares a home that is kept and that only you use, and overrides the host's own signal. Unset: detected where the host or CI runner says so (the REFERENCE lists the markers).SAIHM_HOMEBase dir for the self-join identity file ($SAIHM_HOME/free-identity.key, mode 600). Defaults to ~/.saihm. Give a full path: a relative one (a JSON config does not expand ~) is refused at start. Also the fallback state directory when SAIHM_STATE_DIR is unset.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
9掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| content | string | はい | 記憶する情報 |
| cellId | string | いいえ | 更新する既存セルの ID(16 進数)。省略すると新しいセルを作成します |
詳細
SAIHM — AI エージェントのためのメモリ
AI エージェントのためのポータブルなメモリです。 アシスタントは、セッションをまたいでも、モデルをまたいでも、ベンダーをまたいでも、大切なことを覚えています。他の人のエージェントとメモリを共有し、取り戻したり、完全に消去したりできます。
![]() | ![]() |
| ▶ SAIHMの概要(短編) 6分 | ▶ SAIHMの概要(詳細版) 30分 |
気に入っていただけましたか? 動画に「いいね!」を付け、SAIHM チャンネルに登録し、 ベル 🔔 の通知をオンにして、新しい動画や更新情報をお受け取りください。
読むほうがお好みですか? SAIHM マニュアル(PDF)は、SAIHM と SHM の意思決定者向けガイドです。
AI アシスタントはセッションが終了すると、すべてを忘れてしまいます。SAIHM は、そうならないメモリを提供します。別のアシスタント、別のモデル、あるいは別の会社の製品を使うときにも、そのメモリを引き継げます。
お使いのマシンから送信される前に暗号化されます。 ストレージにも、SAIHM にも、あなたのメモリを読むことはできません。オンにする設定はありません。標準セットアップのように、鍵をファイルに保存すると、SAIHM はすばやく呼び出せるよう、暗号化されていないメモリのコピーもお使いのデバイスに保存します。これを読めるのはあなたのアカウントだけで、1つの設定で無効にできます。
無料で開始 — 1つのコマンドで
npx -y @saihm/mcp-server-pro free-join
カードもウォレットも不要です。実在する人であることを確認する簡単なサインインに、一度だけブラウザーと GitHub アカウントが必要です。
- コマンドがこのマシン上でキーを作成し、リンクと短いコードを表示します。初回実行時はパッケージをダウンロードするため、表示されるまで1分ほどかかる場合があります。
- リンクを開き、GitHub にサインインして、コードを入力し、承認します。
- コマンドは自動で完了し、キーの保存先を表示します。
次にSAIHM を AI クライアントに追加し、再起動して、**「SAIHM の記憶を思い出して」**と言ってください。これで利用できます。
GitHub アカウントをお持ちでない場合は? 代わりに https://saihm.net/free から始めてください。Google または Microsoft でサインインすると、このページにキーとアシスタントを接続する手順が表示されます。手順に従ってから、**「SAIHM の記憶を思い出して」**と言ってください。キーは大切に保管してください。あなたの記憶にアクセスする唯一のキーです。キーはすでに有効なので、「SAIHM に参加」はスキップしてください。参加する必要はなく、それでも実行すると新しいキーは作成されません。
アシスタントにセットアップを任せますか? まず SAIHM を AI クライアントにインストールしてください。Claude Code の場合はClaude Codeにあるコマンドを1つ実行し、それ以外のクライアントについては以下をご覧ください。クライアントを再起動してから、アシスタントに**「SAIHM に参加」**と言ってください。すでに SAIHM の ID をお持ちかどうかを尋ねた後、同じセットアップを実行し、承認用の同じリンクとコードを表示します。
**参加が中断された場合は、**同じマシンで再度参加してください。すでに作成されたキーが再利用されるため、同じ ID を保持できます。参加をキャンセルするには、処理を停止してコードを入力しないでください。コードは自動的に期限切れになります。いずれの場合も、キーファイルは保管してください。 参加の詳細。
SAIHM を AI クライアントに追加
Claude Code、Gemini CLI、OpenAI Agents SDK 向けの以下の設定は、テスト済みのものとして掲載しています(確認済みのクライアント)。それ以外のクライアントについては、各ベンダーの公式ドキュメントに基づいて説明しています。すべての設定は、ベンダーの裁量により変更される場合があります。
SAIHM は、AI クライアントが npx で起動するローカル MCP サーバーとしてマシン上で動作するため、Node.js 20.19 以降が必要です。パッケージは npm の @saihm/mcp-server-pro で、公式の MCP Registry には io.github.SAIHM-Admin/saihm-mcp-server-pro として登録されています。
お使いのクライアントを以下から見つけ、該当するブロックを追加して、クライアントを再起動してください。3つのヒントをご紹介します。
- ファイルの有効性を保ってください。 末尾のカンマや、メールやウェブページからコピーしたノーブレークスペースがあると、JSON 設定ファイルが無効になります。プレーンテキストエディターを経由して貼り付けてください。
- 起動時の設定を残してください。 初回起動時にパッケージがダウンロードされます。ブロックで起動時間を長めに設定している場合は、その設定を残してください。ツールが初回から表示されるようになります。
- 最初に一度ダウンロードしてください。 ターミナルで
npx -y @saihm/mcp-server-pro --versionを実行してください。パッケージがダウンロードされ、バージョンが表示されて終了するため、クライアントの初回起動が速くなります。
各ブロックは、そのクライアントの公式ドキュメントに沿っています。リリースの前には毎回、Claude Code、Gemini CLI、OpenAI Agents SDK でこれらのブロックからサーバーを起動し、接続を確認しています。各クライアントの詳細についてはリファレンスをご覧ください。
このコンピューターで別の AI クライアントも追加しますか? ~/.saihm にあるキーが自動的に使われるため、ここで再度参加する必要はありません。ブロックを追加してクライアントを再起動し、*「SAIHM の記憶を思い出して」*と言ってください。最初のクライアントと同じ設定を指定してください。
- 別のフォルダーまたはファイルにあるキー: ブロック内で同じ
SAIHM_HOMEまたは同じSAIHM_MASTER_SECRET_FILEを設定します。 - 有料プラン: キーの保存場所(
~/.saihmを含む)にかかわらず、ブロックにSAIHM_TIERとSAIHM_PAYMENT_METHODを追加します。これらがない場合、新しいクライアントは無料プランでサインインします。
Claude Code(Anthropic)
1 つのコマンドで、すべてのプロジェクトに SAIHM を追加できます。
claude mcp add --env SAIHM_ENDPOINT_URL=https://saihm.net/mcp --transport stdio --scope user saihm -- npx -y @saihm/mcp-server-pro
最初の起動後にツールが表示されない場合は、サーバーの起動にもう少し時間をかけてください。
MCP_TIMEOUT=60000 claude を実行するか、ターミナルで npx -y @saihm/mcp-server-pro --version を一度実行してから、
Claude Code を再起動してください。claude mcp list で接続されているか確認できます。ウェブ版 Claude
Code については、ホストされたエージェント環境をご覧ください。
Claude Desktop(Anthropic)
Settings > Developer > Edit Config を開き、mcpServers の中に "saihm" エントリを追加してから、
Claude Desktop を終了して再度開いてください。
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" }
}
}
}
Claude Desktop はお使いのマシンにインストールされている Node.js でサーバーを起動するため、
先に Node.js をインストールしてください。初回にツールが表示されない場合は、ターミナルで
npx -y @saihm/mcp-server-pro --version を実行してから、Claude Desktop を終了して再度開いてください。
Codex CLI(OpenAI)
~/.codex/config.toml またはプロジェクトの .codex/config.toml に、次の内容を追加してください。
[mcp_servers.saihm]
command = "npx"
args = ["-y", "@saihm/mcp-server-pro"]
env = { SAIHM_ENDPOINT_URL = "https://saihm.net/mcp" }
startup_timeout_sec = 60
codex mcp list または Codex 内で /mcp を実行して確認してください。
OpenAI Agents SDK(Python)
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
async def main():
async with MCPServerStdio(
name="saihm",
params={
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": {"SAIHM_ENDPOINT_URL": "https://saihm.net/mcp"},
},
client_session_timeout_seconds=60,
) as saihm:
agent = Agent(name="Assistant", mcp_servers=[saihm])
result = await Runner.run(agent, "Recall my SAIHM memories.")
print(result.final_output)
asyncio.run(main())
60 秒のタイムアウトにより、初回の npx のダウンロードが完了するまで待機できます。シークレットは
コード内に直接記述せず、環境変数から渡してください。
Gemini CLI(Google)
~/.gemini/settings.json(すべてのプロジェクト)または .gemini/settings.json(1 つの
プロジェクト)に、次の内容を追加してください。
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" }
}
}
}
または、同じエントリを含む Gemini CLI 拡張機能をインストールしてください。
gemini extensions install https://github.com/SAIHM-Admin/saihm-mcp-server-pro。
Gemini CLI は信頼できるフォルダーで実行してください。ローカルサーバーを起動するのはそのフォルダー内のみです。
gemini mcp list または Gemini CLI 内で /mcp を実行して確認してください。
2026-06-18 以降、Google は Gemini CLI で個人の Google アカウントを利用できなくなりました。 個人アカウントでサインインすると、「This client is no longer supported for Gemini Code Assist for individuals」と表示されます。2026 年 10 月時点では、Gemini CLI は Gemini API キー、 または Gemini Code Assist Standard もしくは Enterprise ライセンスで引き続き利用できます。
Antigravity CLI(Google)
~/.gemini/config/mcp_config.json(すべてのプロジェクト)またはプロジェクト内の
.agents/mcp_config.json に、次の内容を追加してください。
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" }
}
}
}
Antigravity CLI 内で /mcp を入力すると、接続されているか確認できます。初回にツールが表示されない場合は、
ターミナルで npx -y @saihm/mcp-server-pro --version を実行してから、そこでサーバーを再読み込みしてください。
Grok Build(xAI)
~/.grok/config.toml またはプロジェクトの .grok/config.toml に、次の内容を追加してください。
[mcp_servers.saihm]
command = "npx"
args = ["-y", "@saihm/mcp-server-pro"]
env = { SAIHM_ENDPOINT_URL = "https://saihm.net/mcp" }
startup_timeout_sec = 60
Grok Build は ~/.claude.json またはプロジェクトの .mcp.json にある既存の saihm エントリも読み込むため、
別のクライアント用にすでに追加している場合は、この手順が不要なことがあります。grok mcp list または
grok mcp doctor saihm で確認してください。
VS Code の GitHub Copilot(Microsoft)
ワークスペースの .vscode/mcp.json またはユーザーの mcp.json(MCP:
Open User Configuration を実行)に、次の内容を追加してください。VS Code では mcpServers ではなく
servers を使用します。
{
"servers": {
"saihm": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" }
}
}
}
または、ターミナル(bash、zsh、または Command Prompt)からユーザープロファイルに追加してください。
code --add-mcp "{\"name\":\"saihm\",\"command\":\"npx\",\"args\":[\"-y\",\"@saihm/mcp-server-pro\"],\"env\":{\"SAIHM_ENDPOINT_URL\":\"https://saihm.net/mcp\"}}"
MCP: List Servers にサーバーが表示され、その Show Output アクションでログを確認できます。
初回にツールが表示されない場合は、ターミナルで npx -y @saihm/mcp-server-pro --version を実行してから、
MCP: List Servers でサーバーを再起動してください。
GitHub Copilot のクラウドエージェントについては、
ホストされたエージェント環境をご覧ください。
GitHub Copilot for enterprises(Microsoft)
会社で GitHub Copilot が実行できる MCP サーバーを決めている場合、エンタープライズのオーナーは SAIHM を許可できます。
-
会社で MCP の許可リストを管理している場合は、すでに登録されている項目と同じ形式で SAIHM を追加します。コマンドの項目があるリストでは、Copilot がすべてのローカルサーバーをいずれかの項目に一致させる必要があるためです。
-
コマンドの項目があるリストには、この README のセットアップブロックに記載されたコマンドを使って追加します。
{ "serverCommand": ["npx", "-y", "@saihm/mcp-server-pro"] }VS Code の MCP サーバーギャラリーでは、現在のバージョンに固定され、
-yを付けずに SAIHM がインストールされます。例:["npx", "@saihm/[email protected]"]。Copilot はコマンドと各引数を完全一致で照合するため、ユーザーが実行する形式をすべて登録してください。 -
コマンドの項目がないリストには、
{ "serverName": "saihm" }を追加し、ユーザーにはこの README のセットアップブロックを使って SAIHM を追加してもらいます。このブロックでは SAIHM にその名前が付けられます。VS Code のギャラリーからインストールした場合は別の名前になるため、この項目には一致しません。
-
-
エンタープライズ、または SAIHM を使用する組織で、MCP servers in Copilot ポリシーが有効になっていることを確認します。
会社で MCP サーバーをレジストリに限定している場合、公式 MCP Registry における SAIHM の ID は io.github.SAIHM-Admin/saihm-mcp-server-pro です。GitHub のエンタープライズ MCP 許可リストに関するガイドでは、項目の照合方法や変更をユーザーに反映させる方法など、残りの手順を説明しています。
標準セットアップと同様に、キーファイルを使う場合、SAIHM は各ユーザーのメモリの暗号化されていないコピーをデバイスに保存し、すばやく呼び出せるようにします。このコピーを読み取れるのは、そのユーザーのアカウントだけです。保存したくないユーザーは、仕組みで説明するように無効にできます。許可リストでユーザーに代わって無効にすることはできません。
Cline
Cline の MCP 設定にある既存の mcpServers オブジェクト内に "saihm" 項目を追加します。エディターで Cline パネルを開き、MCP Servers アイコンを選択してから、Configure > Configure MCP Servers を選択します。Cline CLI は ~/.cline/data/settings/cline_mcp_settings.json を読み取ります。または、CLINE_MCP_SETTINGS_PATH で指定されたファイルを読み取ります。
{
"mcpServers": {
"saihm": {
"command": "npx",
"args": ["-y", "@saihm/mcp-server-pro"],
"env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp" },
"timeout": 60
}
}
}
Cline では timeout の単位は秒です。最初の npx のダウンロードが完了する時間を確保するため、そのままにしてください。保存後、ツールが表示されない場合は、Cline の MCP 設定からサーバーを再起動してください。また、起動時にファイルを読み取る Cline CLI では、新しいセッションを開始してください。それでもツールが表示されない場合は、ターミナルで npx -y @saihm/mcp-server-pro --version を一度実行します。パッケージがダウンロードされ、バージョンが表示された後に終了します。その後、サーバーをもう一度再起動してください。
その他の MCP クライアント
Cursor や Windsurf など、mcpServers ブロックからローカルの MCP サーバーを実行するその他のクライアントでは、既存の mcpServers オブジェクト内に同じ "saihm" 項目を追加します。クライアントに起動時間の設定がある場合は、ドキュメントに記載された単位で約 1 分に設定してください。最初にツールが表示されない場合は、ターミナルで npx -y @saihm/mcp-server-pro --version を実行してから、クライアントを再起動してください。
エージェントフレームワーク
Python でエージェントを構築していますか? 同じ暗号化メモリを、主要なフレームワークに接続できます。各アダプターにはこのサーバーと同様に Node.js 20.19 以降が必要で、プロセス内で暗号化するため、Python がキーを保持することはありません。
| フレームワーク | 利用できる機能 | インストール |
|---|---|---|
| LangGraph | グラフ用の長期メモリストア | pip install saihm-langgraph (リポジトリ) |
| CrewAI | チーム全体で共有するメモリ | pip install saihm-crewai (リポジトリ) |
| LangChain | 自分で管理するチャット履歴 | pip install "saihm-adapters[langchain]" |
| LlamaIndex | チャットメモリと、RAG 用のリトリーバー | pip install "saihm-adapters[llamaindex]" と [rag] |
| AutoGen | エージェントが管理するメモリ | pip install "saihm-adapters[autogen]" |
saihm-adapters がすべてをまとめており、ライブデモも利用できます。
伝え方
アシスタントには自然な言葉で話しかけ、SAIHM の名前を指定すると、適切なツールを選んでくれます。毎回 SAIHM の名前を指定してください。Claude Code をはじめ、一部のアシスタントは独自のメモを保持しており、SAIHM を指定しないリクエストはそちらに送られる場合があります。チームで使える例をいくつか紹介します。
トークン効率を最大限に高めるため、SAIHM を積極的に使ってください。ファイルを読み直すのではなく、トピックごとに記憶を呼び出し、決定事項は決めるたびに保存してください。
請求サービスに関する私の SAIHM メモリだけを呼び出し、コードを書く前に、未決の決定事項と次のステップを 5 つの箇条書きで教えてください。
決定記録として SAIHM に記憶してください。Webhook の再試行では冪等性キーを使うこと。Dana が 2026-10-20 に決定しました。重複請求が 0.1% を超えた場合は見直してください。
SAIHM の不変条件を設定してください。SAIHM の消去を実行する前に必ず 2 回確認し、パスワード、キー、顧客の個人データは SAIHM に保存しないでください。
作業を終える前に、変更した内容とその理由、未解決の事項を SAIHM メモリに保存してください。そうすれば、私のキーを持つエージェントが明日作業を引き継げます。
リリース手順書に関する私の SAIHM メモリを、./identities/qa-agent.json にあるエージェントと共有してください。読み取り専用で、金曜日の 17:00 UTC まで有効にしてください。
顧客からデータ削除の依頼がありました。Acme Corp に言及している SAIHM メモリをすべて見つけて、それぞれ提示してください。私が確認した後、1 件ずつ消去してください。
この CI ジョブで、チームの SAIHM メモリ「release rules」を呼び出し、変更履歴がそのルールに違反した場合はジョブを失敗させてください。
共有の例では、同僚のアイデンティティレコードが必要です。このレコードは 1 つのコマンドで作成できます(同僚と共有するを参照)。CI の例では、ジョブ固有のアイデンティティが必要です。ホスト型エージェント環境に記載の手順で設定してください。
プロンプトの例や、約 20 個のエージェントに相当する作業を 3 つのエージェントロールで行った事例については、SAIHM マニュアルおよびCASE-STUDY.mdをご覧ください。
| ツール | 機能 |
|---|---|
saihm_remember | マシン上で暗号化してから保存します |
saihm_recall | 取得し、マシン上で復号します |
saihm_forget | 完全に消去します。 元に戻せません |
saihm_status | アイデンティティ、プラン、メモリ件数を表示します |
saihm_share | 有効期限を指定することもでき、1 つのメモリを 1 つのエージェントに許可します |
saihm_revoke_share | その許可を取り消します |
各ツールには AI ツールが読み取れるラベルが付いており、読み取り専用のツールとデータを破棄するツールが区別されています。そのため、破壊的な操作の前に「よろしいですか?」と確認するホストは、いつ確認すべきか判断できます。リファレンスにはすべてのツール一覧があります。
「忘れる」とは、本当に忘れることです。 そのメモリのキーが破棄されるため、保存されたコピーは、あなたにも、SAIHM にも、バックアップを持つ人にも、永久に読み取れなくなります。これが、SAIHM が GDPR 第 17 条の消去リクエストに対応する方法であり、操作を元に戻せない理由です。キーの破棄に関するサービスの記録が返されると、応答で消去完了が確認されます。
あなたの記憶はあなたのキーに紐づきます
あなたの記憶はコンピューターではなく、あなたのキーに紐づきます。そのため、どこへでも持ち運べます。 キーはあなたのマシン上で作成され、どこにも送信されません。だからこそ、ほかの誰にもあなたの記憶を読むことはできません。キーのファイルは安全な場所にコピーを保管してください。 SAIHM はキーを再発行できません。セットアップ時にファイルの場所が表示されます。有料プランにアップグレードしても、同じキーとすべての記憶がそのまま引き継がれます。
2 台目のコンピューターやホスト型エージェントを使いますか? 方法は 3 つあります。
-
どこでも同じ記憶を使う — キーのあるマシンで、次を実行します。
npx -y @saihm/mcp-server-pro export-identityあなただけが読めるファイルに、2 つの値が保存されます。
SAIHM_IDENTITY(封印されたあなたのキー)とSAIHM_IDENTITY_PASSPHRASE(キーを開くパスフレーズ)です。記憶を引き継ぎたい場所で、両方を環境変数またはシークレットとして設定してから、新しいセッションを開始します。そこで 「Join SAIHM」 と言わないでください。参加すると、空の新しい記憶が作成されます。この 2 つの値がそろって初めてあなたの ID になります。パスワードマネージャーに保管し、チャットやリポジトリには決して入れず、エクスポートファイルは削除してください。有料プランの場合は、まずID のエクスポートを参照してください。 -
キーのファイルをコピーする — サーバーの起動前に、もう一方のマシンの
~/.saihm/free-identity.keyに配置します(またはSAIHM_MASTER_SECRET_FILEにそのファイルを指定します)。1 台目のマシンと同じ設定を使用し(有料プランではSAIHM_TIERとSAIHM_PAYMENT_METHODも設定します)、「Recall my SAIHM memories.」 と言います。 -
仕事用と個人用を分ける — 2 台目のマシンでは新しく始め、代わりに共有します。例:「Share my SAIHM notes on the launch with the agent in ./identities/work-agent.json until 17:00 UTC.」 共有は取り消したり、有効期限を設定したりできるため、2 つの記憶を分けておけます。共有する側には、以下の手順で作成した相手の ID レコードが必要です。読む側に必要なのは、共有元のエージェント ID と記憶の cellId だけです。
同僚と共有する
同僚のエージェントと記憶を共有するには、相手に ID レコードを求めてください。相手はキーのあるマシンで、次のコマンドを 1 つ実行して作成します。
npx -y @saihm/mcp-server-pro identity-record qa-agent.json
このファイルに含まれるのは相手の公開鍵とエージェント ID だけなので、メールやチャットで安全に送れます。このファイルを使って相手の記憶を読んだり、変更したり、消去したりすることはできません。ファイルをプロジェクトに配置し、共有時にファイル名を指定します。例:「Share my SAIHM memory about the release runbook with the agent in ./identities/qa-agent.json, read-only, until Friday 17:00 UTC.」 エージェントはそのファイルを SAIHM に渡し、SAIHM はファイルからレコードを読み取ります。フルパスを指定するのが最も確実です。相対パスは、SAIHM サーバーが実行されているフォルダーから読み取られます。ファイルが第三者によって変更される可能性のある経路で届いた場合は、別の方法で同僚にエージェント ID を確認し、共有時にその ID をエージェントに伝えてください。そうすると、異なる ID が記載されたファイルは SAIHM に拒否されます。このレコードは export-identity ファイルとは別のものです。こちらは決して誰にも送らないでください。
共有した内容を読むために、同僚のエージェントに必要なのは、あなたのエージェント ID と、共有時に渡される記憶の cellId だけです。identity-record コマンドで表示されるエージェント ID は、自分で相手に送ってください。SAIHM は記憶を開く前に、その記憶とエージェント ID を照合します。また、どちらの AI クライアントが読み取る場合でも、テキストと構造化された結果の両方で、相手の記憶ではなく、あなたのエージェント ID が付いた別のエージェントの記憶として表示します。
ホスト型エージェント環境
ホスト型エージェントのセッションは通常、まっさらなマシンで開始され、終了時にホームディレクトリが破棄されるため、そこで作成したキーも一緒に失われます。代わりに自分の ID を持ち込みます。環境固有の設定で export-identity の2つの値を設定してください。チャットには絶対に入力しないでください。また、環境はセッション開始時に変数を読み込むため、新しいセッションを開始してください。サーバーはセッション内でローカルに実行され、saihm.net と npx 用の npm にアクセスできる必要があります。以下の手順は各ホスト独自のドキュメントに沿っています。リファレンスでは、プロキシと詳細な点を説明しています。CI ジョブもそのような環境の1つです。SAIHM_MASTER_SECRET_FILE で名前を指定したシークレットファイルとして専用のキーファイルを渡すか、2つの値をジョブのシークレットとして設定してください。SAIHM が認識しないランナー(認識するランナーはリファレンスに記載)では、SAIHM_EPHEMERAL_HOME=1 も設定してください。そうすると、SAIHM はメモリーのコピーもサインイン情報も保持しません。ランナーにすでに書き込まれたコピーやサインイン情報は、削除するまで残ります。~/.saihm(または SAIHM_HOME)にある recall. ファイルと session. ファイルが該当します。
-
Claude Code on the web — 環境の Environment variables に両方の値を追加します。その環境を使う人なら誰でも値を読めるため、自分だけが使う、信頼できるリポジトリ用の専用環境を使ってください。ネットワークアクセスに Custom を選択して
saihm.netを追加し、Also include default list of common package managers をオンにして、npxが引き続き npm にアクセスできるようにします。次に、リポジトリの.mcp.jsonで値を渡します。{ "mcpServers": { "saihm": { "command": "npx", "args": ["-y", "@saihm/mcp-server-pro"], "env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp", "SAIHM_IDENTITY": "${SAIHM_IDENTITY:-}", "SAIHM_IDENTITY_PASSPHRASE": "${SAIHM_IDENTITY_PASSPHRASE:-}", "SAIHM_TIER": "${SAIHM_TIER:-}", "SAIHM_PAYMENT_METHOD": "${SAIHM_PAYMENT_METHOD:-}", "CLAUDE_CODE_REMOTE": "${CLAUDE_CODE_REMOTE:-}" } } } }同じファイルは自分のマシンでも引き続き使えます。
SAIHM_MASTER_SECRET_FILEやSAIHM_MASTER_SECRET_HEXは絶対に追加しないでください。キーをコミットしてしまうか、ID と競合します。ツールが表示されない場合は、セッションでclaude mcp listを実行し、環境変数にMCP_TIMEOUT=60000を設定して、サーバーの起動時間を延ばしてください。 -
GitHub Copilot cloud agent — 値を Agents シークレット(リポジトリの Settings → Secrets and variables → Agents)に
COPILOT_MCP_SAIHM_IDENTITYとCOPILOT_MCP_SAIHM_IDENTITY_PASSPHRASEという名前で保存します。エージェントが実行するすべてのコマンドの横でサーバーが実行されるため、コードを信頼できるリポジトリでのみ使用してください。リポジトリの MCP 設定(Settings → Copilot → MCP servers)でシークレットを割り当てます。{ "mcpServers": { "saihm": { "type": "local", "command": "npx", "args": ["-y", "@saihm/mcp-server-pro"], "tools": ["saihm_recall", "saihm_remember", "saihm_status"], "env": { "SAIHM_ENDPOINT_URL": "https://saihm.net/mcp", "SAIHM_IDENTITY": "$COPILOT_MCP_SAIHM_IDENTITY", "SAIHM_IDENTITY_PASSPHRASE": "$COPILOT_MCP_SAIHM_IDENTITY_PASSPHRASE", "SAIHM_EPHEMERAL_HOME": "1" } } } }Copilot はリストに記載されたツールを確認なしで実行するため、このリストには
saihm_forgetと共有ツールを含めていません。デフォルトでは、Copilot のコードレビューはあらゆるプルリクエストで読み取り専用ツールを呼び出せるため、メモリーがレビューコメントに含まれる可能性があります。それを望まない場合は、Allow Copilot to use MCP tools when reviewing pull requests をオフにしてください。 -
その他 — ローカル MCP サーバーを実行でき、サーバーが両方の値を読み取れ、
saihm.netとregistry.npmjs.orgにアクセスできるホストであれば、どこでも動作するはずです。ホスト独自のシークレットまたは環境設定に、自分だけが利用できるよう範囲を限定して値を設定し、自分だけが使う環境にしてください。エージェントと、エージェントが実行するすべてのコマンドが値を読み取れる可能性があります。ホームディレクトリが永続化されない場合は、そこでSAIHM_EPHEMERAL_HOME=1を追加してください。そのホストにすでに書き込まれたコピーやサインイン情報は、削除するまで残ります。~/.saihm(またはSAIHM_HOME)にあるrecall.ファイルとsession.ファイルが該当します。リモート MCP サーバーに接続するだけのホストでは、このパッケージを実行できません。
ホームディレクトリが一時的である、または後続のジョブからアクセス可能な CI ランナーのホームであると判別できる場合、join はそこでのキー作成を拒否します。自分のコンピューターで join し、自分の ID を持ち込んでください。SAIHM_EPHEMERAL_HOME=0 を設定するのは、ホームが保持され、自分だけが使う環境に限ってください。
動作を確認する
- 主要なすべてのモデルでのライブデモ — オフラインで、各約1分、アカウント不要です:https://saihm-admin.github.io/saihm-demos/。Claude、GPT、DeepSeek、Qwen、Kimi、またはGLMにメモリを保存し、その後、消去できることを確認できます。
- トークンのベンチマーク — 会話全体を再送する代わりに、範囲を限定したメモリセットを呼び出すことで、現実的な複数セッションのタスクにおいて入力トークンを**62.8%~85.9%**削減できました。公開されており、オフラインで再現できます: https://github.com/SAIHM-Admin/saihm-token-benchmark。
利用料金
無料で始められます。無料枠は、実際のインフラ上でSAIHMを試すための、書き込み、読み取り、共有の固定の一回限りの利用枠です。リセットや補充はありません。**カード登録は不要で、解約するものもありません。**利用枠を使い切った後も、メモリの一覧表示と消去は引き続き可能です。また、アップグレードしてもすべてのメモリが保持されます。
有料プランは月額制です。料金は料金ページをご覧ください。アップグレード後も、同じキーと、すでに保存してあるすべてのメモリが保持されます:
SAIHM_MASTER_SECRET_FILE=$HOME/.saihm/free-identity.key \
SAIHM_TIER=FREE \
npx -y @saihm/mcp-server-pro upgrade PRO
本人確認情報に紐づいたチェックアウトリンクが表示されます。ブラウザーで開き、支払い完了後にクライアントの設定へ追加する2つの設定を確認してください。クライアントの設定形式に合わせて両方を追加し、クライアントを再起動します。JSON の env ブロックでは:
"SAIHM_TIER": "PRO",
"SAIHM_PAYMENT_METHOD": "stripe"
Codex や Grok などの TOML 設定では、env = { ... } の中に記述します:
env = { SAIHM_ENDPOINT_URL = "https://saihm.net/mcp", SAIHM_TIER = "PRO", SAIHM_PAYMENT_METHOD = "stripe" }
有料プランでは両方の設定が必要です。確認する支払い手段を指定する SAIHM_PAYMENT_METHOD がないと、サーバーは起動しますが、設定されるまでメモリ呼び出しはすべて失敗し、この設定が必要であることが示されます。次に、"Show my SAIHM status" と伝えると、プランを確認できます。
| 支払い方法 | 場所 | キーとメモリ | SAIHM_PAYMENT_METHOD |
|---|---|---|---|
| 既存のキーに対するカード払い | upgrade コマンドのリンク | 保持されます | stripe |
| ウェブサイトでのカード払い、またはその他の方法 | 登録ページ | 独自のキーを持つ新しいID | ページに表示される設定内の値 |
| ステーブルコイン | 登録ページ | 独自のキーを持つ新しいID | stablecoin |
すでにお持ちのキーにあるメモリはそのキーに保持され、新しいキーへは移動しません。そのため、現在のキーをアップグレードする場合は、カード払いのリンクを使用してください。
問題が発生した場合
| 表示される内容 | 対処方法 |
|---|---|
| SAIHM ツールが表示されず、エラーもどこにも表示されない | npx の初回ダウンロードが完了する前に、クライアントが待機を終了しました。クライアントの設定ブロックに起動設定があることを確認し、ファイルが有効な JSON であることを確認してください |
| ほかのツールもすべて表示されなくなった | 設定ファイルが有効な JSON ではなくなっています。末尾のカンマや、コピー&ペーストによって混入したノーブレークスペースがないか確認してください |
| メモリツールに、登録が承認待ちと表示される | 登録時に表示されたリンクを開き、サインインしてコードを入力し、承認してください。登録は自動的に完了し、次のメモリ呼び出しが機能します |
| メモリ呼び出しに、無料登録がまだ承認待ちの可能性があると表示される | 開始した登録を承認してください。または、"Join SAIHM" と伝えてください。既存のキーが再利用され、リンクとコードが表示されます |
| SAIHM のサインインに失敗したと表示される:短時間にサインインが多すぎます | 表示された時間だけ待ってから、もう一度お試しください |
| ツールは表示されるが、すべての呼び出しが失敗する | マシンからエンドポイント(別のものを設定していない場合は saihm.net)に接続できません。ホスト環境では、ネットワーク設定で許可してください |
| ホストセッションで登録を繰り返し求められる | 環境にユーザーのIDがありません:ホストされたエージェント環境をご覧ください |
| 予想とは異なるメモリが表示される | このマシンには、ユーザーのキーではなく独自のキーが設定されています |
プロキシ、消去に関する回答、その他の情報については、トラブルシューティングの全表をご覧ください。
仕組み
メモリーは送信前にお使いのマシンで暗号化され、戻ってきた後にお使いのマシンで復号されます。SAIHM はメモリーを暗号化して保存します。保存に必要な最小限のルーティング情報と、各メモリーの鍵はお客様の鍵でロックされます。何かを消去すると、その鍵が破棄されます。そのため、保存されたメモリーの消去は、どこかにあるコピーを削除したという約束ではなく、即時かつ確実です。
- ポスト量子暗号を前提に設計。 ML-DSA-65 がすべてのメモリーに署名し、ML-KEM-768 が共有を保護します。
- 非カストディアル。 https://saihm.net のホステッドサービスが永続的なストレージを提供しますが、メモリーを開ける鍵を保持することはありません。
- 消去を伝播。
forgetを実行するたびに通知も書き込まれるため、そのメモリーから作られたインデックス、ミラー、抽出された事実なども削除できます。 - デバイス上ですばやく呼び出し。 鍵がファイルにある場合(標準設定、または
SAIHM_MASTER_SECRET_FILEで指定したファイルなど、保存場所を問いません)、SAIHM はこのデバイスで保存または読み込んだすべてのメモリーのローカルコピーを保持し、最初の呼び出し後はすべてのメモリーのコピーを保持します。その後の呼び出しでは、このデバイスまたは別のデバイスで新規または変更されたものだけを取得するため、処理が速くなり、読み込み回数も減ります。コピーはお使いのデバイス上の~/.saihm(またはSAIHM_HOME)に暗号化されずに保存され、お使いのユーザーアカウントだけが読み取れるため、呼び出しにすぐ利用できます。forgetはそのコピーからもメモリーを削除し、他のデバイスでは次回の呼び出しが成功したときに削除されます。このデバイスで消去したメモリーが別の場所で再び保存されても、このデバイスでの呼び出しには表示されない場合があります。デバイスのバックアップには、作成時点のコピーが保持されます。0.14.3 以降は、標準の場所に限らず、鍵ファイルをどこに保存していてもコピーが保持されます。ホームディレクトリが一時的な場所である場合や、後続のジョブ向けに保持される場合、SAIHM はコピーを保持しません。ただし、保存場所を指定した場合は除きます。ホステッドエージェントのセッション、SAIHM が認識する CI ランナー(リファレンスのSAIHM_EPHEMERAL_HOMEの項に記載)、およびSAIHM_EPHEMERAL_HOME=1が設定されている場所が該当します。それ以外のランナーでも設定してください。また、ホームフォルダーがジョブ終了後も残る場所でも設定してください。すでに書き込まれたコピーやサインイン情報は、削除するまでそのまま残ります。~/.saihm(またはSAIHM_HOME)内のrecall.およびsession.ファイルが対象です。 - デバイスごとのサインインは1回。 標準の鍵ファイル(参加時に作成されるファイル)を使う場合、セッションでは有効期限の短いサインイン情報が鍵の隣のファイルに保存され、お使いのユーザーアカウントだけが読み取れます。このデバイスでの次のセッションでは、有効期限が切れるまでその情報が使われます。鍵は含まれず、同じエンドポイント、ID、プラン、および支払い方法に対してのみ使われます。コピーと同様に、ホームディレクトリが一時的な場所である場合や、後続のジョブ向けに保持される場合は保存されません。メモリー上だけに保持するには、このデバイスでお使いの鍵を使って SAIHM を実行するすべての AI クライアントとアプリで、
SAIHM_SESSION_CACHEを0に設定してください。すると、次回鍵を読み込むときに、SAIHM は以前保存したサインイン情報を削除します。 - お好みに応じて、保存データをすべて暗号化。 このデバイスでお使いの鍵を使って SAIHM を実行するすべての AI クライアントとアプリで、
SAIHM_RECALL_CACHEを0に設定してください。設定場所は、それぞれのSAIHM_ENDPOINT_URLと同じで、同じ方法で記述します。次に、開いているすべてのセッションとウィンドウを含め、すべてを終了し、~/.saihm(またはSAIHM_HOME)にある名前がrecall.で始まるファイルを削除してから、再起動します。以後、SAIHM はローカルコピーを保持しないため、保存されているすべてのメモリーは暗号文となり、呼び出しのたびにすべてのメモリーを再取得します。処理は遅くなり、無料プランなど呼び出し回数に上限のあるプランでは、利用枠をより早く使い切ります。後から設定するクライアントやアプリにも、この設定を追加してください。recall.ファイルが再び現れた場合、クライアントまたはアプリのいずれかでコピーが有効になっています。
技術リファレンスでは、セキュリティモデル、暗号化されたメモリーの保存場所、およびすべての設定について説明しています。
設定
ほとんどの方は設定不要です。上記のブロックで重要な設定はすべて行われ、残りは適切なデフォルト値が設定されています。すべての設定はリファレンスに記載されています。
開発者向け
ご自身の Node.js コードから SAIHM を利用できます。開発者向けリファレンスでは、ID レコード、共有へのフォロー、自分のセルの変更、ウォームスタート、構造化されたツールの結果とエラーについて説明しています。
npm install @saihm/mcp-server-pro
import { SaihmProClient } from '@saihm/mcp-server-pro';
// Boot from env: SAIHM_ENDPOINT_URL, SAIHM_MASTER_SECRET_FILE (or _HEX)
// self-onboard (recommended): + SAIHM_PAYMENT_METHOD + SAIHM_TIER (omit SAIHM_AUTH_HEADER)
// static token (advanced): + SAIHM_AUTH_HEADER="Bearer <JWT>"
const saihm = SaihmProClient.bootFromEnv();
// Store — encrypted before it leaves the process.
const { cellId } = await saihm.remember('remember this');
// Recall — decrypted after it returns.
const cell = await saihm.recallOne(cellId);
console.log(cell?.plaintext); // 'remember this'
// Recall everything (client-side keyword filter; the endpoint has no plaintext to filter on).
const matches = await saihm.recall('this');
// Update an existing cell (a fresh monotonic sequence is issued automatically). When the endpoint reports
// shares of the cell left on the previous version, `shares` in the result reports their re-issue.
await saihm.remember('new contents', { cellId });
// Forget — crypto-shred.
await saihm.forget(cellId);
// Share a cell with another agent, end-to-end authenticated. Pin the grantee's agentIdHash
// out-of-band; the library rejects directory key-substitution.
await saihm.share({
cellId,
recipientRecord, // the grantee's published identity record (hex fields), as `identity-record` writes it
recipientPinnedAgentIdHashHex, // pinned out-of-band
expiryEpoch, // optional whole HOURS since the UNIX epoch (498192n = 2026-11-01 00:00 UTC); omit or null for no time bound
});
await saihm.revokeShare(cellId, recipientPinnedAgentIdHashHex);
// Read a cell another agent shared TO you (the recipient side of `share`). Pin the
// sharer's agentIdHash out-of-band; the library checks the key that comes with the cell
// against it, verifies the sharer's signature and returns null when there is no live
// grant (e.g. revoked, or the sharer crypto-shredded it).
const shared = await saihm.recallShared({
sharerPinnedAgentIdHashHex, // the sharer's agentIdHash, as they gave it to you
cellId,
}); // optional: sharerRecord, the sharer's identity record (hex), which must match the pin
console.log(shared?.plaintext);
// Operator-observable metadata only (no plaintext).
const status = await saihm.status();
SHM — 超人的なメモリー
SAIHM はメモリーを安全に保ちます。SHM(Super-Human Memory)は、メモリーを効率的に活用するための仕組みです。SAIHM の上位レイヤーとしてメモリーを整理し、エージェントが要求する前に、意味に基づいて適切な部分を提示します。タスクを分けてコンテキストウィンドウを整理することで、エージェント 1 つで、現在なら複数のエージェントが必要な作業を担えるようにします。また、一度保存した修正内容は、その後いつでも呼び出せるようになります。
SHM はエージェントのそばで、エージェントが読み取れるメモリーを対象に、ユーザー側で動作します。そのため、平文を外部に送信する必要はありません。ハイブリッド検索とオプションのローカルリランカーでメモリーをランク付けし、設定した予算の範囲内で、現在のタスクに必要な情報だけを提示します。また、保存する情報は、ユーザーが管理するキーで暗号化します。SAIHM でメモリーが消去されると、SHM はそのメモリーをインデックス、キャッシュ、およびそこから派生したすべての情報から削除します。
npm install @saihm/shm
SHM の実行には Node.js 20.20 以降が必要です。
SHM とこのクライアントの連携方法。 SHM は、この MCP サーバーのバージョン 0.13.0 以降を介して動作し、SAIHM のメモリーとの同期を保ちます。
- 変更フィードは、どのメモリーが書き込まれたかを SHM に通知し、SHM はそれらを再度読み込みます。
- 消去フィードは、どのメモリーが消去されたかを SHM に通知し、SHM はそれらと、そこから派生したすべての情報を削除します。
- 共有状態は、他のエージェントが共有したどのメモリーをユーザーが利用できるか、またどの共有が終了したかを SHM に通知します。
- 構造化されたツールの結果により、SHM は各回答を、行動に移す前に確認できる形式で受け取ります。
- ウォームスタートでは、SHM が状態の暗号化されたスナップショットを保存し、新しいセッションや別のデバイスで、中断したところから再開できます。
SHM が使用するツールとファイルについては、リファレンスをご覧ください。
SAIHM マニュアルでは、両方を取り上げています。第 4 章では SHM がもたらす機能、第 5 章ではその調整方法と活用例、第 9 章では SAIHM と SHM を併用する理由を説明しています。
お問い合わせ
WhatsApp で @saihm.inc 宛てに SAIHM へメッセージを送るか、SAIHM の WhatsApp コミュニティグループで質問するか、saihm.net/contactからお問い合わせください。SAIHM の担当者がキーのファイルを求めることはありません。誰にも送らないでください。
SAIHM を応援する
SAIHM が役立ったと感じた方は、より多くの人に知ってもらうため、ぜひご協力ください。
- GitHubでスターを付ける。 スターが付くと、他の開発者が SAIHM を見つけやすくなります。
- 同僚やチーム、アシスタントが何度も忘れて困っている方に共有する。
- X で@SAIHMemoryをフォローすると、ニュースや最新情報を確認できます。
- GitHub Sponsorsから、月額または一度きりのスポンサーになる。
- YouTube をフォローする。 動画に「いいね」を付け、チャンネル登録し、ベル 🔔 で通知をオンにすると、新しい動画や最新情報を受け取れます。
割引コード
アップグレードする場合は、料金に記載されているアップグレードコマンドを実行し、購入手続き画面のプロモーションコード欄に次のいずれかのコードを入力してください。
| コード | 割引内容 |
|---|---|
SAIHM-90-OFF | 新規のお客様は初回のお支払いが 90% 割引 |
SAIHM-75-OFF | 初回のお支払いが 75% 割引 |
SAIHM-50-OFF | 4 か月間 50% 割引 |
SAIHM-25-OFF | 6 か月間 25% 割引 |
各購入手続きで使用できるコードは 1 つです。各オファーは終了するまで有効です。
ライセンス
Apache-2.0 © SAIHM
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

