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/wallyLast scanned: 9/9/2026
{
"issues": [
{
"file": "README.md",
"line": 76,
"type": "remote-install",
"message": "Install command (remote install script piped to a shell — review the source before running): \"curl -fsSL https://raw.githubusercontent.com/RunanywhereAI/wally/main/install.sh\"",
"severity": "low"
},
{
"file": "skills/runanywhere/SKILL.md",
"line": 19,
"type": "remote-install",
"message": "Install command (remote install script piped to a shell — review the source before running): \"curl -fsSL https://raw.githubusercontent.com/RunanywhereAI/wally/main/install.sh\"",
"severity": "medium"
}
],
"status": "PASSED",
"scannedAt": "2026-09-09T08:39:52.927Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}wally 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. wally 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/wally" and add it to your Claude Code skills directory (see the Installation section above).
wally 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 wally 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 own machine, or hosted when the job outgrows it.
Chat, vision, speech and embeddings, all from the terminal. Local models never leave the device; hosted ones go through a console you sign in to and are metered against your own credit.
wally pull qwen3 # download a model
wally run qwen3 # chat with it, offline
That is the whole first run. No account, no key, nothing leaves the machine.
Models you have pulled run on this machine and need no account. To use a hosted model instead, sign in to a RunAnywhere console:
wally login # opens a browser; approve it there
wally whoami # the account you are signed in as
wally usage # credit, and what you have used this month
wally 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 WALLY_CONSOLE_URL=http://localhost:8002
wally login
Then hand a hosted model to a coding session:
wally opencode -m gemma-4
For the Open Frontier hosted path, make the choice explicit and pass any
OpenCode arguments after --:
wally opencode --cloud --model <console-model-id> -- --agent build
--cloud never falls back to a local model. wally opencode -m <model> runs
whichever model you name, local or hosted.
If the model is on this machine, wally 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/wally/wally
or
curl -fsSL https://raw.githubusercontent.com/RunanywhereAI/wally/main/install.sh | sh
Needs a built SDK kit, not SDK source:
cmake -B build -DWALLY_SDK_KIT=<sdks>/dist/cpp-desktop-macos-arm64
export WALLY_SDK_SWIFT_PATH=<sdks> # for the MLX backend on Apple
cmake --build build -j8
build/wally is the full binary. build/wally-cxx is the same CLI without MLX,
and is what you get if WALLY_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/wally
cp -R build/mlx-swift_Cmlx.bundle build/wally ~/.local/lib/wally/
printf '#!/bin/sh\nexec "$HOME/.local/lib/wally/wally" "$@"\n' > ~/.local/bin/wally
chmod +x ~/.local/bin/wally
Copy the binary on its own and MLX will not register.
irm https://raw.githubusercontent.com/RunanywhereAI/wally/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.
wally pull qwen3 # download
wally run qwen3 # chat
wally run qwen3 "Hello" # one-shot
wally serve qwen3 # OpenAI-compatible API on :8080 (macOS/Linux)
wally models list --all is the full catalog. Short names work everywhere (qwen3, llama3.2, whisper-tiny, piper, …). Any Hugging Face GGUF works too:
wally pull hf.co/Qwen/Qwen3-0.6B-GGUF/Qwen3-0.6B-Q8_0.gguf
One wally 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:
wally llm generate --engine mlx -m mlx-qwen3 "Hello"
wally run --engine qhexrt /path/to/lfm2_5_230m_HNPU "Hello"
wally 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 |
wally 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 wally, not wally-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 wally 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 | wally run / llm generate |
yes · smollm2, qwen3 |
yes · mlx-qwen3 |
— | — | yes · lfm2-230m-ane local Core ML tree |
yes · lfm2-230m-npu local *_HNPU |
| VLM | wally vlm generate --image |
yes · smolvlm2 |
yes · mlx-qwen2-vl |
— | — | — | yes · internvl-1b-npu local HNPU |
| TTS | wally tts synthesize -o out.wav |
— | yes · mlx-soprano |
yes · piper |
— | — | yes · kitten-micro-npu local HNPU |
| STT | wally 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 | wally vad detect audio.wav |
— | — | yes | yes · silero |
— | — |
| Embeddings | wally embed |
yes · nemotron-3-embed |
yes · mlx-qwen3-embed |
— | yes · minilm |
— | yes · embeddinggemma-npu local HNPU |
| Rerank | wally rerank -d … |
yes · bge-reranker |
— | — | — | — | yes · nv-rerank-npu local HNPU |
| Segmentation | wally segment image.ppm (binary P6 PPM) |
— | — | — | yes · segformer |
— | — |
| Diarization | wally diarize audio.wav |
— | — | — | yes · sortformer |
— | — |
| Image gen | wally 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 |
wally 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](https://github.com/rhas |