{"id":"e48a96c9-e1f0-44c2-bfa3-8429e0709907","slug":"dsaad68-ripple","kind":"mcp","name":"ripple","summary":"An on-device coding agent for your terminal, built on the Apple stack: local models with Apple MLX and an Apple Container sandbox (remote models supported too).","owner":"dsaad68","repoUrl":"https://github.com/dsaad68/ripple","license":"MIT","licenseTier":"permissive","trust":"community","stars":4,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-06-22T22:00:11.000Z","addedAt":"2026-10-14T05:51:20.720Z","logoUrl":"https://avatars.githubusercontent.com/u/6844325?u=b744e154cdb0eb08b52ec108abc49c6f9d0ab17f&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["utilities"],"tags":["agent","agentic","coding-agent","macos","on-device-ai","swift","tui","tui-app"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-17T09:40:41.228Z","sample":false,"url":"https://conduits.dev/tools/dsaad68-ripple","language":"Swift","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<p align=\"center\">\n  <img src=\"docs/assets/images/ripple-logo.png\" width=\"140\" alt=\"Ripple\">\n</p>\n\n<h1 align=\"center\">Ripple</h1>\n\n<p align=\"center\">\n  <a href=\"https://ripple.verybad.engineer\"><img src=\"https://img.shields.io/badge/docs-ripple.verybad.engineer-0ea5e9?style=flat-square\" alt=\"Docs\"></a>\n  <img src=\"https://img.shields.io/badge/Swift-6.1%2B-F05138?style=flat-square&logo=swift&logoColor=white\" alt=\"Swift 6.1+\">\n  <img src=\"https://img.shields.io/badge/macOS-26%2B-000000?style=flat-square&logo=apple&logoColor=white\" alt=\"macOS 26+\">\n  <img src=\"https://img.shields.io/badge/Apple_Silicon-arm64-555555?style=flat-square&logo=apple&logoColor=white\" alt=\"Apple Silicon\">\n  <img src=\"https://img.shields.io/badge/License-MIT-22c55e?style=flat-square\" alt=\"MIT\">\n</p>\n\n<p align=\"center\">\n  An on-device coding agent for macOS, a Claude Code-style terminal CLI that runs\n  <a href=\"https://huggingface.co/LiquidAI\">LFM2.5</a> models locally on Apple Silicon via MLX,\n  with an interactive REPL, a headless mode, and a scenario harness.\n  Built on <a href=\"https://github.com/dsaad68/deepagents-swift\">DeepAgents</a>.\n</p>\n\n---\n\n## Commands\n\n```\nripple                     interactive deep-agent REPL (no subcommand needed)\nripple -p \"...\"            one-shot, non-interactive run (machine-readable output)\nripple run <scenarios>     headless TOML/JSON scenario harness\nripple mcp                 manage MCP servers\nripple model               download / manage local models\nripple --version           print the ripple and DeepAgents-swift versions\nripple --help              full usage and project links\n```\n\nJust run `ripple` to start the interactive REPL - no subcommand needed (`ripple chat` is the\nexplicit equivalent). Pipe text on stdin (`echo \"...\" | ripple`) for a one-shot run.\n\n**Lazy tools** *(experimental)*. Prefilling forty tool schemas on every query is most of a cold first response. In\n`/config` → **Lazy Tools** you mark each toolset (and each MCP server) *core* or *auxiliary*: core\nschemas stay in the prompt, auxiliary ones are found on demand with `search_tools` and then called\nnormally, costing nothing until they are needed. Matching is lexical by default, or semantic via an\non-device ColBERT encoder (`ripple model pull mlx-community/LFM2.5-ColBERT-350M-8bit`). See\n[Lazy tools](https://ripple.verybad.engineer/config/#lazy-tools).\n\n**Pick a model without leaving the chat.** `/model` → **Local** lists the on-device catalog by model\nfamily, split into `LLM` and `Embedding`; open one for its models under a `Text` / `Vision` /\n`Text + Vision` heading, each row showing its download state, weight format, size, context window\nand per-turn output budget in aligned columns. Type to filter, **enter** to download, **ctrl-x** to\nremove. The **Remote** tab browses OpenRouter's free catalog the same way, with the same columns. See\n[Local MLX models](https://ripple.verybad.engineer/models/local/).\n\n## Requirements\n\n- macOS 26+ (Tahoe), Apple Silicon (arm64)\n- Xcode 26+ only if you build from source (the prebuilt `brew install dsaad68/tap/ripple` needs no Xcode)\n- [Apple's `container` tool](https://github.com/apple/container) only for the shell sandbox\n  (`/config` → Sandbox). It is not part of macOS; without it `failover` runs commands in the local\n  shell and `container-only` refuses to run them.\n\n## Install\n\nWith Homebrew (prebuilt binary, no Xcode needed):\n\n```sh\nbrew install dsaad68/tap/ripple\n```\n\nOr build from source from a clone (needs Xcode 26+, which is the only build system that co-locates\nMLX's `default.metallib` beside the binary):\n\n```sh\nbrew install --HEAD ./Formula/ripple.rb\n```\n\nUpgrade later with `brew upgrade ripple`.\n\nModels come from your local Hugging Face cache; pre-fetch a planner first, e.g.:\n\n```sh\nhf download LiquidAI/LFM2.5-1.2B-Instruct-MLX-bf16\n```\n\n## Docs\n\n- Ripple: [ripple.verybad.engineer](https://ripple.verybad.engineer)\n- DeepAgents: [deepagents-swift.verybad.engineer](https://deepagents-swift.verybad.engineer)\n\n## License\n\nMIT. See `LICENSE`.\n"}