この記事ではAIエージェントに特化して解説します。AIエージェント全般は AIエージェントフレームワーク比較2026年版 をご覧ください。

V3SP3Rが生まれた背景:Flipper ZeroとAIエージェントの交差点

Flipper Zeroは、SubGHz無線・赤外線・NFC・RFID・BadUSB・iButton・GPIOなど多彩な機能を1台に詰め込んだポータブルなハードウェアハッキングツールだ。セキュリティ研究者やハードウェア開発者の間で愛用されている一方で、メニュー階層が深くプロトコルごとの操作手順を暗記する必要があり、「多機能ゆえの敷居の高さ」が常について回っていた。

「確定申告を頼むとしたら、天才数学者に頼むか、経験豊富な税理士に頼むか?」

これはClaude Skillsの文脈でよく引用される比喩だが、Flipper Zeroの世界でも同じことが言える。汎用LLMは「天才数学者」だが、SubGHzのモジュレーションや国別の周波数規制、NFCのセクタ構造まではいちいち仕込まないと動けない。V3SP3Rが目指したのは、LLMに「Flipper Zero専門の税理士」として振る舞わせることだ。

V3SP3Rは、elder-plinius氏が公開したOSSで、GitHubで928スターを獲得している。AndroidアプリからFlipper Zeroに自然言語で指令を出し、LLMが解釈してBLE経由でコマンドを送る。ユーザーは「315MHzでキャプチャして」「NFCカードの内容を読み出して」と話しかけるだけで、複雑なメニュー操作をスキップできる。

V3SP3Rのメイン画面

OpenHandsのようなコーディングエージェントがソフトウェア開発の作業をLLMに委ねたのと同じ構造で、V3SP3Rは「物理デバイス制御」という新しい領域にAIエージェントを持ち込んだ。「自然言語 → ツール呼び出し → 実行」というLLMエージェントの基本パターンが、ハードウェアハッキングの世界にも降りてきた格好だ。

この章のポイント
Flipper Zeroは多機能だがメニュー操作とプロトコル暗記が障壁
V3SP3RはLLMに「Flipper Zero専門の知識」を与え、自然言語で操作可能にする
GitHub928スターを獲得、AIエージェント × ハードウェア制御の先駆的OSS

V3SP3Rの主要機能:8つのコア機能を俯瞰する

V3SP3Rは単なるリモコンアプリではない。公式READMEによれば、8つのコア機能が組み合わさって「AIで操作するFlipper Zero」を構成している。

機能 概要 代表的なユースケース
自然言語制御 音声・テキストでFlipperを操作 「315MHzに周波数変更して」
マルチモーダル入力 音声・写真・チャットを統合 リモコン写真からIRコード学習
Alchemy Lab カスタムRF波形のビジュアルエディタ 波形を構築・レイヤリング・エクスポート
Payload Lab AI生成ペイロード BadUSB・SubGHz・IR・NFCを自動生成
FapHub Browser Flipperアプリストア連携 アプリ検索・ワンタップインストール
スマートグラス連携 Mentraグラスでハンズフリー 音声とカメラをブリッジ接続
リスク分類エンジン 全AIアクションの安全性評価 破壊的操作は二重確認
監査ログ 全操作履歴を記録・エクスポート コマンド・結果・承認でフィルタ

アーキテクチャ全体像

V3SP3Rは典型的な3層アーキテクチャを採用している。UI層はJetpack Compose + Hiltで構築され、ドメイン層でAIオーケストレーションとリスク評価を行い、データ層がOpenRouter API・BLE通信・Roomデータベースを管理する。

