# Models `@react-native-ai/core-ai` runs `.aimodel` bundles exported with Apple's [`coreai-models`](https://github.com/apple/coreai-models). Apple publishes the export recipes, not the exported files, and the package does not ship a model catalog: your app downloads or bundles the models it uses and passes them as `source: { type: 'file', uri }`. ## Hosted Exports These are exported with Apple's recipes, tested on an iPhone 17 Pro with iOS 27 (Wan 2.1 on macOS), and hosted on Hugging Face. Each repository's card has the exact export command, the sizes and the license. Download the folder in the Folder column into app storage, and point `source` at it. | Task | Model | Hugging Face repository | Folder | Size | Platforms | Use with | | ------------------ | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------ | ------ | ------------------------------------------------------------------- | ----------------------------------------------------------------- | | Language | [Qwen3 0.6B](https://huggingface.co/Qwen/Qwen3-0.6B) | [`grabbou/qwen3-0.6b-CoreAI`](https://huggingface.co/grabbou/qwen3-0.6b-CoreAI) | `ios/` | 456 MB | iOS | `coreAI.languageModel(...)` | | Image generation | [FLUX.2 klein 4B](https://huggingface.co/black-forest-labs/FLUX.2-klein-4B) | [`grabbou/FLUX.2-klein-4B-CoreAI`](https://huggingface.co/grabbou/FLUX.2-klein-4B-CoreAI) | `ios/` | 4.0 GB | iOS | `coreAI.imageModel(...)` | | Video generation | [Wan 2.1 T2V 1.3B](https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B-Diffusers) | [`grabbou/Wan2.1-T2V-1.3B-CoreAI`](https://huggingface.co/grabbou/Wan2.1-T2V-1.3B-CoreAI) | `ios/` | 4.3 GB | macOS ([#306](https://github.com/callstackincubator/ai/issues/306)) | `coreAI.videoModel(...)` | | Transcription | [Parakeet TDT 0.6B v3](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3) | [`grabbou/parakeet-tdt-0.6b-v3-CoreAI`](https://huggingface.co/grabbou/parakeet-tdt-0.6b-v3-CoreAI) | `streaming/` | 1.3 GB | iOS, macOS | `coreAI.transcriptionModel(...)` | | Embeddings | [CLIP ViT-B/32](https://huggingface.co/openai/clip-vit-base-patch32) | [`grabbou/clip-vit-base-patch32-CoreAI`](https://huggingface.co/grabbou/clip-vit-base-patch32-CoreAI) | `clip-vit-base-patch32/` | 308 MB | iOS, macOS | `coreAI.embeddingModel(...)` | | Object detection | [YOLOS-tiny](https://huggingface.co/hustvl/yolos-tiny) | [`grabbou/yolos-tiny-CoreAI`](https://huggingface.co/grabbou/yolos-tiny-CoreAI) | `yolos-tiny.aimodel/` | 24 MB | iOS, macOS | `CoreAI.runTask('object-detection', ...)` | | Image segmentation | [EfficientSAM-Ti](https://github.com/yformer/EfficientSAM) | [`grabbou/EfficientSAM-Ti-CoreAI`](https://huggingface.co/grabbou/EfficientSAM-Ti-CoreAI) | `efficient-sam/` | 41 MB | iOS, macOS | `CoreAI.runTask('segmentation', ...)` | | Video segmentation | [SAM 3](https://huggingface.co/facebook/sam3) (video) | [`grabbou/sam3-video-CoreAI`](https://huggingface.co/grabbou/sam3-video-CoreAI) | `sam3-video/` | 1.7 GB | iOS, macOS | `CoreAI.runTask('video-segmentation', ...)` | | Super-resolution | [EDSR x2](https://github.com/Coloquinte/torchSR) | [`grabbou/edsr-x2-CoreAI`](https://huggingface.co/grabbou/edsr-x2-CoreAI) | `edsr-x2.aimodel/` | 2.8 MB | iOS, macOS | `CoreAI.runTask('super-resolution', ...)` | | Classification | [PVT v2 b0](https://huggingface.co/timm/pvt_v2_b0.in1k) (ImageNet-1k) | [`grabbou/pvt-v2-b0-CoreAI`](https://huggingface.co/grabbou/pvt-v2-b0-CoreAI) | `pvt-v2-b0/` | 7.4 MB | iOS, macOS | `CoreAI.runTask('classification', ...)` | | Depth estimation | [Depth Anything 3 small](https://huggingface.co/depth-anything/da3-small) | [`grabbou/depth-anything-3-small-CoreAI`](https://huggingface.co/grabbou/depth-anything-3-small-CoreAI) | `da3-small.aimodel/` | 106 MB | iOS, macOS | `CoreAI.runTask('depth', ...)` | | Any `.aimodel` | — | — | — | — | — | `CoreAI.loadModel({ ..., task: 'raw' })`, `CoreAI.runRawFunction` | The weights keep their original licenses (Apache-2.0, MIT, CC BY 4.0, and the SAM License for SAM 3), which each card lists. The example app's [`downloadHubFolder`](https://github.com/callstackincubator/ai/blob/main/apps/expo-example/src/utils/coreAIStorageUtils.ts) downloads one of these folders, and the [harness tests](https://github.com/callstackincubator/ai/tree/main/harness/core-ai) show each model in use. ## Community Exports Third-party uploads, not published by Apple or Callstack: | Task | Model | Bundle | Platforms | | ------------------ | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | | Language | [Qwen3 4B](https://huggingface.co/Qwen/Qwen3-4B) | [iOS `.aimodel`](https://huggingface.co/mlboydaisuke/qwen3-4b-CoreAI-official/tree/main/ios/qwen3_4b_mixed_4bit_8bit_static.aimodel), [macOS `.aimodel`](https://huggingface.co/mlboydaisuke/qwen3-4b-CoreAI-official/tree/main/macos/qwen3_4b_4bit_dynamic.aimodel) | iOS, macOS | | Language | [gpt-oss-20b](https://huggingface.co/openai/gpt-oss-20b) | [macOS `.aimodel`](https://huggingface.co/mlboydaisuke/gpt-oss-20b-CoreAI-official/tree/main/macos/gpt_oss_20b_dynamic.aimodel) | macOS | | Language | [Gemma 3 4B it](https://huggingface.co/google/gemma-3-4b-it) | [macOS `.aimodel`](https://huggingface.co/mlboydaisuke/gemma-3-4b-it-CoreAI-official/tree/main/macos/gemma_3_4b_it_4bit_dynamic.aimodel) | macOS | | Image segmentation | [SAM 3](https://huggingface.co/facebook/sam3) (image, text prompts) | [segmenter bundle](https://huggingface.co/mlboydaisuke/sam3-CoreAI-official) (1.7 GB) | iOS, macOS | The package runs on iOS, so macOS-only models are listed for reference. ## Making Your Own Apple's recipes cover more models and sizes than the hosted ones, for example Qwen2.5, Gemma, Sana Sprint, YOLOS-base, SAM 3 at other resolutions, and Whisper. Start with: - [`coreai-models` export guide](https://github.com/apple/coreai-models/blob/main/models/README.md): setup with `uv`, the model registry, iOS and macOS presets, quantization and context length for language models - [The recipe catalog](https://github.com/apple/coreai-models/tree/main/models): one folder per model family, each with a README of its options - [Swift runtimes](https://github.com/apple/coreai-models/tree/main/swift/Sources): what each `coreai-models` product expects from a bundle Export for iOS where the recipe has a platform option: iOS exports use 4-bit palettization and a fixed context length. These are the commands behind the hosted exports: ```bash # from an apple/coreai-models checkout uv run coreai.llm.export qwen3-0.6b --platform iOS uv run coreai.diffusion.export flux2-klein-4b --single-function --components transformer_512 text_encoder vae_decoder_half uv run coreai.diffusion.export Wan-AI/Wan2.1-T2V-1.3B-Diffusers --platform iOS --compression 4bit-asym # then the Wan decoder again for 32x32 tiles, see the repository card uv run models/parakeet/export.py --streaming --dtype float16 uv run models/yolo/export.py --model hustvl/yolos-tiny uv run models/efficient-sam/export.py --model efficient_sam_vitt uv run models/sam3_video/export.py --dtype float16 --image-size 672 uv run models/edsr/export.py --dtype float16 --dynamic uv run models/pvt/export.py --dtype float16 uv run models/depth-anything/export.py ``` - The CLIP export splits Apple's [`models/clip`](https://github.com/apple/coreai-models/tree/main/models/clip) recipe into separate `encode_text` and `encode_image` functions, with [this script](https://huggingface.co/grabbou/clip-vit-base-patch32-CoreAI/blob/main/export.py), so text and images embed on their own. - PVT's folder adds a `labels.json` of the ImageNet class names, which classification reads. - SAM 3 is gated: accept Meta's license on [its page](https://huggingface.co/facebook/sam3) and log in with `hf auth login` before exporting it. - `CoreAI.inspectModel(...)` lists the functions of an `.aimodel`, with their inputs and outputs, so you can check an export before wiring it to a task.