English summary: Echo is a macOS voice assistant powered by AI and MCP. It helps users run everyday tasks through speech and agent tooling. Built with Swift + Node.js, with MCP integrations for automation.
macOS向けの音声操作アシスタントです。OSの操作や定型的なタスクを、ユーザーの隣にいるエージェントとして実行することを目指しています。
本アプリケーションは、より柔軟で実践的なAIアシスタントの可能性を探るために開発されました。Apple Intelligenceの思想とは異なり、利便性のためにある程度のリスクを許容する実験的なプロジェクトです。
音声コマンドによってMacの操作を補助し、将来的には自律的なエージェントとしてユーザーの作業を代行することを目指しています。
現在のバージョン: 0.01
- 音声入力でAIと対話し、タスクを依頼できる
- AIの返答は音声で返ってくる
- タスクや会話は短く軽量で、サーバーへの送信内容は自動で圧縮される
- MCP(Model Context Protocol)と連携して動作する
| 用途 | 機能 | MCP |
|---|---|---|
| YouTube操作 | 検索、再生、停止 | playwright-mcp |
| Google検索 | 調べ物 | playwright-mcp |
| 天気確認 | 今日・週間の天気を取得 | playwright-mcp |
| 買い物リスト管理 | 追加、編集、削除、確認 | filesystem-mcp |
| Youtube広告のスキップ | 広告のスキップ | mac-control-mcp |
| アプリケーションOCR | Macで起動中のアプリのテキストを判別、判別からクリックも可能 | mac-control-mcp |
| 音量操作 | Macの音量をパーセンテージ指定で変更します | mac-control-mcp |
| ノイズキャンセル操作 | ノイズキャンセルのON、OFFの操作 | mac-control-mcp |
注意: 本バージョンでは、ユーザーの音声や操作に関する情報が、設定されたLLMのサーバーへ送信されます。プライバシーに関するリスクをご理解の上、ご自身の責任でご使用ください。
ダウンロードした zipファイルを解凍し、/Application 配下にコピーし起動します
アプリケーションを動作させるには、いくつかの初期設定が必要です。
このアプリケーションは内部でNode.jsサーバーを起動します。 Homebrewを使用してNode.jsをインストールするのが最も簡単です。
brew install node- “Echo”からマイクにアクセスしようとしています。音声認識のためにマイクを使用します→許可
- 初回起動すると'~/Library/Application Support/echo/server'にディレクトリが作成されます
'~/Library/Application Support/echo/server'のディレクトリを開きます
- .env.example → .env
- settings
- llm_configs_template.json → llm_configs.json
- server_configs_template.json → server_configs.json
- .envの OPENROUTER_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY のどちらかにAPIキーを設定します
- llm_configs.json providerを "gemini"もしくは"openrouter"のどちらかを指定
- server_configs.json @modelcontextprotocol/server-filesystem
メモなどのファイルアクセスを許可するパスを設定。詳しくは filesystem mcp をご確認ください
- MCPの設定次第では“Echo”から“◯◯”フォルダ内のファイルにアクセスしようとしています。と許可がもとめられます
mac-control-mcp をダウンロードし server_configs.json に以下を追加
{
"command": "node",
"args": [
"{ダウンロードしたパス}/mac-control-mcp/index.js"
]
}詳細は mac-control-mcp をご確認ください
ターミナルで which nodeとコマンドを実行したnodeのフルパスを使うと確実に動作します
例
% which node
/Users/{ユーザー名}/.nodebrew/current/bin/node基本的な使い方をいくつか紹介します。
| 操作内容 | 音声コマンドの例 |
|---|---|
| YouTubeを停止する | 「Youtubeでオムライスの作り方を検索してください 確定」 |
| 買い物リストに追加 | 「買い物リストに卵を追加して 確定」 |
| 天気を尋ねる | 「今日の天気は? 確定」 |
| アプリケーションの終了 | 「アプリケーション終了 確定」 |
Hey Siriとは異なり、話してから「確定」と言う事で送信になります。入力をやり直す場合は「キャンセル」で入力のリセットができます。 滑舌やイントネーションの問題で「確定」が認識しずらい場合は設定で変更が可能です。\n(改行)は認識されやすいです。
- エージェントの複数化と交代機能
- タスクの得意分野に応じて、アシスタントを切り替える機能。
- エージェント間連携(A2A)
- 複数のエージェントが協調して、より複雑な問題解決に取り組みます。
- 操作学習機能
- ユーザーのUI操作から作業内容を学習し、自動化を提案します。
- 他デバイス連携
- スマートフォンなど、別のデバイスからmacOS上のEchoに指示を出す機能。
本アプリケーションは実験的な段階にあります。使用すると思わぬ動作を引き起こす可能性がありますので、自己責任でご利用ください。
LLMのモデルによっては、以下のような意図しない動作が確認されています。
- メッセージアプリの誤操作: 特定の相手へのメッセージ送信を指示した際、別ユーザーのウィンドウを複数開いてしまうことがありました。
- 過剰な提案: 「子供の声で作業に集中できない」という趣旨の発言に対し、ノイズキャンセリング機能で声を遮断する提案をすることがありました。
これらの挙動はアプリケーションの不具合というより、LLMの判断によるものです。機密情報や重要なデータを取り扱っている状態での使用は推奨しません。
本プロジェクトへの貢献を歓迎します。バグ報告や機能提案はIssuesへ、コードの改善はPull Requestにてお願いします。
初めての方は good first issue ラベルの付いたIssueから着手することをお勧めします。
将来的には、プロジェクトから収益が発生した場合、その一部をコントリビューターへ分配することを検討しています。
分配方法の詳細はまだ確定していませんが、GitHub SponsorsやOpen Collectiveなどの仕組みを利用し、貢献度に応じて公正に行う予定です。具体的な方針は、決まり次第 CONTRIBUTING.md に記載します。
本プロジェクトは MIT License の下で公開されています。
ただし、将来的にプロジェクトの継続性を担保するため、商用利用を制限するライセンス(BUSLなど)へ変更する可能性があることをご了承ください。