graph TB User["ユーザー入力
音声 / テキスト / 写真"] subgraph App["V3SP3R Android App"] UI["UI層
Jetpack Compose + Hilt"] Agent["VesperAgent
AIオーケストレーション"] Risk["RiskAssessor
リスク分類エンジン"] Executor["CommandExecutor
コマンド実行"] Forge["ForgeEngine
ペイロード生成"] end subgraph External["外部サービス"] OpenRouter["OpenRouter API
LLMモデル"] Flipper["Flipper Zero
BLE接続"] Glasses["Mentraスマートグラス
ブリッジサーバー"] end User --> UI UI --> Agent Agent --> OpenRouter Agent --> Risk Risk --> Executor Executor --> Flipper Agent --> Forge Forge --> Flipper UI --> Glasses

重要なのは、LLMが直接Flipperを叩くのではなく、必ずRiskAssessorCommandExecutorを経由する設計になっている点だ。LLMは「何をしたいか」をJSONで表現し、それをアプリ側が解釈・検証してからBLEに流す。プロンプトインジェクションや暴走した推論結果が直接ハードウェアに到達しないよう、ガードレールがアプリ側に埋め込まれている。

Browser Useのようなブラウザ自動化エージェントがWeb上のタスクを自動化するように、V3SP3Rは物理デバイスのタスクを自動化する。違いはただ1点、「操作対象が電波やICチップである」というところだ。

この章のポイント
V3SP3Rは8つのコア機能で構成される「AIで操作するFlipper Zero」
3層アーキテクチャでUI/ドメイン/データを分離、リスク評価を必ず経由
LLMはJSONでツール呼び出しを表現、アプリ側が検証してからBLEに流す

セットアップ手順:クローンからFlipper Zero接続まで

V3SP3Rの導入は、リポジトリのクローンからAndroid Studioでのビルド、Flipper Zeroとのペアリングまで数ステップで完了する。Android Studioを使わずCLIだけでビルドすることも可能で、JDK 17+があればローカルでAPKを生成できる。

前提条件

  • Flipper Zero本体(Bluetoothペアリングを有効化済み)
  • Android 8.0以上のデバイス(Kotlin 2.2ターゲット)
  • OpenRouterアカウント(APIキーを取得済み)
  • Android Studio または JDK 17+

ビルドとインストール

# リポジトリをクローン
git clone https://github.com/elder-plinius/V3SP3R.git
cd V3SP3R

# Android Studioなしでビルドする場合(JDK 17+必須)
./gradlew assembleDebug

# APK出力先
# app/build/outputs/apk/debug/app-debug.apk

# ADB経由でインストール
adb install app/build/outputs/apk/debug/app-debug.apk

インストールが完了したら、V3SP3Rを起動して初期設定に進む。ポイントはOpenRouter APIキーの登録と、Flipper ZeroのBLEスキャンの2つだけだ。

初回起動の設定フロー

// 設定手順(OpenRouterClient.kt・SettingsScreen.kt の流れに相当)

// 1. Settings > API Key を開く
// 2. OpenRouter で発行した sk-or-... 形式のキーを貼り付け
// 3. 推奨モデル: nousresearch/hermes-4
//    または anthropic/claude-sonnet-4
// 4. Device タブ > Scan をタップ
// 5. 近くのFlipper Zeroが表示されたら選択してペアリング
// 6. Chat タブから自然言語で操作開始

スマートグラス連携(オプション)

Mentraスマートグラスと組み合わせると、完全ハンズフリーで音声 + カメラを使える。ブリッジサーバーはNode.js製で、スマホとグラスの間の中継役を担う。

# mentra-bridgeサーバーのセットアップ
cd mentra-bridge
npm install
npm run build
npm start

# V3SP3R Settings > Smart Glasses を有効化
# ブリッジURL(例: http://192.168.1.10:3000)を入力
# Mentraグラス側でV3SP3Rチャンネルに接続
APIキーの扱いに関するTip
OpenRouter APIキーは端末ローカルに暗号化保存される。複数端末で使う場合は各端末で個別に登録する必要がある。
Flipper ZeroのBLE接続が不安定なときは、Flipper本体の設定でBluetoothをいったんオフ→オンに切り替えると再認識しやすい。
この章のポイント
`./gradlew assembleDebug` でCLIだけでもビルド可能、JDK 17+があればOK
初期設定はOpenRouter APIキー登録とBLEスキャンの2ステップ
Mentraグラス連携はNode.js製ブリッジサーバーを挟んで実現

リスク分類システム:安全なAI制御を支える4層ゲート

V3SP3Rの最大の特徴は、全AIアクションに対して4段階のリスク分類を行い、操作ごとにゲートを設ける「リスクティア制」の導入だ。LLMが発行したツール呼び出しは、必ずRiskAssessorを通ってからFlipper Zeroに届く。

リスクレベル別の挙動

リスクレベル 操作例 デフォルトの挙動
Low(低) ファイル一覧、デバイス情報、ストレージ確認 自動実行
Medium(中) ファイル書き込み、CLI実行、IR送信、アプリ起動 差分レビュー表示
High(高) ファイル削除、SubGHz送信、BadUSB実行 二重確認ダイアログ
Blocked(ブロック) システムパス・ファームウェア領域 手動アンロック必須

このティア設計は、ソフトウェア側でAIに外部ツールを操作させるときの安全設計と同じ考え方だ。MCPサーバー構築ガイドで解説したツール実行の権限制御と本質的に共通しており、「LLMがどれだけ賢くても、破壊的操作は必ず人間が最終確認する」という原則に基づいている。

flowchart LR A["LLMのツール呼び出し
(JSON)"] --> B["RiskAssessor
リスク評価"] B -->|Low| C["自動実行"] B -->|Medium| D["差分レビュー
ダイアログ"] B -->|High| E["二重確認
ダイアログ"] B -->|Blocked| F["手動アンロック
必須"] C --> G["CommandExecutor"] D -->|承認| G E -->|承認| G G --> H["Flipper Zero
BLE送信"] C -.->|監査ログ| I["AuditService
Room DB"] D -.->|監査ログ| I E -.->|監査ログ| I

自動承認とアンロックのカスタマイズ

Settings画面では、ティアごとに「自動承認する/しない」を切り替えられる。たとえば読み取り専用操作(Low)はすべて自動承認、IR送信のようなMedium操作は差分レビュー、SubGHzやBadUSBのようなHigh操作は常に二重確認、という形で段階的にセキュリティレベルを調整できる。

すべてのAIアクション結果をリスク分類し、破壊的操作には明示的な確認を要求する。システムパスはデフォルトでロックされている。

READMEに記された上記の設計思想は、「プロンプトインジェクションやLLMの暴走に対して、アプリケーション層で物理的なガードを設ける」という発想に根ざしている。仮にLLMが「重要なFlipper設定ファイルを全削除して」という悪意あるJSONを吐いても、システムパスのBlockedゲートがそれを遮断する。

監査ログ:全操作を追跡可能に

全AIアクションはAuditServiceを介してRoomデータベースに記録される。コマンド内容、実行結果、ユーザーの承認・却下履歴がタイムスタンプ付きで保存され、後からフィルタ・エクスポートできる。コンプライアンス要件がある現場でも操作履歴を提出できる。

この章のポイント
Low・Medium・High・Blockedの4段階ティアで操作ごとにゲートを設ける
LLMの出力は必ずRiskAssessor → CommandExecutor を通ってからBLEに流れる
監査ログで全AIアクションを追跡可能、コンプライアンス要件にも対応

推奨AIモデルの選び方:OpenRouter経由で何を使うか

V3SP3RはOpenRouter経由で任意のLLMを利用できる。ただしツール呼び出し(Function Calling)の精度はモデルごとに大きく差があるため、選択が実用性を左右する。

モデル別の推奨度

モデル 特徴 速度 コスト 推奨用途
nousresearch/hermes-4 ツール呼び出し精度が最高 高速 $$ パワーユーザーの日常利用
anthropic/claude-sonnet-4 速度・知能・コストのバランス最良 高速 $$ デフォルト推奨
anthropic/claude-opus-4.6 複雑な推論・信号解析に最強 中速 \(\) 高度な分析タスク
anthropic/claude-haiku-4 単純な読み取り・コマンドに最速 最速 $ 簡単な操作
openai/gpt-4o 汎用的な代替選択肢 高速 $$ GPT派のユーザー

Flipper Zeroの操作コマンドはすべてJSON形式で構造化される。LLMが正しくJSONを吐けないとツール呼び出しが失敗する。V3SP3Rには自動JSON修復機能が組み込まれているが、Hermes 4やClaude Sonnet 4のような推奨モデルを使うほうがエラー率を最小化できる。

コスト感の目安

OpenRouterは従量課金制で、日常的なFlipper操作(短い音声コマンドと応答)であれば1日あたり数セント程度に収まる。一方、カメラで撮ったリモコンからIRコード一覧を推論させるようなマルチモーダル処理はトークン消費が増えるため、用途に応じて使い分けるのが良い。

// OpenRouterClient.kt 相当の呼び出しイメージ
val request = ChatRequest(
    model = "nousresearch/hermes-4",
    messages = listOf(
        SystemMessage(VesperPrompts.flipperAgent),
        UserMessage("315MHzでキャプチャして")
    ),
    tools = FlipperToolExecutor.availableTools,
    tool_choice = "auto"
)

val response = openRouter.chat(request)
response.toolCalls.forEach { call ->
    val risk = riskAssessor.classify(call)
    if (risk.requiresConfirmation) showDialog(call, risk)
    else commandExecutor.execute(call)
}

他のAIエージェントフレームワークとの比較

V3SP3Rの立ち位置を、ソフトウェア側のAIエージェントと比較して整理する。

比較項目 V3SP3R OpenHands Browser Use ForgeCode
対象ドメイン ハードウェア(Flipper Zero) ソフトウェア開発 Webブラウザ操作 コード生成
入力方式 音声・写真・テキスト テキスト テキスト テキスト
実行環境 Android + BLE Docker ブラウザ CLI
リスク管理 4段階ティア サンドボックス ブラウザ分離 コードレビュー
LLM連携 OpenRouter(マルチモデル) 複数LLM対応 複数LLM対応 複数LLM対応
物理デバイス制御 対応 非対応 非対応 非対応

ForgeCodeのようなコード生成ツールはソフトウェア開発を自動化するが、V3SP3Rは電波やICチップといった物理レイヤを扱う。共通するのは「AIエージェントが専門ツールを操作する」というパターンで、対象がコードか電波かの違いに過ぎない。

この章のポイント
ツール呼び出し精度が重要。Hermes 4かClaude Sonnet 4が実運用の第一候補
OpenRouter従量課金で日常用途は1日数セント、マルチモーダルは要注意
V3SP3Rは「AIエージェント × 物理デバイス」、ソフト系エージェントと補完関係

プロジェクト構造と技術スタック:Kotlin 2.2 + Jetpack Compose

V3SP3Rの実装はモダンなAndroidスタックで固められている。Kotlin 2.2・Jetpack Compose・Hilt・Roomといった2020年代後半の標準的な構成で、Flipper ZeroとのBLE通信にはFlipper独自のprotobufを実装している。

リポジトリ構造

V3SP3R/
├── app/src/main/java/com/vesper/flipper/
│   ├── ai/                     # AI統合
│   │   ├── OpenRouterClient.kt # LLM API、ツール呼び出し、JSON修復
│   │   ├── VesperAgent.kt      # 会話オーケストレーター
│   │   ├── VesperPrompts.kt    # システムプロンプト
│   │   ├── PayloadEngine.kt    # ペイロード生成
│   │   └── FlipperToolExecutor.kt
│   ├── ble/                    # Bluetooth通信
│   │   ├── FlipperBleService.kt
│   │   ├── FlipperProtobuf.kt
│   │   └── MarauderBridge.kt
│   ├── glasses/                # スマートグラス連携
│   ├── voice/                  # 音声入出力
│   ├── domain/                 # ドメインロジック
│   │   ├── executor/           # コマンド実行 & リスク評価
│   │   ├── model/              # データモデル
│   │   └── service/            # 監査、差分、権限
│   ├── security/               # 入力バリデーション
│   ├── ui/                     # Jetpack Compose画面
│   └── widget/                 # ホーム画面ウィジェット
├── mentra-bridge/              # スマートグラスブリッジ(Node.js)
└── docs/                       # アーキテクチャドキュメント

キーモジュールの役割

モジュール 役割
ai/VesperAgent.kt LLMのレスポンスを解析し、ツール呼び出しをディスパッチ
ai/FlipperToolExecutor.kt SubGHz・IR・NFC・BadUSB等の各サブシステムへのコマンド変換
ble/FlipperProtobuf.kt Flipper Zero独自のprotobuf実装、BLEフレーミング処理
domain/executor/RiskAssessor 全コマンドをインターセプトしてリスクレベルを付与
domain/service/AuditService Roomデータベースに全履歴を書き込み
mentra-bridge/ Mentraグラスとアプリの間を中継するNode.jsサーバー

注目すべきは、VesperAgentRiskAssessorCommandExecutorFlipperBleService という流れが明確な単方向パイプラインになっている点だ。依存性注入にHiltを使い、各層をモックに置き換えられる構造になっているため、BLE実機なしでもユニットテストが書ける。

技術選定の背景

Kotlin 2.2 + Jetpack Composeは、Androidのモダンスタックとしてはほぼ定番の組み合わせだ。Hiltで依存性注入、Roomでローカル永続化、Coroutines・Flowで非同期処理というのが、2025〜2026年のプロダクション品質Androidアプリの基本セットになっている。V3SP3Rはこのセットをそのまま採用することで、GitHubでのコントリビューションの敷居を下げている。

この章のポイント
Kotlin 2.2 + Jetpack Compose + Hilt + Room のモダンAndroidスタック
VesperAgent → RiskAssessor → CommandExecutor → BleService の単方向パイプライン
Flipper Zero独自のprotobuf実装、Node.js製Mentraブリッジも同梱

V3SP3Rなし vs あり:何が変わるのか

V3SP3Rを使わない場合と使う場合で、Flipper Zeroを扱うワークフローがどう変わるかを対比で整理する。

場面 V3SP3Rなし V3SP3Rあり
SubGHzキャプチャ メニュー階層を辿って周波数を手動設定 「315MHzでキャプチャして」と話すだけ
IRリモコン学習 一ボタンずつ手作業で記録 リモコンを撮影→LLMがボタン一覧を生成
BadUSBペイロード作成 DuckyScriptを手書き 「WindowsでCalc開くペイロード作って」で自動生成
NFC読み取り メニューから機能を選択 「このカードの内容を読み出して」
事故防止 誤操作でファイル削除のリスク High操作は必ず二重確認、システムパスはBlocked
作業ログ 手元のメモに依存 全AIアクションが監査ログに自動記録

要するに、V3SP3Rは「Flipper Zeroの操作コスト」と「事故リスク」を同時に下げる。特に現場でヘルメットや手袋を着けたまま作業するハードウェアエンジニアにとって、音声 + スマートグラスで完全ハンズフリーに操作できる価値は大きい。

使い分けの判断軸

V3SP3Rを導入すべきケース:
  ✅ Flipper Zeroを毎日のように使う
  ✅ 複数プロトコル(SubGHz・IR・NFC等)をまたいで操作する
  ✅ 監査ログ・履歴保全が必要な研究・業務環境
  ✅ ハンズフリー操作が必要な現場作業

V3SP3Rが不要なケース:
  ❌ ごく単純な操作(リモコン記録1本だけ等)を年数回するだけ
  ❌ LLM API利用コストを一切かけたくない
  ❌ iOS専用環境(現状Android専用)
V3SP3Rを最大限活かすコツ
最初の1週間はLow操作(読み取り系)だけに限定して、LLMの応答精度と挙動を観察する。
慣れてきたら、自分用のペイロードテンプレートをPayload Labに保存し、以降は「前に作ったWiFi乗っ取り用ペイロードをロードして」と話すだけで呼び出せるようにする。
監査ログは月1回エクスポートして、不審な自動承認パターンがないか確認すると安全。
この章のポイント
V3SP3Rは「Flipper Zero操作コスト」と「事故リスク」を同時に下げる
Low操作中心に慣らしてから、Payload Labで自分専用テンプレを育てる運用が効く
iOS未対応・API利用料が発生する点が導入判断の主な論点

コントリビューションと今後のロードマップ

V3SP3RはGPL-3.0ライセンスで公開されており、928スターが示すように活発なコミュニティが形成されつつある。READMEに記載されたコントリビューション募集領域は明確で、参加しやすい設計になっている。

募集されている領域

  • iOS版の開発(SwiftUI):現状Android専用で、iOS対応は最も要望が多い
  • 新プロトコルパーサー:対応する無線プロトコルの拡充(Zigbee・LoRa等)
  • 追加ペイロードテンプレート:BadUSB・SubGHz・IR・NFCの事前定義テンプレート
  • テストカバレッジ向上:特にBLE通信周りの安定性改善
  • i18n対応:多言語化(現状は英語のみ、日本語含む他言語対応は未実装)

セキュリティツールとしての立ち位置

V3SP3Rのリポジトリには、「教育および正当なセキュリティ研究のためのツール」であることが明記されている。所有または明示的な許可を得たデバイスのみを対象とし、適用法令の遵守はユーザーの責任、という典型的なDual-Use Toolの線引きだ。

この情報ツールは、教育および正当なセキュリティ研究を目的としています。所有しているデバイス、または明示的な許可を得たデバイスに対してのみ使用し、適用される法律に準拠してください。

日本の電波法では、技適を取得していない無線機器による電波発射が原則禁止されている。Flipper Zero自体の技適状況とあわせて、国内で運用する場合は「受信(キャプチャ)のみに留める」「送信はシールドボックス内で行う」などの配慮が不可欠だ。V3SP3Rが4段階リスク分類を持っているのは技術的な理由だけでなく、こうした法的・倫理的なガードレールを組み込むための設計でもある。

今後の方向性

公式READMEとIssueトラッカーから見える方向性として、次の3点が挙げられる。

  1. スマートグラス連携の拡充:Mentra以外のグラスへの対応
  2. マルチモーダル精度の向上:写真からのIR学習、RF波形の視覚解析
  3. ローカルLLM対応:OpenRouter依存を減らし、オンデバイスモデルでも動作可能に

特にローカルLLM対応が進めば、ネットワーク遮断環境(現場や検査室)でもAIエージェントをそのまま運用できるようになる。「AIエージェント × 物理デバイス」の本格普及には避けて通れない方向性だ。

この章のポイント
GPL-3.0 / 928スター、iOS版・新プロトコル・i18nでコントリビュータ募集中
「教育・正当なセキュリティ研究専用」明記、日本では電波法・技適との兼ね合いに注意
ローカルLLM対応が今後の鍵、ネットワーク遮断環境でも動くAIエージェントへ

📌 まとめ

V3SP3Rは、「AIエージェント × ハードウェア制御」という新カテゴリを切り拓くOSSだ。Flipper Zeroという多機能ハードウェアハッキングツールを、自然言語・写真・音声で操作できるようにし、4段階のリスク分類で安全性も担保している。

本記事のポイントを再整理する。

  1. 思想:LLMに「Flipper Zero専門の税理士」として振る舞わせ、メニュー暗記から解放する
  2. 構造:Jetpack Compose + Hilt + OpenRouter + BLE の3層アーキテクチャ
  3. 機能:自然言語制御・マルチモーダル入力・Alchemy Lab・Payload Lab・FapHub・スマートグラス連携
  4. 安全性:Low/Medium/High/Blockedの4段階ティア + 監査ログで事故と追跡性を両立
  5. モデル選び:Hermes 4 / Claude Sonnet 4が実運用の第一候補、JSONツール呼び出し精度が鍵
  6. ライセンス:GPL-3.0、教育・正当なセキュリティ研究専用、日本では電波法に注意

AIエージェントはソフトウェアの世界から物理デバイスの世界へと染み出している。V3SP3Rはその最前線に立つOSSの1つだ。

「Flipper Zeroは持っているけど、メニュー階層が深くて結局埃をかぶっている」——そんな人こそV3SP3Rの最初のユーザー層だ。OpenRouterアカウントとAndroid端末を用意して、今日からフォルダ1つ分の設定で「話しかけるFlipper Zero」を体験してみてほしい。


参照ソース