世界を動かす技術を、日本語で。

Show HN: Cactus – スマートフォン向けOllama

概要

  • Cactus は、スマートフォン上で LLM/VLM/TTSモデル をローカル実行できるクロスプラットフォームフレームワーク
  • FlutterReact-Native で利用可能、幅広い GGUFモデル (Qwen, Gemma, Llama等)に対応
  • 2ビット量子化 から FP32 まで幅広い精度サポート、デバイス負荷を軽減
  • MCPツールコールクラウドフォールバック など実用的な機能を搭載
  • 完全 オープンソース、多様なデバイスでAIアプリ開発が可能

Cactus: スマホで動くクロスプラットフォームAIフレームワーク

  • Cactus は、スマートフォンやエッジデバイスで LLM/VLM/TTS などの生成AIモデルを ローカル実行 できるフレームワーク
  • FlutterReact-NativeKotlin Multi-platform で利用可能、クロスプラットフォーム開発に最適
  • Huggingface で公開されている GGUF形式モデル (Qwen, Gemma, Llama, DeepSeek, Phi, Mistral, SmolLM, SmolVLM, InternVLM, Jan Nanoなど)をサポート
  • 2ビット量子化FP32 精度まで対応、端末のリソース消費を最適化
  • MCPツールコール でリマインダー設定、ギャラリー検索、メッセージ返信などのAIエージェント機能を実現
  • クラウドモデルへのフォールバック 機能搭載。ローカルで処理できない場合や端末障害時は大規模クラウドモデルに自動切替
  • Jinja2対応チャットテンプレートトークンストリーミング サポート
  • 完全 オープンソース、GitHubリポジトリ(https://github.com/cactus-compute/cactus)で公開

主な特徴とメリット

  • スマホ・タブレット・スマートTV・スマートウォッチ など多様なデバイスで動作
  • プライバシー保護 :ローカル推論によりユーザーデータを外部送信せずにAI機能を実現
  • リアルタイム推論 :クラウド依存なし、低遅延でAI処理が可能
  • パーソナライズRAGパイプライン などユーザーごとに最適化されたAI体験を提供
  • Apple Foundation FrameworksGoogle AI Edge のようなプラットフォーム専用フレームワークと異なり、クロスプラットフォームで幅広いモデルをサポート

インストール・導入方法

Flutter

  • プロジェクトのターミナルで下記コマンド実行 flutter pub add cactus
  • 例:テキスト補完
    import 'package:cactus/cactus.dart';
    final lm = await CactusLM.init(
      modelUrl: 'huggingface/gguf/link',
      contextSize: 2048,
    );
    final messages = [ChatMessage(role: 'user', content: 'Hello!')];
    final response = await lm.completion(messages, maxTokens: 100, temperature: 0.7);
    
  • 埋め込み・VLM・クラウドフォールバック等も同様にAPI呼び出し可能
  • 詳細は Flutter公式ドキュメント 参照

React-Native

  • 下記コマンドでインストール npm install cactus-react-native && npx pod-install
  • 例:テキスト補完
    import { CactusLM } from 'cactus-react-native';
    const { lm, error } = await CactusLM.init({ model: '/path/to/model.gguf', n_ctx: 2048, });
    const messages = [{ role: 'user', content: 'Hello!' }];
    const params = { n_predict: 100, temperature: 0.7 };
    const response = await lm.completion(messages, params);
    
  • 埋め込み・VLM・クラウドフォールバック等も同様にAPI呼び出し可能
  • 詳細は React公式ドキュメント 参照

C/C++ バックエンド

  • リポジトリをクローン git clone https://github.com/cactus-compute/cactus.git
  • スクリプト実行権限付与 chmod +x scripts/*.sh
  • 各プラットフォーム向けビルドスクリプトを実行し、サンプルアプリで動作確認
  • Android/iOSシミュレータでアプリを起動し、実際にモデルを動かして開発可能

モデル推論速度ベンチマーク

  • 例:Gemma3 1B Q4 / Qwen3 4B Q4 の推論速度(toks/sec)
    • iPhone 16 Pro Max: 54 / 18
    • iPhone 15 Pro: 45 / 15
    • Samsung Galaxy S24 Ultra: 42 / 14
    • OnePlus 13 5G: 43 / 14
    • Redmi K70 Ultra: 24 / 8
  • 最新端末で高速な推論性能を実現

コントリビュート方法

  • バグ修正 :修正後にブランチを作成(git checkout -b <branch-name>)、PRを提出
  • 新機能追加 :まずIssueを立てて他の開発者と議論
  • Discordコミュニティ で情報交換・サポート

まとめ

  • Cactus は、スマートフォンやエッジデバイスで本格的なAIアプリを クロスプラットフォーム に開発できる先進的なフレームワーク
  • モデル選択の自由度デバイス負荷軽減実用的なAIツールコールクラウドとの連携 など、現場で役立つ機能を多数搭載
  • オープンソース で活発に開発が進行中、今後も多くのAIアプリ・エージェント開発を後押し

公式リポジトリ :https://github.com/cactus-compute/cactus 推奨モデル一覧 :HuggingFaceページにて公開

Hackerたちの意見

これ、めっちゃクール!エージェントブラウザに取り組んでるよ(今日発表したやつね https://news.ycombinator.com/item?id=44523409 :)) 今はデスクトップ版があって、ollamaサポートもあるんだけど、ローカルLLMサポート付きのモバイルChromiumフォークを作りたいんだ。カクタスもチェックしてみるね!

いいね!(コメットのニュースもあって、投稿するタイミングがバッチリだね :))BFでDMして、話そうよ!

OllamaはTermux経由でAndroidでもちゃんと動くよ。5GBのモデルで使ってる。最近はollamaパッケージも追加されたから、ソースコードからコンパイルする必要がなくなったんだ。

その通りだけど、Cactusはただのアプリじゃないよ。どんなアプリでもローカルでLLMをクロスプラットフォームで動かすための開発ツールキットなんだ。

知らなかった!ありがとう。

これは「エンペラーの新しい groove」の素晴らしいリファレンスだね、上手いことやったな!: https://x.com/filmeastereggs/status/1637412071137759235

これ、最高!いろんな層があって、めっちゃ笑ったよ。

すごい、めっちゃ役立つ!特に電話モデルとtok/sの内訳をありがとう。もっとモデルのテーブルはある?Gemma3 1Bよりもさらに軽いモデルとか。どこまでいける?iPhone 13で45tok/sを出したい場合はどうなるかな?P.S: あと、react-nativeとflutterとかで速度は一貫してるよね?

ありがとう!データが増えるにつれて、パフォーマンスメトリクスを追加していくよ。Qwen 2.5 500Mなら、iPhone 13で約45tok/secが出せるよ。推論速度はモデルサイズに対してある程度線形に反比例するんだ。うん、フレームワーク間で速度は一貫してるけど(これを引用しないでほしいけど)、React NativeはC++エンジンとブリッジを介して接続するから、少し遅いと思うよ。

参考までに、SmolLM2を使ってるみたいだけど、今週SmolLM3に置き換えられたよ!もっと大きなモデルも選べるといいな、Qwen 3の4bや8bとか。

アプリのことを言ってるの?もうすぐ追加するよ!

「Flutter、React-Native、Kotlinのマルチプラットフォームで、クロスプラットフォーム開発者向けに利用可能です。今のアプリのほとんどがこれで作られているから。」これって本当にそうなの?この統計はどこから来てるの?

おそらく新しいアプリのことを言ってるんだろうね。KotlinマルチプラットフォームはAndroidのネイティブだけだから、Androidのシェアが70%なら、モバイルアプリの市場シェアは少なくとも50%はあるよ。FlutterやReact Nativeを加えると、残るのはUnityやUnrealみたいなゲームだけ。最近はiOSの仕事がかなり減ってる気がする。

これはllama.cppだけを推論エンジンとして使ってるの?NPUやGPUのサポートはどうなってるの?LLMがNPUで動くかは分からないけど、STTやTTS、ビジョン系のモデルはAppleのNPUでかなり速く動くことが多いよね。

推測する必要はないよ: https://github.com/cactus-compute/cactus/tree/main/cpp

これいいね!ローカルのLLMが必要に応じて有効/無効にできるローカルツールにアクセスできたら最高だな(例えばカスタマイズ可能なプロファイルを通じて)。URL取得やファイルアクセス、メッセージング、カレンダーなどのシンプルなツールがあればすごく便利だけど、入力トークンの制限が十分に大きいかは分からないな。ウェブ検索もできたらもっといいけど、無料でやるのは難しいよね。それに、他のデバイスからアクセスできるOpenAI互換のAPIを公開できたら超クールだと思う!古いスマホをローカルのLLMサーバーに変えられたら最高だよね。ところで、過去のチャットデータをクリアする方法が分からないんだけど、どこかに隠れてるのかな?

いや、いい指摘だね - 隠れてるわけじゃないよ;「クリアな会話」ボタンはないんだ。前のポイントに関してだけど、Cactusはツール呼び出しを完全にサポートしてるよ(指示訓練されたモデル、例えばQwen 1.7Bみたいな)。「古いスマホをローカルLLMサーバーにする」には、Cactusはあんまり向いてないかも。実際のOllamaとかExoみたいなものをおすすめするよ。

スマホでLLMやVLM、TTSモデルをローカルで動かすのは、静かに「エッジAI」の意味を再定義してるね。エッジがネットワークの境界だけじゃなくて、ポケットの中にあるってことだ。次のアプリの波は、モバイルを新しいAIサーバーとして扱う人たちによって作られるだろうね。

それが私たちのミッションだよ!この分野に情熱を持ってるなら、ぜひ貢献してほしいな!

これ実際にクレイジーだね。APIがめっちゃシンプル!SwiftでLLM.swiftを使ってやってみたけど、うまくいったよ。RNでも試すのが楽しみ!

フィードバック楽しみにしてるね!