OpenCode Island — OpenCode用ダイナミックアイランド風メニューバーアプリ

AI/ML

概要

OpenCode Islandは、macOSのメニューバーに常駐して動作するアプリで、画面上にDynamic Island風の小さな対話領域を表示し、OpenCode(エージェントやLLMを想定した対話基盤)とシームレスにやり取りできるUIを提供します。プロジェクトはSwiftで書かれ、Xcodeプロジェクトやエージェント定義ファイル(AGENTS.mdや.ocディレクトリ)を含んでいるため、ローカル開発環境で動作確認やカスタマイズを行いやすくなっています。Claude Islandから着想を得たデザインと機能を持ち、メニューバー常駐型の軽量UIとしてOpenCodeの操作体験を改善することを目的としています。

GitHub

リポジトリの統計情報

  • スター数: 5
  • フォーク数: 0
  • ウォッチャー数: 5
  • コミット数: 30
  • ファイル数: 9
  • メインの言語: Swift

主な特徴

  • Dynamic Island風UI: メニューバーからアクセスできる、浮遊するような対話パネルで短い会話や通知を表示。見た目とアニメーションで視認性を高める設計。
  • OpenCode連携を想定: エージェント定義(AGENTS.md)や設定を格納するディレクトリを備え、OpenCodeのフローやプロンプトを組み込める構成。
  • 軽量・ローカル開発向け: Swift/Xcodeプロジェクトとして提供されるため、ローカルでビルドして挙動を試しやすい。macOSのメニューバー常駐アプリの典型的構造を踏襲。
  • 参考実装/学習用: Claude Islandからの着想を明記しており、UIやエージェント設計の実装例として学習・派生開発に利用可能。

技術的なポイント

このリポジトリはmacOS向けのメニューバー常駐アプリをSwiftで実装するためのサンプル的要素が中心です。Dynamic Island風のUI表現は、メニューバー周辺に配置される小型の浮遊ウィンドウ/ポップオーバーをカスタム描画やアニメーションで実現するアプローチを取ることが想定され、SwiftUIのモダンな宣言的UIや、従来のAppKit(NSStatusBar/NSPopover/NSWindow)を組み合わせたハイブリッド実装が想定されます。
OpenCodeとの連携部分は、.ocディレクトリやAGENTS.mdにプロンプトテンプレートやエージェントの振る舞い定義が含まれていることから、外部API呼び出し(HTTP/RESTやWebSocket)でLLMやエージェントランタイムに接続する構成を取りやすい設計です。通信はURLSessionやCombineを利用した非同期処理、あるいはSocketベースのストリーミングに対応可能です。
UI面では、小さな通知領域に応じたアニメーション、角丸やブラー効果(VisualEffectView)による見た目の調整、トランジション制御のためのCoreAnimation/CALayerやSwiftUIのwithAnimationを組み合わせると自然な動作になります。ステート管理にはCombineや@State, @ObservedObjectといったSwiftUIの仕組みが有効で、ユーザー操作→ネットワーク→レスポンス→表示更新という非同期フローをスムーズに扱えます。
また、アーキテクチャとしては、UI層とエージェント呼び出しのビジネスロジックを分離することでテスト性・拡張性を確保できます。AGENTS.mdに定義されたエージェント仕様を読み込み、動的にプロンプトやパラメータを切り替える仕組みを用意すれば、複数の対話スタイルやタスクに柔軟に対応できます。最後に、macOSアプリの配布を想定する場合は、サンドボックス設定や権限、署名の整備が必要になります。 (約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .github: dir
    • GitHub ActionsやIssueテンプレートが置かれる想定。CI/ワークフローの定義がここに入ることが多いです。
  • .gitignore: file
    • ビルド成果物やユーザー固有ファイルを除外する設定。
  • .oc: dir
    • OpenCode関連の設定やエージェント定義、ローカル構成ファイルを格納するディレクトリで、プロンプトやエージェントごとの設定をここに置く想定です。
  • AGENTS.md: file
    • エージェントの仕様や使い方、プロンプトテンプレートなどを記したドキュメント。OpenCodeとの統合方法の説明が含まれる可能性があります。
  • ClaudeIsland.xcodeproj: dir
    • Xcodeプロジェクトファイル。ビルド設定やターゲット、ソースファイルの参照がここにまとめられています。
  • 他のファイル(Info.plist, ソースコード、リソース等): file
    • 実際のSwiftソースやアセット、設定ファイルが含まれている想定です。

上記構成から、開発者はXcodeでプロジェクトを開き、.ocやAGENTS.mdでエージェント定義を編集してからビルド・実行する流れが分かります。メニューバーアプリ固有の設定(App Sandboxの例外や権限)については、Xcodeプロジェクト内の設定で調整する必要があります。

まとめ

Dynamic Island風の対話UIを通じてOpenCodeと手軽にやり取りできる、学習・プロトタイピング向けのmacOSメニューバーアプリ実装。

リポジトリ情報:

READMEの抜粋:

OpenCode Island

A macOS menu bar app that brings a Dynamic Island-style interface for interacting with OpenCode.

Note: This project is inspired by Claude Island by [@farouqaldori](https://gi