Litter — iOS向けCodexクライアント

Mobile

概要

litterはiOSアプリ向けのCodexクライアント実装で、リモート呼び出しとオンデバイス実行の両方を想定した設計が特徴です。デフォルトのスキームであるLitterRemoteはサーバ側のCodexへリクエストを飛ばす「リモートのみ」モードを提供し、別スキームのLitterはRustで実装されたブリッジ(codex_bridge.xcframework)をバンドルしてデバイス内部で処理を完結させることを狙っています。プロジェクトはSwiftを主体とし、XcodeフルインストールとRustのiOS向けターゲット(クロスコンパイル用)のセットアップが前提となっています。小規模かつ実用的なサンプル実装として、ネイティブアプリにLLM機能を統合する際の参考になります。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 95
  • フォーク数: 8
  • ウォッチャー数: 95
  • コミット数: 8
  • ファイル数: 15
  • メインの言語: Swift

主な特徴

  • リモートAPIのみで動くLitterRemoteスキームと、オンデバイスRustブリッジを含むLitterスキームを切替可能
  • Swiftネイティブなクライアント実装でiOSアプリに容易に組み込み可能
  • codex_bridge.xcframeworkを介したRustとのブリッジによるオンデバイス実行サポート
  • ビルド前にXcodeフルインストールとRustのiOSターゲットを準備する手順が明記

技術的なポイント

litterは「Swift側のUI/アプリロジック」と「モデル実行や高速処理を行うRust側」の分離を明確にしている点が技術的に興味深いです。プロジェクトは2つの運用モードを提供することで、まずはリモートAPIで軽く動作検証を行い、必要に応じてオンデバイス実行へ移行することができます。オンデバイス側はcodex_bridge.xcframeworkとして提供され、XCFramework形式を使うことで複数アーキテクチャ(実機/シミュレータ等)への対応を容易にします。

ビルド面ではXcodeのフルインストール(GUI版)と、RustツールチェーンでiOS向けターゲットを追加する必要があります。READMEでは rustup を用いたiOSターゲット追加が触れられており、クロスコンパイルやC ABIを介したバインディング、シンボルのエクスポートなど、Rust側でのビルド設定を揃えることが求められます。SwiftとRust間は通常C ABIやFFIを介して連携するため、メモリ管理やスレッド安全性、シリアライゼーション形式の取り扱いに注意が必要です。

また、プロジェクト構成が比較的小さく、サンプルコードとして読みやすいため、実際のアプリへ組み込む際の参照実装として有用です。依存関係やサブモジュール(.gitmodules)が存在することから外部ライブラリやサブプロジェクトを組み合わせる構成になっている可能性があり、拡張やカスタマイズがしやすい設計と言えます。(約700字)

プロジェクトの構成

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

  • .gitattributes: file
  • .gitignore: file
  • .gitmodules: file
  • AGENTS.md: file
  • CLAUDE.md: file
  • README.md: file(プロジェクト概要とビルド手順の記載)
  • Sources/Litter/: ディレクトリ(Swiftソース、Resourcesを含む想定)
    • Sources/Litter/Resources/brand_logo.png: ブランドロゴ画像
  • codex_bridge.xcframework:(オンデバイスRustブリッジを格納するためのXCFramework; READMEで言及)
  • Litter.xcodeproj / Xcodeワークスペース(Xcodeプロジェクトが含まれている想定)
  • LICENSE: file(ライセンス情報がある場合)
  • その他のMarkdownドキュメント(AGENTS.mdやCLAUDE.mdなど、使用例や注意事項) …他 10 ファイル

この構成から読み取れるのは、Sourcesディレクトリ配下にSwift実装があり、Resourcesにブランド画像などが格納されている点と、ネイティブモジュール(xcframework)を使ってRust実装をバンドルする設計です。.gitmodulesの存在は外部サブモジュールを利用している可能性を示します。ファイル数は小規模でサンプル寄りの設計なので、既存アプリへの移植や概念実証(PoC)に向いています。

まとめ

SwiftとRustを組み合わせたiOS向けCodexクライアントの参考実装。導入と拡張がしやすい構成です。(約50字)

リポジトリ情報:

READMEの抜粋:

litter (codex-ios)

litter logo

litter is an iOS client for Codex. It supports:

  • LitterRemote: remote-only mode (default scheme; no bundled on-device Rust server)
  • Litter: includes the on-device Rust bridge (codex_bridge.xcframework)

Prerequisites

  • Xcode.app (full install, not only CLT)
  • Rust + iOS targets:
    rustup target add aarch64-apple-ios aarch64-apple-ios-sim x8...