Official React-Native plugin for Cactus, a framework for deploying LLM/VLM/TTS models locally in your app. Requires iOS 12.0+, Android API 24+ and Yarn. For iOS apps, ensure you have cocoapods or install with brew install cocoapods
. For Android apps, you need Java 17 installed. Expo is strongly recommended.
Execute the following command in your project terminal:
npm install cactus-react-native # or yarn add cactus-react-native
N/B: To build locally or use this repo, see instructions in example/README.md
import { CactusLM } from 'cactus-react-native'; const { lm, error } = await CactusLM.init({ model: '/path/to/model.gguf', // this is a local model file inside the app sandbox n_ctx: 2048, }); const messages = [{ role: 'user', content: 'Hello!' }]; const params = { n_predict: 100, temperature: 0.7 }; const response = await lm.completion(messages, params);
import { CactusLM } from 'cactus-react-native'; const { lm, error } = await CactusLM.init({ model: '/path/to/model.gguf', // local model file inside the app sandbox n_ctx: 2048, embedding: true, }); const text = 'Your text to embed'; const params = { normalize: true }; const result = await lm.embedding(text, params);
import { CactusVLM } from 'cactus-react-native'; const { vlm, error } = await CactusVLM.init({ model: '/path/to/vision-model.gguf', // local model file inside the app sandbox mmproj: '/path/to/mmproj.gguf', // local model file inside the app sandbox }); const messages = [{ role: 'user', content: 'Describe this image' }]; const params = { images: ['/absolute/path/to/image.jpg'], n_predict: 200, temperature: 0.3, }; const response = await vlm.completion(messages, params);
const { lm } = await CactusLM.init({ model: '/path/to/model.gguf', n_ctx: 2048, }, undefined, 'your_cactus_token'); // Try local first, fallback to cloud if local fails (its blazing fast) const embedding = await lm.embedding('text', undefined, 'localfirst'); // local (default): strictly only run on-device // localfirst: fallback to cloud if device fails // remotefirst: primarily remote, run local if API fails // remote: strictly run on cloud
import { CactusAgent } from 'cactus-react-native'; // we recommend Qwen 3 family, 0.6B is great const { agent, error } = await CactusAgent.init({ model: '/path/to/model.gguf', n_ctx: 2048, }); const weatherTool = agent.addTool( (location: string) => `Weather in ${location}: 72°F, sunny`, 'Get current weather for a location', { location: { type: 'string', description: 'City name', required: true } } ); const messages = [{ role: 'user', content: 'What\'s the weather in NYC?' }]; const result = await agent.completionWithTools(messages, { n_predict: 200, temperature: 0.7, }); await agent.release();