Talk to your Mac, query your docs, no cloud required. On-device voice AI + RAG
# Add to your Claude Code skills
git clone https://github.com/RunanywhereAI/RCLILast scanned: 4/27/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-04-27T06:28:32.744Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}RCLI is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by RunanywhereAI. Talk to your Mac, query your docs, no cloud required. On-device voice AI + RAG. It has 1,543 GitHub stars.
Yes. RCLI passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/RunanywhereAI/RCLI" and add it to your Claude Code skills directory (see the Installation section above).
RCLI is primarily written in C++. It is open-source under RunanywhereAI on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh RCLI against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Run open models on your machine.
rcli pull qwen3
rcli run qwen3
Chat, vision, speech, and embeddings — all local. Nothing leaves the device.
Models you have pulled run on this machine and need no account. To use a hosted model instead, sign in to a RunAnywhere console:
rcli login # opens a browser; approve it there
rcli whoami # who you are, and what you have used this month
rcli logout
The terminal never asks for a password. It shows a code, you approve it in the browser, and it collects an API key with your credit behind it. That key appears on the console's Cloud keys page and can be revoked there at any time.
Against a console running on your own machine:
export RCLI_CONSOLE_URL=http://localhost:8002
rcli login
Then hand a hosted model to a coding session:
rcli opencode -m gemma-4
For the Open Frontier hosted path, make the choice explicit and pass any
OpenCode arguments after --:
rcli opencode --cloud --model <console-model-id> -- --agent build
--cloud never falls back to a local model. The existing rcli opencode -m
form remains available for the parent PR's local-or-upstream harness flow.
If the model is on this machine, rcli serves it locally. If it is not, the request goes to the console you are signed in to, is checked against your balance before it runs, and is metered.
brew install runanywhereai/rcli/rcli
or
curl -fsSL https://raw.githubusercontent.com/RunanywhereAI/RCLI/main/install.sh | sh
Needs a built SDK kit, not SDK source:
cmake -B build -DRCLI_SDK_KIT=<sdks>/dist/cpp-desktop-macos-arm64
export RCLI_SDK_SWIFT_PATH=<sdks> # for the MLX backend on Apple
cmake --build build -j8
build/rcli is the full binary. build/rcli-cxx is the same CLI without MLX,
and is what you get if RCLI_SDK_SWIFT_PATH is unset.
MLX loads its Metal shaders from mlx-swift_Cmlx.bundle next to the executable,
so install the pair together:
mkdir -p ~/.local/lib/rcli
cp -R build/mlx-swift_Cmlx.bundle build/rcli ~/.local/lib/rcli/
printf '#!/bin/sh\nexec "$HOME/.local/lib/rcli/rcli" "$@"\n' > ~/.local/bin/rcli
chmod +x ~/.local/bin/rcli
Copy the binary on its own and MLX will not register.
irm https://raw.githubusercontent.com/RunanywhereAI/RCLI/main/install.ps1 | iex
No Linux release asset is currently published. Use the source build below;
install.sh intentionally fails instead of claiming that an unavailable bottle
was installed.
rcli pull qwen3 # download
rcli run qwen3 # chat
rcli run qwen3 "Hello" # one-shot
rcli serve qwen3 # OpenAI-compatible API on :8080 (macOS/Linux)
rcli models list --all is the full catalog. Short names work everywhere (qwen3, llama3.2, whisper-tiny, piper, …). Any Hugging Face GGUF works too:
rcli pull hf.co/Qwen/Qwen3-0.6B-GGUF/Qwen3-0.6B-Q8_0.gguf
One rcli binary. Catalog models already name their engine (GGUF → llama.cpp, mlx-* → MLX, Core ML → NeuRT, QNN-context → QHexRT). You normally do not pick one.
Override only when you mean it:
rcli llm generate --engine mlx -m mlx-qwen3 "Hello"
rcli run --engine qhexrt /path/to/lfm2_5_230m_HNPU "Hello"
rcli image generate --engine neurt --prompt "a red cube" --out out.png
--engine accepts mlx, llamacpp, sherpa, onnx, neurt / coreml / ane, and qhexrt / qnn / npu / hexagon. If you omit it, commons picks the highest-priority registered backend that implements that primitive:
| Priority | Engine | Who wins unpinned work |
|---|---|---|
| 150 | QHexRT | Every primitive it implements, and only on a Windows ARM64 overlay binary (often the only engine in that binary) |
| 110 | MLX | Apple GPU: LLM / VLM / TTS / STT / embeddings when an mlx-* model is not already pinned |
| 100 | llama.cpp | GGUF LLM / VLM / embed / rerank |
| 100 | NeuRT | Core ML only. Stays at 100 on purpose so it never steals GGUF/MLX traffic. A Core ML bundle reaches NeuRT by framework pin, not by winning priority |
| 90 | Sherpa-ONNX | STT / TTS / VAD |
| 50 | ONNX Runtime | embeddings / VAD / diarization / segmentation |
rcli backends is the source of truth for this binary. Public bottles never list neurt or qhexrt. Those engines are private overlays, never Homebrew / GitHub Release assets.
| Backend | macOS Apple Silicon | Windows x64 | Windows ARM64 | Linux x64 |
|---|---|---|---|---|
| llama.cpp | public bottle | public bottle | — | source build only |
| MLX (Apple GPU) | public bottle (product rcli, not rcli-cxx) |
— | — | — |
| Sherpa-ONNX | public bottle | public bottle | — | source build only |
| ONNX Runtime | public bottle | public bottle | — | source build only |
| NeuRT (Apple Neural Engine; Core ML is the format) | overlay rebuild | — | — | — |
| QHexRT (Qualcomm Hexagon NPU) | — | — | overlay rebuild | — |
Public Windows ARM64 kits are commons-only (no llama.cpp / ONNX / Sherpa on MSVC ARM64). Snapdragon NPU is overlay-only. x64 Windows has no Hexagon path.
Yes = this engine implements the primitive. Try = a catalog id that rcli pull / a local path can run. Overlay engines still need the matching on-disk bundle (compiled .mlmodelc tree, or *_HNPU / v81/ QNN-context dir) — a Hugging Face repo page is HTML, not a model.
| Modality | Command | llama.cpp | MLX | Sherpa | ONNX | NeuRT | QHexRT |
|---|---|---|---|---|---|---|---|
| LLM | rcli run / llm generate |
yes · smollm2, qwen3 |
yes · mlx-qwen3 |
— | — | yes · lfm2-230m-ane local Core ML tree |
yes · lfm2-230m-npu local *_HNPU |
| VLM | rcli vlm generate --image |
yes · smolvlm2 |
yes · mlx-qwen2-vl |
— | — | — | yes · internvl-1b-npu local HNPU |
| TTS | rcli tts synthesize -o out.wav |
— | yes · mlx-soprano |
yes · piper |
— | — | yes · kitten-micro-npu local HNPU |
| STT | rcli stt transcribe audio.wav |
— | yes · mlx-qwen3-asr |
yes · whisper-tiny |
— | yes · parakeet-tdt-v2-ane local Core ML |
yes · whisper-base-npu local HNPU |
| VAD | rcli vad detect audio.wav |
— | — | yes | yes · silero |
— | — |
| Embeddings | rcli embed |
yes · nemotron-3-embed |
yes · mlx-qwen3-embed |
— | yes · minilm |
— | yes · embeddinggemma-npu local HNPU |
| Rerank | rcli rerank -d … |
yes · bge-reranker |
— | — | — | — | yes · nv-rerank-npu local HNPU |
| Segmentation | rcli segment image.ppm (binary P6 PPM) |
— | — | — | yes · segformer |
— | — |
| Diarization | rcli diarize audio.wav |
— | — | — | yes · sortformer |
— | — |
| Image gen | rcli image generate --prompt … --out … |
— | — | — | — | yes · sd15 (compiled Core ML zip, not the HF repo HTML) |
yes · cosmos3-diffusion-npu local HNPU |
MLX registers with a one-line -811 then Swift callbacks install it — that warning is expected. image generate is compiled only when NeuRT is linked; --prompt and --out are required (not a positional prompt). --steps 4 is enough for a smoke PNG.
QHexRT on device also needs QAIRT matching the Hexagon skel (QNN_SDK_ROOT + ADSP_LIBRARY_PATH=…\lib\hexagon-v81\unsigned on v81). Overlay 2.47 DLLs vs a 2.41/2.48 device skel will fail to instantiate graphs. Pass the *_HNPU directory, not a GGUF. GGUF files cannot run on the ARM64 overlay binary (no llama.cpp).
Catalog models are grouped by the org that trains them. GGUF rows run on llama.cpp (macOS, Windows x64, Linux). mlx-* rows run on Apple Silicon only.
| Org | Families | Try |
|---|---|---|
| Alibaba Qwen | Qwen3, Qwen3.6, Qwen3.8 | qwen3, mlx-qwen3 |
| Meta | Llama 3.2 | llama3.2, mlx-llama3.2 |
| Gemma 4 | gemma4-e2b, mlx-gemma4-e2b |
|
| Hugging Face | SmolLM2 | smollm2 |
| Liquid AI | LFM2 | lfm2 |
| IBM | Granite 4.1 | granite4.1-3b, mlx-granite4.1-3b |
| NVIDIA | Nemotron | mlx-nemotron-nano |
| PrismML | Bonsai, Ternary-Bonsai | bonsai-1.7b, mlx-bonsai-1.7b |
| DeepGrove | Maple Preview | maple-preview, mlx-maple-preview |
| Org | Families | Try |
|---|---|---|
| Hugging Face | SmolVLM2 | smolvlm2 |
| Alibaba Qwen | Qwen2-VL | qwen2-vl, mlx-qwen2-vl |
| Liquid AI | LFM2-VL, LFM2.5-VL | lfm2-vl, mlx-lfm2.5-vl |
| Apple | FastVLM | mlx-fastvlm |
| Microsoft | Fara 1.5 (computer use) | fara |
| Meta | Muse Glimmer | muse-glimmer |
| NVIDIA | Nemotron Omni | nemotron-omni |
rcli vlm generate --model smolvlm2 --image photo.png "What is in this picture?"
| Org | Families | Role | Try |
|---|---|---|---|
| OpenAI | Whisper | STT | whisper-tiny |
| NVIDIA | Parakeet, Canary, Nemotron ASR | STT | parakeet-tdt-v2 |
| Alibaba Qwen | Qwen3-ASR / Qwen3-TTS | STT / TTS (MLX) | mlx-qwen3-asr |
| rhasspy | Piper | TTS | piper |
| Supertone | Supertonic | TTS | supertonic |
| Zhipu | GLM-ASR | STT (MLX) | mlx-glm-asr |
| Silero | Silero | VAD | silero |
rcli tts synthesize "Hello from the device." -o hello.wav
rcli stt transcribe hello.wav
| Org | Families | Role | Try | |---|---|---