emblem-ai-agent-wallet について
Emblem Agent Walletは、AIエージェントや対話型ユーザーをEmblemAIにつなぐコマンドラインスキルです。暗号資産の照会やウォレット操作に対応し、認証と状態をプロファイルごとに管理して、スクリプト向けの単発リクエストも実行できます。
主な機能
- 01残高とトークン保有状況の照会
- 02暗号資産の取引と送金
- 03エージェントごとのウォレットプロファイル
- 04ブラウザーまたはパスワードで認証
- 05単発のエージェントリクエストを実行
- 06対話モードでレスポンスをストリーミング
活用シーン
- 01対応チェーンの残高を確認
- 02コマンドラインから送金や資産交換を依頼
- 03エージェントごとに独立したウォレットを用意
- 04エージェントのワークフローから暗号資産ポートフォリオを照会
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ emblemcompany/ emblemai-agentwallet --skill emblem-ai-agent-walletインストール後、Claude Code で/emblem-ai-agent-walletを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdLICENSE.gitignore詳細
Emblem Agent Wallet
EmblemAI(EmblemVault の自律型暗号資産 AI)に接続します。7 つのブロックチェーンで 250 以上の取引ツールを利用できます。ブラウザー認証、ストリーミング応答、プロファイルごとに分離されたローカル状態、プラグインシステム、設定不要のエージェントモードを備えています。
CLI が必要です:npm install -g @emblemvault/agentwallet
クイックスタート -- このスキルの使い方
ステップ 1:CLI をインストールする
npm install -g @emblemvault/agentwallet
これにより、単一のコマンド emblemai を利用できます。
ステップ 2:使用する
このスキルが読み込まれると、暗号資産について EmblemAI に何でも質問できます。
- 「ウォレットアドレスを教えて」
- 「すべてのチェーンの残高を表示して」
- 「Solana で注目されているものは?」
- 「$20 分の SOL を USDC に交換して」
- 「0.1 ETH を 0x... に送金して」
設定不要のエージェントプロビジョニングでは、プロファイルが単一のコマンドで独自のウォレットを作成して永続化できます。
emblemai --agent --profile hustle -m "What are my wallet addresses?"
このスキルを呼び出すには、次のように指示してください。
- 「Emblem ウォレットを使って残高を確認して」
- 「保有しているトークンを EmblemAI に聞いて」
- 「EmblemVault に接続して」
- 「暗号資産ポートフォリオを確認して」
- 「エージェントウォレットのプロファイルを作成または使用して、アドレスを表示して」
すべてのリクエストは、内部で emblemai を介して処理されます。複数のプロファイルがある場合、エージェントモードを呼び出す際は毎回 --profile <name> を指定する必要があります。
前提条件
- Node.js >= 20.18.0
- ターミナル:256 色に対応していること(iTerm2、Kitty、Windows Terminal、または xterm 互換のターミナル)
- 任意:リッチな Markdown 表示には glow(macOS では
brew install glow)
インストール
npm から(推奨)
npm install -g @emblemvault/agentwallet
ソースから
git clone https://github.com/EmblemCompany/EmblemAi-cli.git
cd EmblemAi-cli
npm install
npm link # makes `emblemai` available globally
初回実行
- インストールします:
npm install -g @emblemvault/agentwallet - プロファイルを作成するか選択します:
emblemai profile create hustle emblemai --profile hustleまたはemblemai --agent --profile hustle -m "What are my wallet addresses?"を実行します/pluginsを確認して、読み込まれたプラグインを確認します/helpを入力して、すべてのコマンドを確認します- 最初のウォレット作成後、すぐにプロファイル認証情報をバックアップします
認証
EmblemAI v3 は、プロファイルごとに分離されたローカル状態とともに、対話型利用向けのブラウザー認証と、エージェントやスクリプトからの利用向けのパスワード認証という 2 つの認証方式に対応しています。
プロファイルのルール
プロファイルは、複数のエージェントを分離するための標準的な仕組みです。
emblemai profile listemblemai profile create <name>emblemai profile use <name>emblemai profile inspect [name]emblemai profile delete <name>emblemai --profile <name> ...
フェイルクローズのルール: ~/.emblemai に複数のプロファイルがある場合、すべての --agent 呼び出しで --profile <name> を指定する必要があります。エージェントモードが使用するウォレット ID を推測することはありません。
個別の HOME ディレクトリを使うこともできますが、主要な方法ではなく、任意の分離手段です。まずはプロファイルを使用してください。
ブラウザー認証(対話モード)
emblemai --profile <name> を -p なしで実行すると、CLI は次の処理を行います。
- 選択したプロファイルに保存済みのセッションがあるか確認します
- 有効期限内の有効なセッションがあれば、ログインせずに直ちに復元します
- セッションがなければ、
127.0.0.1:18247でローカルサーバーを起動し、ブラウザーを開きます - ブラウザーで EmblemVault の認証モーダルを使って認証します
- セッション JWT が取得され、プロファイルのディスク上に保存された後、CLI が処理を続行します
- ブラウザーを開けない場合は、手動でコピーして貼り付けられるよう URL が表示されます
- 認証がタイムアウトすると(5 分)、同じプロファイルのパスワード入力に切り替わります
パスワード認証(エージェントモード)
ログインとサインアップは同じ操作です。 パスワードを初めて使用するとウォレットが作成され、以降同じパスワードを使用すると同じウォレットが返されます。異なるパスワードを使うと異なるウォレットが生成され、プロファイルによって、それらのウォレットに紐づくローカルセッションと保存済み認証情報が分離されます。
エージェントモードでは、選択したプロファイルにパスワードが指定されていない場合、安全なランダムパスワードが自動生成され、dotenvx を使って ~/.emblemai/profiles/<name>/ に暗号化して保存されます。エージェントモードは、手動で設定しなくてもすぐに利用できます。
認証時の処理
- 選択したプロファイルが解決されます
- ブラウザー認証:ブラウザーからセッション JWT を受け取り、SDK に読み込みます
パスワード認証:パスワードを
EmblemAuthSDK.authenticatePassword()に送信します。再利用できるよう、選択したプロファイルに保存することもできます - 決定論的なボールトが導出されます。同じ認証情報からは常に同じボールトが生成されます
- セッションによって、Solana、Ethereum、Base、BSC、Polygon、Hedera、Bitcoin など複数のチェーンのウォレットアドレスが提供されます
- プロファイルのセッションを使って EmblemAI クライアントが初期化されます
認証情報の検出
プロファイルにリクエストを送信する前に、次の優先順位でパスワードを探します。
| 方法 | 使用方法 | 優先順位 |
|---|---|---|
| CLI 引数 | emblemai --profile <name> -p "your-password" | 1(最高、暗号化して保存) |
| 環境変数 | EMBLEM_PASSWORD="your-password" emblemai --profile <name> | 2(保存されません) |
| 暗号化された認証情報 | dotenvx-encrypted ~/.emblemai/profiles/<name>/.env | 3 |
| 自動生成(エージェントモード) | 初回実行時に emblemai --agent --profile <name> ... | 4 |
| 対話型プロンプト | ブラウザー認証に失敗した場合のフォールバック | 5(最低) |
対話型モードでは、選択したプロファイルの認証を次の順序で解決します。保存済みのセッション、保存済みのパスワード、ブラウザー認証モーダル、ターミナルでのパスワード入力プロンプトです。
選択したプロファイルの認証情報が見つからない場合、エージェントモードでは認証情報を自動生成して保存できます。既存のパスワードから生成されたウォレットに接続したいとユーザーが明示した場合に限り、パスワードを尋ねてください。
「このプロファイル用に新しい EmblemVault ウォレットを自動作成するか、CLI で元のパスワードをローカルに入力して既存のウォレットに接続できます。
注記: 初めてご利用の場合、新しいパスワードを入力すると新しいウォレットが作成されます。以前に利用したことがある場合は、既存のウォレットにアクセスするため、同じパスワードを使用してください。
このプロファイル用のパスワードをターミナルで入力しますか?」
- パスワードは16文字以上である必要があります
- 紛失した場合、復旧できません(秘密鍵と同様に扱ってください)
実行時の注意事項
十分な時間を確保してください。 EmblemAI のクエリは、複雑な操作(取引、クロスチェーン検索)では最大2分かかることがあります。CLI は処理中であることを示すため、5秒ごとに進行状況を示すドットを出力します。
EmblemAI の応答を分かりやすく表示してください。 EmblemAI からの応答を、Markdown のコードブロックでユーザーに表示します。
**EmblemAI Response:**
\`\`\`
[response from EmblemAI]
\`\`\`
使用方法
エージェントモード(AI エージェント向け -- 1回のみの実行)
プロファイル単位の認証を使ったプログラムによる単一メッセージのクエリには、--agent モードを使用します。
# Zero-config -- auto-generates a wallet for the profile on first run
emblemai --agent --profile hustle -m "What are my wallet addresses?"
# Explicit password for a profile
emblemai --agent --profile hustle -p "$PASSWORD" -m "Show my balances"
# Pipe output to other tools
emblemai -a --profile treasury -m "What is my SOL balance?" | jq .
# Use in scripts
ADDRESSES=$(emblemai -a --profile treasury -m "List my addresses as JSON")
CLI を実行できるシステムなら、エージェントにウォレットを提供できます。
# OpenClaw, CrewAI, AutoGPT, or any agent framework
emblemai --agent --profile ops -m "Send 0.1 SOL to <address>"
emblemai --agent --profile treasury -m "Swap 100 USDC to ETH on Base"
emblemai --agent --profile research -m "What tokens do I hold across all chains?"
プロファイルは、エージェントのウォレットを分離するための主な方法です。複数のエージェントに別々のウォレットを割り当てるには、異なるプロファイルを使用します。
emblemai --agent --profile agent-alice -m "My addresses?"
emblemai --agent --profile agent-bob -m "My addresses?"
エージェントモードでは常にパスワード認証が使用され(ブラウザー認証は使用しません)、選択したプロファイルの呼び出し間で会話履歴が保持されます。また、取引、送金、ポートフォリオのクエリ、クロスチェーン操作を含む EmblemAI の全ツールセットに対応しています。
対話型モード(人間向け)
Readline ベースの対話型モードです。AI の応答をストリーミングし、Glow による Markdown 表示とスラッシュコマンドに対応しています。
emblemai --profile hustle # Browser auth (recommended)
emblemai --profile hustle -p "$PASSWORD" # Password auth
会話をリセットする
emblemai --reset
対話型コマンド
すべてのコマンドには / を付けます。入力バーに入力して Enter キーを押してください。
一般
| コマンド | 説明 |
|---|---|
/help | 利用可能なすべてのコマンドを表示します |
/settings | 現在の設定(ボールト ID、モデル、ストリーミング、デバッグ、ツール)を表示します |
/exit | CLI を終了します(別名:/quit) |
プロファイル
| コマンド | 説明 |
|---|---|
/profile | 現在/デフォルトのマーカー付きでプロファイルを一覧表示します |
/profile create <name> | 名前を指定してプロファイルを作成します |
/profile use <name> | このセッションと新しいセッションで使用するプロファイルを切り替えます |
/profile inspect [name] | プロファイルのメタデータ、ファイル、ランタイムのウォレット情報を確認します |
/profile delete <name> | 現在使用中ではないプロファイルを削除します |
複数のプロファイルが存在する場合、エージェントモードの CLI 呼び出しにはすべて --profile <name> を指定する必要があります。
チャットと履歴
| コマンド | 説明 |
|---|---|
/reset | 会話履歴を消去して、新しく開始します |
/clear | /reset のエイリアスです |
/history on|off | メッセージ間の履歴保持を切り替えます |
/history | 履歴の状態と最近のメッセージを表示します |
ストリーミングとデバッグ
| コマンド | 説明 |
|---|---|
/stream on|off | ストリーミングモードを切り替えます(生成されたトークンが表示されます) |
/stream | 現在のストリーミング状態を表示します |
/debug on|off | デバッグモードを切り替えます(ツールの引数、インテントのコンテキストを表示します) |
/debug | 現在のデバッグ状態を表示します |
モデルの選択
| コマンド | 説明 |
|---|---|
/model <id> | ID を指定してアクティブなモデルを設定します |
/model clear | CLI のデフォルトモデルに戻します |
/model | 現在選択されているモデルを表示します |
/models | 現在のモデルと、厳選されたデフォルトの選択肢を表示します |
/models use <number|id> | 厳選されたデフォルトモデルから選択します |
/models search <query> | OpenRouter のモデルをあいまい検索し、/model <number|id> で選択します |
ツール管理
| コマンド | 説明 |
|---|---|
/tools | 選択状態とともにすべてのツールを一覧表示します |
/tools add <id> | アクティブなセットにツールを追加します |
/tools remove <id> | アクティブなセットからツールを削除します |
/tools clear | ツールの選択をクリアします(自動ツールモードが有効になります) |
ツールが選択されていない場合、AI は自動ツールモードで動作し、会話のコンテキストに基づいて適切なツールを動的に選択します。
認証
| コマンド | 説明 |
|---|---|
/auth | 認証メニューを開きます |
/wallet | ウォレットアドレスを表示します(EVM、Solana、BTC、Hedera) |
/portfolio | ポートフォリオを表示します(チャットクエリとして処理されます) |
/auth メニューには次の項目があります。
| オプション | 説明 |
|---|---|
| 1. API キーを取得 | ボルトの API キーを取得します |
| 2. ボルト情報を取得 | ボルト ID、アドレス、作成日を表示します |
| 3. セッション情報 | 現在のセッションの詳細(識別子、有効期限、認証タイプ)を表示します |
| 4. セッションを更新 | 認証セッションのトークンを更新します |
| 5. EVM アドレス | Ethereum/EVM アドレスを表示します |
| 6. Solana アドレス | Solana アドレスを表示します |
| 7. BTC アドレス | Bitcoin アドレス(P2PKH、P2WPKH、P2TR)を表示します |
| 8. エージェント認証をバックアップ | 現在のプロファイルの認証情報をバックアップファイルにエクスポートします |
| 9. ログアウト | 現在のプロファイルのセッションをクリアして終了します(暗号化された認証情報はディスクに残ります) |
決済(PAYG 課金)
| コマンド | 説明 |
|---|---|
/payment | PAYG 課金の状態(有効/無効、モード、負債、トークン)を表示します |
/payment enable|disable | 従量課金を切り替えます |
/payment token <TOKEN> | 決済トークンを設定します(SOL、ETH、HUSTLE など) |
/payment mode <MODE> | 決済モードを設定します:pay_per_request または debt_accumulation |
Markdown のレンダリング
| コマンド | 説明 |
|---|---|
/glow on|off | glow による Markdown のレンダリングを切り替えます |
/glow | glow の状態とバージョンを表示します |
利用するには glow がインストールされている必要があります。
ロギング
| コマンド | 説明 |
|---|---|
/log on|off | ストリームのファイルへのログ記録を切り替えます |
/log | ロギングの状態とファイルパスを表示します |
ログファイルのデフォルトは ~/.emblemai-stream.log です。--log-file <path> で変更できます。
キーボードショートカット
| キー | 操作 |
|---|---|
Enter | メッセージを送信します |
Up | 直前の入力を呼び出します |
Ctrl+C | 終了します |
Ctrl+D | 終了します(EOF) |
CLI フラグ
| フラグ | エイリアス | 説明 |
|---|---|---|
--profile <name> | 呼び出し時に名前付きウォレットプロファイルを選択します | |
--password <pw> | -p | 認証パスワード(16 文字以上)-- ブラウザー認証をスキップします |
--message <msg> | -m | エージェントモード用のメッセージ |
--agent | -a | エージェントモードで実行します(単発実行、パスワード認証のみ。複数のプロファイルがある場合は --profile が必要です) |
--restore-auth <path> | バックアップファイルから選択したプロファイルに認証情報を復元して終了します | |
--reset | 会話履歴を消去して終了します | |
--debug | デバッグモードを有効にして起動します | |
--stream | ストリーミングを有効にして起動します(デフォルト:オン) | |
--log | ストリームログを有効にします | |
--log-file <path> | ログファイルのパスを上書きします(デフォルト:~/.emblemai-stream.log) | |
--hustle-url <url> | EmblemAI サーバーの URL を上書きします | |
--auth-url <url> | 認証サービスの URL を上書きします | |
--api-url <url> | API サービスの URL を上書きします |
環境変数
| 変数 | 説明 |
|---|---|
EMBLEM_PASSWORD | 認証パスワード |
| CLI 引数と環境変数の両方が指定されている場合、CLI 引数が環境変数より優先されます。明示的な CLI 引数と環境変数による上書きの後に、プロファイルに紐付けて保存された認証情報が確認されます。 |
権限とセーフモード
エージェントはデフォルトでセーフモードで動作します。ウォレットに影響する操作は、実行前に必ずユーザーの明示的な確認が必要です。
- トランザクション(スワップ、送金、振替)-- エージェントが詳細を提示し、承認を求めます
- 署名(メッセージ署名、トランザクション署名)-- ユーザーの明示的な同意が必要です
- 注文の発注(指値注文、ストップロス)-- 送信前に確認が必要です
- DeFi 操作(LP 預け入れ、イールドファーミング)-- 各操作をユーザーが承認する必要があります
残高の確認、アドレスの表示、市場データ、ポートフォリオの照会などの読み取り専用操作には確認は不要で、すぐに実行されます。
ユーザーが操作内容を確認して承認する前に、エージェントが自律的に資金を移動したり、トランザクションに署名したり、注文を発注したりすることはありません。
コミュニケーションスタイル
重要:簡潔すぎる表現を避け、自然な言葉で詳しく伝えてください。
EmblemAI は簡潔すぎるコマンドを「$0」のトランザクションとして解釈します。意図は必ず完全な文で説明してください。
| 悪い例(簡潔すぎる) | 良い例(詳しい表現) |
|---|---|
"SOL balance" | "Solana 上の現在の SOL 残高はいくらですか?" |
"swap sol usdc" | "Solana 上で 20 ドル相当の SOL を USDC にスワップしたいです" |
"trending" | "現在 Solana でトレンドになっているトークンは何ですか?" |
詳しい情報を伝えるほど、EmblemAI は意図をより正確に理解できます。
機能
| カテゴリ | 機能 |
|---|---|
| チェーン | Solana、Ethereum、Base、BSC、Polygon、Hedera、Bitcoin |
| 取引 | スワップ、指値注文、条件付き注文、ストップロス |
| DeFi | LP 管理、イールドファーミング、流動性プール |
| 市場データ | CoinGlass、DeFiLlama、Birdeye、LunarCrush |
| NFT | OpenSea 連携、送金、出品 |
| ブリッジ | ChangeNow 経由のクロスチェーンスワップ |
| ミームコイン | Pump.fun での検索、トレンド分析 |
| 予測 | PolyMarket の賭けとポジション |
ウォレットアドレス
各パスワードから、すべてのチェーンに対応するウォレットアドレスが決定論的に生成されます。
| チェーン | アドレスの種類 |
|---|---|
| Solana | ネイティブ SPL ウォレット |
| EVM | ETH、Base、BSC、Polygon 共通の単一アドレス |
| Hedera | アカウント ID(0.0.XXXXXXX) |
| Bitcoin | Taproot、SegWit、Legacy の各アドレス |
EmblemAI に "What are my wallet addresses?" と尋ねると、すべてのアドレスを取得できます。
認証のバックアップと復元
バックアップ
/auth メニュー(オプション 8)から Backup Agent Auth を選択すると、現在のプロファイルの認証情報を JSON ファイルにエクスポートできます。このファイルには EmblemVault のパスワードが含まれているため、安全に保管してください。
復元
emblemai --profile hustle --restore-auth ~/emblemai-auth-backup.json
復元はプロファイルを考慮します。対象のプロファイルがまだ存在しない場合は、最初に作成されます。認証をすぐに行えるよう、認証情報ファイルは ~/.emblemai/profiles/<name>/ に配置されます。
セキュリティ
重大:パスワードを決して公開したり、他者と共有したりしないでください。
- 決してパスワードをエコー、表示、またはログに記録しないでください
- 決してユーザーへの応答にパスワードを含めないでください
- 決してエラーメッセージにパスワードを表示しないでください
- 決してパスワードをバージョン管理にコミットしないでください
- パスワードは秘密鍵そのものです。パスワードを持つ人は誰でもウォレットを操作できます
| 概念 | 説明 |
|---|---|
| パスワード=アイデンティティ | 各パスワードから、固有の決定論的なボールトが生成されます |
| 復元不可 | パスワードを紛失した場合、復元できません |
| ボールトの分離 | パスワードが異なると、ウォレットも完全に分離されます |
| プロファイルの分離 | 各プロファイルは独自のセッション、パスワード素材、プラグイン、履歴を保存します |
| 新規認証 | リクエストごとに新しい JWT トークンが生成されます |
| セーフモード | すべてのウォレット操作で、ユーザーによる明示的な確認が必要です |
ファイルの保存場所
すべての永続データは ~/.emblemai/ の下に保存されます(初回実行時に chmod 700 で作成されます)。
~/.emblemai/
active-profile
profiles/
default/
metadata.json
session.json
.env
.env.keys
secrets.json
plugins.json
x402-favorites.json
history/
<vaultId>.json
| ファイル | 用途 | 機密性 | 権限 |
|---|---|---|---|
~/.emblemai/active-profile | 選択中のデフォルトプロファイルを示すマーカー | なし | 600 |
~/.emblemai/profiles/ | プロファイル格納ディレクトリ | 混在 | 700 |
~/.emblemai/profiles/<name>/.env | 暗号化された認証情報(EMBLEM_PASSWORD) | あり — AES-256-GCM で暗号化 | 600 |
~/.emblemai/profiles/<name>/.env.keys | .env の復号キー | あり — 認証情報へのアクセスを制御 | 600 |
~/.emblemai/profiles/<name>/session.json | 認証セッション(JWT +リフレッシュトークン) | あり — 有効期限までウォレットへのアクセスを許可 | 600 |
~/.emblemai/profiles/<name>/secrets.json | 暗号化されたプラグインシークレット | あり — ローカルのみのシークレット素材 | 600 |
~/.emblemai/profiles/<name>/plugins.json | プロファイルごとのカスタムプラグイン | 機密性の高いコード/設定 | ローカルのみ |
~/.emblemai/profiles/<name>/x402-favorites.json | 保存済みの x402 お気に入り | なし | ローカルのみ |
~/.emblemai/profiles/<name>/history/{vaultId}.json | 会話履歴(ボールトごと、プロファイルごと) | なし | ローカルのみ |
~/.emblemai-stream.log | ストリームログ(/log で有効にした場合) | なし | デフォルト |
旧式のフラットレイアウトでインストールされたデータは、初回実行時に ~/.emblemai/profiles/default/ へ移行されます。
暗号化の詳細
認証情報は、AES-256-GCM 対称暗号化を使用する dotenvx によって保存時に暗号化されます。暗号化キーは ~/.emblemai/profiles/<name>/.env.keys に、暗号化されたデータは ~/.emblemai/profiles/<name>/.env に保存されます。どちらのファイルも chmod 600(所有者のみ読み取り/書き込み可能)で作成されます。復号キーがローカルマシンの外に持ち出されることはありません。
セッショントークン(session.json)には、有効期間の短い JWT(自動更新)と、7 日間有効なリフレッシュトークンが含まれます。セッションはディスク上で暗号化されませんが、chmod 600 によってアクセスが制限されます。/auth > Logout からログアウトすると、現在のプロファイルのセッションファイルが削除されます。
従来の認証情報(~/.emblem-vault)は、初回実行時に自動的に ~/.emblemai/profiles/default/ へ移行され、元のファイルはバックアップされます。
トラブルシューティング
| 問題 | 解決策 |
|---|---|
emblemai: command not found | 次を実行してください:npm install -g @emblemvault/agentwallet |
エージェントモードで --profile を求められる | ~/.emblemai に複数のプロファイルがある場合は、--profile <name> を指定してください |
| "Password must be at least 16 characters" | より長いパスワードを使用してください |
| "Authentication failed" | 認証サービスへのネットワーク接続を確認してください |
| 認証用のブラウザーが開かない | 表示された URL をコピーして、手動で開いてください |
| セッションの有効期限が切れた | 再度 emblemai --profile <name> を実行してください。新たにログインするため、ブラウザーが開きます |
| glow が表示されない | glow をインストールしてください:brew install glow(任意。インストールしない場合はプレーンテキストにフォールバックします) |
| プラグインが読み込まれない | npm パッケージがインストールされていることを確認してください |
| 応答が遅い | 通常の動作です。クエリには最大 2 分かかることがあります |
更新
npm update -g @emblemvault/agentwallet
クイックリファレンス
# Install
npm install -g @emblemvault/agentwallet
# Create a profile
emblemai profile create hustle
# Interactive mode (browser auth -- recommended)
emblemai --profile hustle
# Agent mode (zero-config -- auto-generates wallet for the profile)
emblemai --agent --profile hustle -m "What are my balances?"
# Agent mode with explicit password
emblemai --agent --profile hustle -p "your-password-16-chars-min" -m "What tokens do I have?"
# Use environment variable
export EMBLEM_PASSWORD="your-password-16-chars-min"
emblemai --agent --profile hustle -m "Show my portfolio"
# Reset conversation history
emblemai --reset
セキュリティに関する注意事項
このセクションでは、信頼モデル、お使いのマシン上で行われる処理、エージェントを安全に実行する方法について説明します。
信頼モデル
Emblem Agent Wallet は、EmblemCompany が npm と GitHub の両方で公開しているオープンソースの CLI です。インストールする前に、パッケージを確認できます。
- npm レジストリ: @emblemvault/agentwallet — 発行元、バージョン履歴、ダウンロード数を確認できます
- ソースコード:github.com/EmblemCompany/EmblemAi-AgentWallet — ソースコード全体が公開されており、監査できます
- ホームページ:emblemvault.dev — ドキュメントを掲載したプロジェクトのホームページです
npm パッケージと GitHub リポジトリは、同じ組織によって管理されています。npm pack --dry-run を使用するか、インストール後に node_modules/@emblemvault/agentwallet を確認することで、公開されたパッケージの内容をソースリポジトリといつでも比較できます。
インストール時に行われる処理
npm install -g @emblemvault/agentwallet を実行すると、CLI バイナリ emblemai がグローバルにインストールされます。すべてのグローバル npm パッケージと同様に、お使いのマシン上でユーザー権限を使って実行されます。このパッケージには postinstall スクリプトはなく、CLI バイナリとその依存関係を配置するだけです。
認証時に行われる処理
ブラウザー認証(推奨):CLI は 127.0.0.1:18247(localhost のみ。ネットワークからはアクセスできません)で一時的なローカルサーバーを起動し、ブラウザーからの認証コールバックを受け取ります。このサーバーはログイン処理中のみ動作し、1 件のリクエストだけを処理します。ブラウザーで EmblemVault の認証モーダルが開き、EmblemVault サービスに直接認証します。認証に成功すると、セッション JWT がローカルサーバーに返され、選択したプロファイルに保存されます。
パスワード認証:パスワードは HTTPS 経由で EmblemVault の認証 API に送信されます。セッション JWT が返されます。-p フラグを使用すると、今後のセッションで使えるよう、パスワードも暗号化されて選択したプロファイルにローカル保存されます。保存済みの認証情報がないプロファイルでエージェントモードを実行すると、CLI がパスワードを自動生成して、そのプロファイルに保存することがあります。
どちらの場合も、認証情報が第三者に送信されることはありません。認証は、お使いのマシンと EmblemVault の認証サービスとの間だけで行われます。
ディスクに保存されるもの
すべてのファイルは、制限された権限で ~/.emblemai/ 配下に作成されます。
| ファイル | 内容 | 保護方法 |
|---|---|---|
active-profile | 今後のセッションで使用するデフォルトのプロファイルを示すマーカー | ファイル権限は chmod 600 です。選択したプロファイル名のみが含まれます。 |
profiles/<name>/.env | そのプロファイルの EMBLEM_PASSWORD | dotenvx を介して AES-256-GCM で暗号化されます。パスワードが平文で保存されることはありません。 |
profiles/<name>/.env.keys | そのプロファイルの .env を復号する AES キー | ファイル権限は chmod 600(所有者のみ)です。このキーがマシンの外に出ることや、ネットワーク経由で送信されることはありません。 |
profiles/<name>/session.json | JWT アクセストークンとリフレッシュトークン | ファイル権限は chmod 600 です。JWT の有効期限は 15 分で、自動的に更新されます。リフレッシュトークンの有効期間は 7 日間です。ログアウトするとこのファイルは削除されます。 |
profiles/<name>/secrets.json | そのプロファイルの暗号化されたプラグインシークレット | ファイル権限は chmod 600 です。ローカルで暗号化されたシークレット情報のみが保存されます。 |
profiles/<name>/plugins.json | プロファイルごとのカスタムプラグイン設定 | ローカルにのみ保存される設定です。機密性の高いコードや設定として扱ってください。 |
profiles/<name>/history/*.json | そのプロファイルの会話履歴 | ファイル権限は chmod 600 です。AI とのチャットメッセージが含まれます。履歴に認証情報は保存されません。 |
~/.emblemai/ と ~/.emblemai/profiles/ ディレクトリは chmod 700(所有者のみがアクセス可能)で作成されます。
セッションの仕組み
認証セッションでは、有効期間の短い JWT(有効期限 15 分)を使用し、7 日間有効なリフレッシュトークンで自動的に更新します。これにより、次のようになります。
- セッションファイルが侵害されても、攻撃者がアクセスできる期間は最長 7 日間(リフレッシュトークンの有効期限)であり、無期限ではありません
- JWT は頻繁にローテーションされるため、単一のトークンが漏えいした場合の影響期間が制限されます
- ログアウト(
/auth> ログアウト)すると、現在のプロファイルセッションが直ちに無効化され、ファイルが削除されます - 更新のたびに新しいリフレッシュトークンが発行され、以前のトークンは無効化されます(ローテーション)
セーフモードとトランザクションの確認
エージェントはデフォルトでセーフモードで動作します。つまり、次のようになります。
- スワップ、送金、振替、注文の発注、署名、DeFi 操作など、ウォレットを変更するすべての操作には、実行前に明示的な確認が必要です
- 残高の確認、アドレスの検索、市場データ、ポートフォリオの表示など、読み取り専用の操作は確認なしで直ちに実行されます
- エージェントは金額、アドレス、手数料など、トランザクションの詳細をすべて提示し、送信前に承認を待ちます
- 「自動実行」モードはありません。すべてのトランザクションで人間による確認が必要です
パスワードの管理
EMBLEM_PASSWORD はウォレットのマスターキーです。秘密鍵やシードフレーズと同じように慎重に扱ってください。
- 強力で固有のパスワードを使用してください(16 文字以上)。無作為に選んだ 4 語以上のパスフレーズを推奨します
- 他のサービスのパスワードを再利用しないでください。EMBLEM_PASSWORD は EmblemVault 専用のものにしてください
- パスワードを安全に保管してください。CLI はディスク上でパスワードを暗号化しますが、マシンにアクセスできなくなった場合に備えてバックアップを用意してください
- 自動化で
EMBLEM_PASSWORDを環境変数として使用する場合は、ホスト環境を安全に保護してください。マシンへのアクセスを制限し、プロセスを分離して、環境変数がログに記録されないようにしてください - 対話形式で使用する場合は、ブラウザー認証を優先してください。シェル履歴や環境変数にパスワードが残るのを避けられ、認証の適用範囲も選択したプロファイルに限定されます
- パスワードが異なると、別々のウォレットが作成されます。これは意図された仕様です。用途ごとに資金を分けるために活用してください(例:日常使用向けのウォレットと、長期保有向けのウォレット)
パッケージの検証
インストールの前後に、パッケージに含まれるものを正確に確認できます。
# View package contents without installing
npm pack @emblemvault/agentwallet --dry-run
# After installing, inspect the source
ls $(npm root -g)/@emblemvault/agentwallet/
# Compare against GitHub source
git clone https://github.com/EmblemCompany/EmblemAi-AgentWallet.git
diff -r node_modules/@emblemvault/agentwallet EmblemAi-AgentWallet/publish
セキュリティ問題の報告
セキュリティの脆弱性を発見した場合は、責任ある方法でご報告ください。
- GitHub:github.com/EmblemCompany/EmblemAi-AgentWallet/issues で issue を作成してください。
- Discord:discord.gg/Q93wbfsgBj のセキュリティチャンネルでご報告ください。