Keural Duo
お使いのコンピューターで動作する常駐型エージェントの、インストール、会話、ルーチン、Telegram、コンピューターの使用、Mate & Morphです。
Duoは、デスクトップアプリがこのコンピューター(または接続したDGX Spark)にインストールする常駐型エージェントです。隔離されたサンドボックスで動作し、サイドバーのDuoやTelegramで会話し、登録したルーチンを実行します。NVIDIA NemoClaw・OpenClawをベースにしています。
Duoはデスクトップアプリ専用です。
インストール
設定 → Duo → 実行環境でモデルを選び、実行する場所の行のインストールを押します。モデルを選んでいない場合や、ディスクの空きが足りない場合は、インストールボタンが無効になります。
実行場所と要件
| 実行場所 | 要件 |
|---|---|
| このデバイス(macOS) | Apple シリコン、メモリ16GB以上。コンテナーランタイムはアプリが直接インストールするため、Docker Desktop、Homebrew、管理者パスワードは不要です。 |
| このデバイス(Windows) | WSL 2。最初の1回はWindowsを準備を押すと、必要なコンポーネントをインストールします。PCの再起動や管理者権限の許可を求められることがあります。仮想化がオフになっている場合は、BIOSでオンにします。 |
| リモートデバイス(DGX Spark) | Sparkを接続して、先にモデルを実行します。Sparkのファイアウォールが有効な場合は、Sparkのアカウントのパスワードを1回入力してポートを2つ開きます(パスワードは保存されません)。 |
ディスクは20GB以上必要で、40GB以上を推奨します。不足している場合は、インストールボタンがロックされ、「{need} GB 必要 · {free} GB 空きあり」と表示されます。
モデル
| 選択 | 説明 |
|---|---|
| このデバイスのモデル | ダウンロード済みのローカルモデルのうち、実行中のモデルを使用します。「{model} · チャットと同じモデル」と表示されます。 |
| DGX Spark | 接続したSparkで実行中のモデルです。 |
| クラウド | プランに含まれるDuoのモデルです。サインインすると一覧が表示されます。 |
| ゲートウェイ | 設定 → モデル → ゲートウェイで接続したサーバーのモデルを使います。そのサーバーのアドレスとAPIキーが必要です。 |
インストール後も、モデルの行でモデルを変更できます。同じ種類の中では「切り替える」ですぐに切り替わります。ローカル・クラウド・ゲートウェイの間で種類が変わる場合は、種類が変わると再インストールされます。再インストールしてもルーチンは維持されます。実行場所を移すには、先に削除してから、別の場所にインストールします。
インストールの手順
このデバイスの確認 → コンテナーランタイムの準備 → NemoClawのインストール → モデルの起動(クラウド・ゲートウェイの場合はモデルの利用権限の準備) → サンドボックスの作成 → Duoの設定 → 動作の確認の順に進みます。現在の段階はボタンと進行カードに表示されます。「少し時間がかかっています。アプリを開いたままにしてください。」と表示されても、アプリを閉じないでください。
インストールが止まったら、インストールできないときで画面の表示から原因を確認します。
ほかのアカウント・ワークスペースのDuo
Duoはデバイスごとに1つで、インストールしたアカウントとワークスペースに属します。別のアカウントでサインインしたり、別のワークスペースに切り替えたりすると、設定のDuoは「インストールされていません」と表示され、サイドバーのDuoとMate & Morphは非表示になります。この状態でインストールを押すと、「ほかのアカウントまたはワークスペースのDuoがあります。新しくインストールすると、そのDuoと会話・ルーチンが削除されます」という確認ウィンドウが表示されます。新しくインストールを押すと、既存のDuoを削除して新しく作成します。元のアカウント・ワークスペースに戻ると、既存のDuoが再び表示されます。
以前にインストールしたDuoが残っている場合は、整理してからインストールします。整理に失敗すると、「既存のDuoを削除できませんでした。もう一度インストールしてください。」と表示されます。
インストールできないとき
インストールが止まると、設定 → Duoにエラーメッセージが表示されます。メッセージ末尾の括弧内のコードも確認します。原因を解決したら、インストールをもう一度押します。
| 画面の表示 | 原因 | 対処 |
|---|---|---|
ディスク容量が不足したため、インストールを中止しました。空き容量を {need} GB 以上確保してから再度インストールしてください | ホームフォルダーがあるディスクの空きが 20GB 未満です。 | 20GB 以上(40GB 推奨)の空き容量を確保します。 |
| コンテナランタイムを準備できませんでした。接続を確認して、もう一度お試しください | インストールファイルをダウンロードできませんでした。社内のファイアウォールやプロキシが原因の場合が多いです。 | インターネット接続を確認します。社内ネットワークの場合は、ダウンロード先のアドレスの許可をIT担当者に依頼します。 |
| 以前の Duo を削除できませんでした。もう一度インストールしてください。 | この端末に残っていた以前の Duo を整理できませんでした。 | アプリを完全に終了してから開き直し、インストール を押します。繰り返す場合は macOS タブの同じ表示を確認します。 |
| この端末には別のアカウントまたはワークスペースの Duo があります。インストールすると削除されます。 | この端末のDuoが別のアカウント・ワークスペースに属しています。 | 新しくインストール を押すと、そのDuoを削除してインストールします。既存のDuoを使い続けるには、元のアカウント・ワークスペースに切り替えます。 |
| このプランでは Duo でクラウドモデルを使えません。 | 現在のワークスペースのプランにはクラウド版 Duo が含まれていません。 | モデルを この端末のモデル、DGX Spark、ゲートウェイのいずれかに変えるか、プランを確認します。 |
| ログインするとクラウドモデルを使えます。 | サインアウトしています。 | サインインしてから、もう一度インストールします。 |
| Duoのモデルが実行されていません。起動してからもう一度適用してください。 | この端末のモデルが停止しています。 | 設定 → モデル でモデルを実行してから、インストールします。 |
| 通常より時間がかかっていますが、処理は続いています。アプリを開いたままにしてください。 | 初回のインストールは、ダウンロードするファイルが多いため時間がかかります。 | アプリを閉じずに待ちます。ノート PC なら、スリープしないようにします。 |
解決しない場合は、設定 → サポート で問い合わせます。画面の表示、括弧内のコード、端末の種類(macOS・Windows・Spark)を伝えてください。
設定 → Duoの画面
| 領域 | 内容 |
|---|---|
| 状態 | 「{場所}で実行中」・停止中・起動中・インストールされていない・サーバーなし(Sparkの接続が切れている場合) |
| 実行環境 | モデルの選択、このデバイス/リモートデバイスの行のインストール・起動・停止・削除、サンドボックスのIDとNemoClawのバージョン |
| チャットアプリ | Telegramの接続 |
| 接続 | GitHub、ウェブ検索 |
| コンピューターの使用 | 権限、読み取れるフォルダー、行動の前のルール、常に許可したアプリ、Mate & Morph |
| 会話のメモリ | コンテキストの使用量、会話の圧縮、新しい会話 |
| 新機能(Windows) | Windowsコンピューターの接続、共有フォルダー、アプリへのアクセス確認、最近の作業 |
インストール・モデルの切り替え・チャットアプリの適用・削除などの長い作業の間は、ほかの領域がロックされます。コンピューターの使用をオンにするとき、またはルールを広げるときは、OSの確認ウィンドウが表示されます。
会話
サイドバーのDuoを押します(コードモードでは表示されません)。接続が切れている間に送ったメッセージは「{n}件 送信待ち」と表示され、接続が戻ると届けられます。/newを送ると、新しい会話を始めるかどうかの確認が表示されます。
上部のDuo情報をオンにすると、横のパネルに次のカードが表示されます。
| カード | 内容 |
|---|---|
| 実行中の作業 | 休止中または進行中の作業と経過時間、使ったツール |
| Duoの設定が変わりました | サンドボックスの設定が前回の確認時と異なるときに表示されます。変わった領域(チャットアプリと会話できる人・ツールと権限・接続されたサービス・モデルの接続・その他)を示します。自分で変更した場合は、変更を承認を押します。 |
| サンドボックス | 準備完了/エラー、モデルの応答が正常/応答なし、GPU(CUDA)の使用の有無、容量 |
| モデル | モデル名、場所(このデバイス・DGX Spark・クラウド)、コンテキストの使用量 |
| ルーチン | 下のルーチンを参照 |
| 接続・Telegram | 接続の概要です。押すと設定に移動します。 |
| 作業ファイル | Duoがサンドボックスの作業フォルダーに作ったファイル |
バックグラウンドタスクボタンを押すと、Duoが実行しているサブエージェントの一覧を表示します。
会話のメモリ
設定 → Duo → 会話のメモリで、「使用中のコンテキスト」をトークン数と割合で確認します。圧縮で会話を短くするか、新規で新しい会話を開きます。現在の会話は保管されます。Duoが作業中の場合は、作業が終わった後に行えます。「会話が長くなりすぎて、モデルが処理できないため、Duoが答えられませんでした。」と表示されたら、圧縮するか新しく始めてください。
ルーチン
Duoに「毎朝9時に…してね」のように話すと、このルーチンを作りますか?カード(作業・予定・実行場所)が表示されます。ルーチンを作るを押すと登録されます。変更や削除のときも、同じカードで確認します。
| 項目 | 内容 |
|---|---|
| 周期 | 1回(最大365日後まで)・毎日・平日・毎週・N分ごと(5〜1,440分) |
| 実行場所 | Keuralアプリの Duoの会話、またはTelegramに配信 |
| 件数 | 有効10件、全体50件 |
| 期限 | 既定は7日、最大30日。過ぎると「期限切れ」 |
| 見逃し | アプリが閉じていたため、予定の時刻から10分を超えて遅れた場合は実行せず、「未実行」として残ります |
| 失敗 | 連続で3回失敗すると、「失敗のため一時停止中」になります |
Duo情報パネルのルーチンカードで、オン・オフを切り替えます。もっと見るから、今すぐ実行・削除を行えます。行ごとに、次の実行時刻と状態(送信済み・未実行・失敗・一時停止中・期限切れ)が表示されます。ルーチンの結果は、Duoの会話またはTelegramに届き、デスクトップ通知も表示されます(今すぐ実行は通知なし)。ルーチンは、アプリが開いているときに実行されます。
チャットアプリ(Telegram)
設定 → Duo → チャットアプリ → Telegram → 接続するで、案内に従います。
- Telegramで@BotFatherを開き、
/newbotを送ってから、ボットの名前とユーザー名を決めます。 - BotFatherが発行したボットトークンを貼り付けて、確認を押します。トークンが漏えいすると誰でもボットを操作できてしまうため、公開しないでください。
- QRコードをスマートフォンで読み取ってボットを開き、開始を押します。メッセージが届かない場合は、画面のコードをボットに送ってください。
- 「
{名前}さんだけが個人のメッセージで会話できます」と表示されたら、追加を押し、続けて適用を押します。
適用すると、Duoが再起動されます(会話とファイルはそのまま残ります)。その後、スマートフォンから送った内容は、Duoの会話に「Telegramから送信」として表示されます。接続した1人だけが、個人のメッセージで会話できます。接続を切るには、接続を解除を押してから適用を押します。Telegramを接続すると、ルーチンの承認もTelegramで受け取ります。
ボットトークンは、1つのアカウントの1台のDuo(端末)でのみ使えます。別の機器に接続するには、既存の機器で接続を解除してから、トークンを再登録します。
アプリでの作業の承認は、Telegramから始めた会話であっても、Keuralアプリのウィンドウだけで行います。
接続
設定 → Duo → 接続で設定します。
| サービス | 方法 |
|---|---|
| GitHub | パーソナルアクセストークンを貼り付けて確認するか、GitHub CLI で続けるで、このコンピューターのghのサインインを使います。CLIがない場合はインストールのリンクが、サインインしていない場合はサインインのウィンドウが開きます。接続または変更すると、Duoが再起動されます。 |
| ウェブ検索 | 設定 → 一般 → Web検索で選んだ方法(クイック検索・Keuralの検索・自分の検索サービスのTavily・Brave・SearXNG)を、そのまま使います。コンピューターの使用がオンになっている必要があります。 |
コンピューターの使用
設定 → Duo → コンピューターの使用 → Duoがこのコンピューターを使うことを許可するをオンにすると、Duoがこのコンピューターのアプリを開いて使ったり、指定したフォルダーを読んだり、ルーチンを作ったりできます。オンにすると、Duoが1分ほど再起動します。
| 項目 | 内容 |
|---|---|
| macOSの権限 | アクセシビリティ(クリック・入力)と画面収録(画面を見る)。許可していない場合はシステム設定を開くを押します。 |
| Duoが読めるフォルダー | フォルダーを追加で指定したフォルダーだけを読みます。ホームフォルダー全体やシステムフォルダーは追加できません。 |
| Duoが行動する前 | 毎回確認する(既定)・確認せずに実行・あなたに任せる。確認せずに実行に変えるときは、もう一度確認します。 |
| 常に許可したアプリ | 承認ウィンドウで常に許可したアプリの一覧。行の×を押して削除します。 |
確認せずに実行でも、常に許可でも、送信・削除・上書き・支払い・提出・サインイン・公開・キャンセルなどの重要な操作と、Enter・Backspace・⌘Qなどのキーは、必ず先に確認します。
Duoが許可を待っている場合は、入力欄の上に「Duoが承認を待っています」と表示されます。確認を押すと承認ウィンドウが開き、拒否・今回のみ許可・常に許可から選びます。Mate & Morphにも「承認を待っています」と表示されます。承認はこのウィンドウでのみ行えます。
Duoは検索結果のリンクだけを承認なしで開きます。Duoが直接入力または変更したアドレスは、承認ウィンドウにアドレス全体を表示して確認します。
Mate & Morph
Duoのデスクトップのキャラクターです。設定 → Duo → コンピューターの使用 → Mate & Morph → デスクトップに表示をオンにして、キャラクター(Mate・Morph・両方)とサイズ(小・標準・大)を選びます。
- Duoが実行中で、会話の準備ができているときだけ表示されます。別のアカウント・ワークスペースに切り替えたり、プランによってDuoが使えなくなったりすると、非表示になります。
- キャラクターを1回押すと入力欄が開き、すぐに話しかけられます。すばやく2回押すと、アプリが開きます。キャラクターの横には、状態(待機中・作業中・完了・詰まり・入力が必要・承認を待っています)と、最後の回答が失敗した理由が表示されます。
- 右クリックのメニュー:非表示・既読にする・Duoを開く・Duoの設定。メニューバー(トレイ)のメニューにも、Mate & Morphを表示/非表示があります。
Windows
WindowsのDuoは、WSLのディストリビューション内で動作し、会話・ルーチン・Telegram・承認・Mate & Morph・コンピューターの使用をmacOSと同様にサポートします。一部のアプリや、パスワード入力欄・UAC・ターミナルなどの保護されたウィンドウは、Duoが操作せず、ユーザーに引き渡します。
設定 → Duo → 新機能(Windowsコンピューター)で、Duoの接続、共有フォルダー(Duoは選択したフォルダーだけを読み取ります)、アプリへのアクセス、最近の作業を確認します。Windowsでは、ソフトウェアのインストール(正確なパッケージIDのみ)とWi‑Fi接続(保存されたプロファイル)もでき、送信・削除・上書き・インストール・ネットワークの変更は、必ず先に確認します。
削除
設定 → Duo → 実行環境で、インストールされた場所の行の削除を押し、確認ウィンドウで削除を押します。サンドボックス、会話の履歴、ルーチン、作業ファイルが削除されます。macOSでは、Duo専用のコンテナーVMも削除されます。DGX SparkのDuoは、Sparkが接続されている間だけ削除できます。
よく見る表示
| 表示 | 意味 |
|---|---|
| Duoが実行中ではありません | 設定 → Duoで開始を押します。 |
| 最新のデスクトップアプリが必要です | アプリを更新します。 |
| モデルが実行中ではありません。モデルを起動してから、もう一度適用してください。 | ローカル・Sparkのモデルがオフになっています。先にモデルを実行します。 |
| モデルの接続が切れました。サインインの状態を確認してください。 | クラウドモデルのDuoへのアクセス権が切れました。もう一度サインインします。 |
| このワークスペースのプランでは、Duoを使えません。 | クラウドモデルのDuoを使えないプランです。ローカルモデルに切り替えるか、プランを確認します。 |
| ほかのアカウントまたはほかのワークスペースのDuoがあります。 | インストールすると、そのDuoは削除されます。元のアカウント・ワークスペースに切り替えると、そのまま使えます。 |
| 既存のDuoを削除できませんでした。もう一度インストールしてください。 | 以前にインストールしたDuoを整理できませんでした。インストールを押し直します。 |
IT担当者向けの詳細
要件
| 実行場所 | 基準 |
|---|---|
| macOS | Apple シリコン(arm64)、メモリ16GB以上。Duo用の仮想マシン(Colima、vz)は、CPU 4個・メモリ9GiB・ディスク40GiB(必要な分だけ使用)を使います。 |
| Windows | WSL 2(カーネル5.15以降)、x64またはARM64。ディストリビューションのUbuntu 24.04をKeural-Duoという名前でインストールし、その中でrootless Podmanを使います。Docker Desktopは不要です。 |
| DGX Spark | Dockerが動作し、残りのディスク20GB・使用可能なメモリ8GB以上 |
| 共通 | ホームフォルダーがあるディスクに20GB以上の空き(40GB推奨) |
Windowsでは、インストールの際に%USERPROFILE%\.wslconfigの[wsl2]にnetworkingMode=natを使います。ミラーリングネットワーキング(mirrored)を使っているPCにはインストールされません。
インストールされる場所
| 実行場所 | パス |
|---|---|
| macOSのランタイム | ~/.keural-runtime/(Colima・Lima・Docker CLI、ログ) |
| macOSの自動起動 | ~/Library/LaunchAgents/kr.mkd.keural-duo-colima.plist、kr.mkd.keural-duo-gateway.plist、kr.mkd.keural-duo-sweeper.plist |
| NemoClaw CLI | ~/.local/bin/nemoclaw |
| Windows | WSLのディストリビューションKeural-Duo |
| アプリの記録 | アプリデータフォルダーのkeural-duo@<サーバー>.json、keural-duo-routines@<サーバー>.json、keural-duo-rules@<サーバー>.json |
| ログ | ~/.keural/logs/、~/.keural-runtime/colima.log・gateway.log、アプリデータフォルダーのkeural-duo-install.log |
ダウンロード先
ファイアウォールやプロキシで、次のアドレスを許可します。ダウンロードするファイルは固定のバージョンで、SHA-256で検証します。
| アドレス | ダウンロードするもの |
|---|---|
github.com | Colima v0.10.3、Lima v2.2.1、buildx v0.38.2(macOS)、Podmanのツール(Windows) |
download.docker.com | Docker CLI 29.9.3(macOS) |
www.nvidia.com | NemoClawのインストールスクリプト(v0.0.134) |
ghcr.io | OpenClawのサンドボックスイメージ |
api.telegram.org | Telegramの接続 |
Keuralのサーバー(api.keural.aiなど) | クラウドモデル、サインイン |
ウェブ検索やGitHubの接続を使う場合は、api.tavily.com、api.search.brave.com、api.github.com、api.githubcopilot.comも許可します。
ネットワークとポート
| 場所 | ポート | 用途 |
|---|---|---|
| macOS | 127.0.0.1:8080 | OpenShellゲートウェイ |
| macOS・Windows | 127.0.0.1:8766 | このデバイスのモデルサーバー(Windowsは、WSL内の中継)。重なる場合は8768 |
| DGX Spark | 18080〜18099のうち空いているポート | Spark専用のゲートウェイ |
| DGX Spark | 18081 | サンドボックスからSparkのモデル(8000)への中継 |
| DGX Spark | 22 | アプリのSSH接続 |
Sparkでufwファイアウォールがオンになっている場合は、インストールの途中でゲートウェイと中継のポートを2つ開きます。このとき、Sparkのアカウントのパスワードを1回入力します。
サンドボックスは、インターネットに直接接続しません。ウェブ検索とページの読み取りはアプリが代行し、GitHubは読み取り専用で接続します。
モデルのアドレス
| モデル | サンドボックスが呼び出すアドレス |
|---|---|
| このデバイスのモデル | http://localhost:<ポート>/v1。既定のモデルqwen3-8-27b、コンテキスト262,144 |
| DGX Sparkのモデル | Sparkの中継を経由して、Sparkの127.0.0.1:8000/v1 |
| クラウドモデル | Keuralサーバーの/core/v1/bot/v1。Duoごとに発行されたトークンを使います。 |
| ゲートウェイ | 設定 → モデル → ゲートウェイで接続したサーバーのアドレス |
ゲートウェイのアドレスは、httpsであればどこでもかまいません。httpの場合は、プライベートIPや社内の名前(.local・.lan・.internal・.intranet・.home.arpa、ドットのない名前)だけを受け付けます。localhostやuser:pass@を含むアドレスは受け付けません。
Telegram
- ボットトークンは、BotFatherの
/newbotで取得します。形式は数字:英数字です。 - 接続コードが作成されたら、10分以内にスマートフォンでボットを開き、5分以内に最初のメッセージを送ります。最初のメッセージを送ったアカウントが許可されます。
- グループの会話には返答しません。
ルーチンの制限
| 項目 | 値 |
|---|---|
| 確認の周期 | 30秒ごとに、実行するルーチンを探します。 |
| 見逃し | 予定の時刻から10分を超えて遅れた場合は、実行せず見逃しとして残します。 |
| 一時停止 | 3回連続で失敗すると停止します。 |
| 繰り返しの間隔 | 5〜1,440分 |
| 1回の実行 | 365日後まで |
| 期限 | 既定は7日、最大30日 |
| 件数 | オンにしたルーチン10件、全体50件 |
| タイムゾーン | ルーチンを作成したコンピューターのタイムゾーン |
フォルダー追加のルール
次のフォルダーは追加できません。
| 区分 | フォルダー |
|---|---|
| 共通 | ディスクのルート、ホームフォルダー自体とその上位 |
| ホームの下 | .ssh、.aws、.gnupg、.kube、.docker、.config、Library、.Trash、AppData |
| macOS | /System、/Library、/usr、/bin、/sbin、/etc、/var、/private、/dev、/Volumes、/Applications、/opt、/cores |
| Windows | Windows、Program Files、Program Files (x86)、ProgramData |
コンピューターの使用の権限
| OS | 必要な権限 |
|---|---|
| macOS | システム設定 → プライバシーとセキュリティのアクセシビリティ、画面収録 |
| Windows | 別途の権限は不要です。WindowsのUI自動化を使います。 |
送信・削除・支払い・購入・提出・サインイン・送金・公開・キャンセルなどのボタンや、Enter・Delete・ウィンドウを閉じる・アプリを終了するなどのキーは、重要な操作として扱い、そのたびに確認します。
削除時に消えるもの
削除を押すと、サンドボックス、Duoの会話履歴、ルーチン、Telegram・GitHub・検索の接続、クラウドモデルのトークンが削除されます。この端末に別のDuoがない場合、macOSでは~/.keural-runtime/と自動起動の項目も削除されます。Mate & Morphの設定とSparkの接続履歴はデバイスの設定のため、残ります。