アークエンジェル。OND800の母艦にして兵装ビルダー。
OBSプラグインとして動作するバトルシップ拡張モジュール。 OND800(モビルスーツ)が戦場で自由に戦えるよう、重演算・兵装ビルド・フェールオーバー管制・NSFWサニタイズを母艦側で引き受ける。
単なる「OBSアドオン」ではない。アークエンジェルそのもの。
開発者は電通非正規デザイナー・バラエティAD/D・子役出身の演者・P/黒服という 現場キャリアを持つ。SAO800の「重演算を後方に逃がす」という構造は抽象論ではなく現場の経験則だ。
テレビ生放送のADは本番中に何十もの判断を同時に回す。そのためにあらかじめ段取りを詰めて、 本番では「スロット番号を投げる」だけで動く体制を作る。台本に「3番」と書いてあれば、 カメラが動き、音声が切り替わり、テロップが出る——演者は何も考えなくていい。
SAO800はその「後ろで全部用意しておく役」を機械化したものだ。
OND800(演者)は「スロット3」を投げるだけ。 エンコード・BPM解析・NSFWサニタイズ・フェールオーバー管制・SaaS死活監視は すべてSAO800が黙って処理して事後通知する。演者のフローを1ミリも中断させない。
電通時代に染み込んだ「プロ機材は演者の認知リソースを奪ってはいけない」という原則が、 このオフロード設計の核心にある。
開発者本人(TikToker/演者)が、NSFW/技術SFW/音楽歌唱/屋外ダンスロケなど多様な現場で 実際にOND800とSAO800を使うことを前提とした、現場駆動・ビジョン駆動の開発。 要件定義から厳密に積むのではなく、目的とビジョンをもとに実験を積み重ねる。
開発リソースは投げ銭とジャンク箱の材料で賄われるため、停滞・放置期間が発生することも前提とする。
(エージェントはこれを「プロジェクト停止」と判断せず、再開時に/notesを確認して状況を再把握すること)
OND800はフィールドで戦う。SAO800は後ろで全力支援する。
ストライク(OND800)← アークエンジェル(SAO800)← コロニーレーザー(SaaS)
- OND800が拾えない演算はSAO800が巻き取る
- 兵装(スタンプスロット・シーンプロファイル・AIモジュール)はSAO800がビルドして渡す
- OND800はスロット番号を投げるだけ。重い処理はSAO800が全部やる
- SaaSが轟沈してもSAO800がフェールオーバーを管制し、OND800は飛び続ける
- OBSのMetalレンダラーに寄生する。演算するんじゃなくて指揮する
Layer 4:コロニーレーザー SaaSプラットフォーム(TikTok / YouTube / X)
↑ RTMP / SRT
Layer 3b:バトルシップ拡張 SAO800(OBSプラグイン)← ここ
↑ OBS内部API / NDI
Layer 3a:バトルシップ OBS(macOS / Metal HWコンポジット)
↑ NDI
Layer 2:モビルスーツ OND800(Raspberry Pi 5)
↑ BLE GATT
Layer 1:サイコミュファンネル FAN800(ESP32 BLEメッシュ)
SAO800はLayer 3のOBSに寄生し、OND800(Layer 2)からの命令をOBSに橋渡しする。
OND800が管理するIPカメラ(ANRAN等)のRTSPストリームを、GStreamer経由でNDIに変換してOBSソースとして供給する。
OBSのメディアソース(FFmpegベース)はPTS不正確なカメラで時間とともにラグが積算する問題があるため、SAO800がGStreamerパイプラインを内包してこれを解決する。
RTSP(IPカメラ)
→ GStreamer(HWデコード / vtdec_hw)
→ NDI
→ OBS NDI Source(ラグゼロ)
NSFWコンテンツのモザイク代替として、バラエティギャグ的スタンプマスクをOBSのMetalコンポジットで合成する。
モザイクは「何か隠れてる」メタ情報がNSFWコンテキストを強化し、AI超解像で除去可能。スタンプはコンテキストそのものをバラエティに上書きする。
Vision解析(SAO800ローカル)
→ 座標(x, y, w, h)出力
→ OBS Metalコンポジット
→ スタンプ合成(「見せられないよ!」等)
→ SaaS側にはR13+バラエティ映像として到達
スロット構成(OND800からスロット番号で呼び出す):
| スロット | 内容 | コンテキスト |
|---|---|---|
| 1 | キャラクタースタンプ(ZeroRoomLab オリキャラ) | バラエティ |
| 2 | 金太郎ネタ | バラエティ |
| 3 | SMAPロゴ等ギャグ系 | バラエティ |
| 4 | 絵文字系 🙈 | バラエティ |
| 5 | 自動(Vision判断) | 状況依存 |
| 6〜N | OBSソースから選択 | カスタム |
SaaS(Claude / OpenAI)に渡す前に、ローカルLLM(SphereOS / LLaMa)がコンテキストを咀嚼する。
生配信コンテキスト(おちんちんランド)
→ SphereOS / LLaMa(ローカル)
→ 「おちんちんランド発生中」レベルのギャグ表現に変換
→ Claude / OpenAI(SaaS)
→ クリーンなチェリーボーイとして処理
SaaS側のポリシー轟沈を事前に防ぐ。ローカル主権でコンテキスト主権を確保する。
Mac Proの演算リソースを活用し、OND800(Pi5)には載らない重い処理を引き受ける。
- Whisper → リアルタイム字幕生成
- Vision(目線検出) → 自動シーンスイッチ(座標をOBSに渡す)
- SphereOS / LLaMa 20B → カオス補足・ライブコンテキスト解説をSaaSに問い合わせ
- BPMシンカー → 音楽配信との映像タイミング同期
SaaS障害・💩コンテキスト検知時の自律リカバリー。
異常検知(SAO800監視デーモン)
→ レクイエム発射(問題SaaSをパージ)
→ OND800を別プラットフォームにキャスト
→ SphereがSNS誘導(「今こっちで配信中」自動投稿)
→ Claude MCPでリカバリー処理
フォールバック順:Claude → OpenAI → SphereOS / LLaMaローカル(完全オフライン)
- mDNS / Bonjourでの自動検出
- シーンスイッチスロット同期
- スタンプスロット同期
- OND800から届くスロット番号の受信・実行
- SAO800はOBSに寄生する。OBSのMetalレンダラーを自前で実装しない
- 座標を渡すだけ。コンポジット処理はOBSに丸投げする
- 演算ではなく指揮。重い処理はOBSのMetalかローカルLLMに投げる
- ローカルファースト。SaaS依存のフィーチャーはローカルフォールバックを持つ
- OND800はスロット番号だけ投げる。SAO800側で全部解決する
- スタンプはオリキャラ素材を使う。外部著作物はスコープ外
- モザイクは実装しない。コンテキスト上書きがコンセプト
/plugin - OBSプラグイン本体(C++)
/src - ソース
/cmake - ビルド設定
/gstreamer - GStreamerパイプライン管理
/ai - AIモジュール(Whisper / Vision / BPMシンカー)
/stamps - スタンプ素材ライブラリ
/failover - フェールオーバー管制デーモン
/docs - 設計記録・セットアップ手順
/notes - 実験ノート・作業ログ(AIエージェント/人間共通)
- GStreamer → NDI変換パイプライン(RTSPラグ積算問題の解決)
DYLD_LIBRARY_PATH=/usr/local/lib gst-launch-1.0 rtspsrc ... ! ndisink- CPU ~30-35%(avdec_h264、ソフトウェアデコード)
- vtdec_hwへの移行は未解決(キャップネゴ問題)
- OBSプラグインスケルトン(C++)作成
- GStreamerパイプラインのプラグイン内包
- vtdec_hw問題の解決
- スタンプスロット基盤設計
| シーズン | 状態 | スコープ |
|---|---|---|
| Season 1 | 🔧 設計中 | OBSプラグインスケルトン / RTSPブリッジ内包 / vtdec_hw解決 |
| Season 2 | 📐 構想 | スタンプスロット / OND800ペアリング / シーンスイッチ連携 |
| Season 3 | 📐 構想 | Whisper字幕 / Vision自動スイッチ / BPMシンカー |
| Season 4 | 📐 構想 | フェールオーバー管制 / NSFWサニタイズレイヤー / SphereOS統合 |
- OBSプラグイン: C++(obs-source / obs-filter API)
- 映像パイプライン: GStreamer(appsink → OBSテクスチャ直渡し)
- HWデコード: VideoToolbox(vtdec_hw)
- NDI: NDI SDK v6(/usr/local/lib/libndi.dylib)
- AIモジュール: Whisper.cpp / llama.cpp(ローカル)
- SaaS API: Anthropic Claude / OpenAI(フォールバック順)
- フォールバックLLM: SphereOS / LLaMa 20B(完全オフライン)
- 母艦: Hackintosh(X99 Extreme4 / RX 5500 XT)→ SAO800の実行環境
- OBS: macOS版(Metal HWコンポジット)
- NDI SDK:
/usr/local/lib/libndi.dylib(NDI Tools for Mac インストール済み) - GStreamer:
/usr/local/Cellar/gstreamer/1.28.4(Homebrew) - ペアデバイス: OND800(Raspberry Pi 5)
- ソフトウェア: Apache License 2.0
- スタンプ素材: CC BY 4.0(ZeroRoomLab オリジナル)
- 将来的なハードウェア設計: CERN-OHL-P v2
詳細は /AGENTS.md および各サブディレクトリの AGENTS.md を参照。