{
  "markdown": "<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/ondeinference/onde/refs/heads/development/assets/onde-inference-logo.svg\" alt=\"Onde Inference\" width=\"96\">\n</p>\n\n<h1 align=\"center\">Onde Inference CLI</h1>\n\n<p align=\"center\">\n  Command-line interface for <a href=\"https://ondeinference.com/\">Onde Inference</a>.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://ondeinference.com\"><img src=\"https://img.shields.io/badge/ondeinference.com-235843?style=flat-square&labelColor=17211D\" alt=\"Website\"></a>\n  <a href=\"https://apps.apple.com/se/developer/splitfire-ab/id1831430993\"><img src=\"https://img.shields.io/badge/App%20Store-live-235843?style=flat-square&labelColor=17211D\" alt=\"App Store\"></a>\n  <a href=\"https://www.npmjs.com/package/@ondeinference/cli\"><img src=\"https://img.shields.io/npm/v/@ondeinference/cli?style=flat-square&labelColor=17211D&color=235843\" alt=\"npm\"></a>\n  <a href=\"https://pypi.org/project/onde-cli/\"><img src=\"https://img.shields.io/pypi/v/onde-cli?style=flat-square&labelColor=17211D&color=235843\" alt=\"PyPI\"></a>\n  <a href=\"https://pub.dev/packages/onde_cli\"><img src=\"https://img.shields.io/pub/v/onde_cli?style=flat-square&labelColor=17211D&color=235843\" alt=\"pub.dev\"></a>\n  <a href=\"https://www.nuget.org/packages/Onde.Cli\"><img src=\"https://img.shields.io/nuget/v/Onde.Cli?style=flat-square&labelColor=17211D&color=235843\" alt=\"NuGet\"></a>\n  <a href=\"https://crates.io/crates/onde-cli\"><img src=\"https://img.shields.io/crates/v/onde-cli?style=flat-square&labelColor=17211D&color=235843\" alt=\"Crates.io\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/ondeinference/onde-swift\">Swift</a> · <a href=\"https://pub.dev/packages/onde_inference\">Flutter</a> · <a href=\"https://www.npmjs.com/package/@ondeinference/react-native\">React Native</a> · <a href=\"https://crates.io/crates/onde\">Rust</a> · <a href=\"https://ondeinference.com\">Website</a>\n</p>\n\n---\n\nManage your Onde Inference account, fine-tune local models, and export them to GGUF, all from the terminal.\n\n## Install\n\n[Install onde-cli](https://github.com/ondeinference/onde-cli) with your favorite tool. For package docs and the full install matrix, see <https://ondeinference.com/cli>.\n\n### npm\n\n```sh\nnpm install -g @ondeinference/cli\n```\n\n### Homebrew\n\n```sh\nbrew tap ondeinference/homebrew-tap && brew trust --tap ondeinference/homebrew-tap\nbrew install onde\n```\n\n### pip / uv / uvx\n\n```sh\npip install onde-cli\n# or\nuv tool install onde-cli\nuv run onde\n# or with\nuvx --from onde-cli onde\n```\n\n### .NET tool\n\n```sh\ndotnet tool install --global Onde.Cli\n```\n\n### Dart pub global\n\n```sh\ndart pub global activate onde_cli\n```\n\nThe Dart package is a thin launcher. On first run it downloads the right native binary into `~/.onde/cli`, then reuses the local copy.\n\n### Pre-built binary\n\nDownload a release from [GitHub Releases](https://github.com/ondeinference/onde-cli/releases):\n\n```sh\n# macOS Apple Silicon\ncurl -Lo onde https://github.com/ondeinference/onde-cli/releases/latest/download/onde-macos-arm64\nchmod +x onde && mv onde /usr/local/bin/onde\n```\n\n| Platform | File |\n|---|---|\n| macOS Apple Silicon | `onde-macos-arm64` |\n| macOS Intel | `onde-macos-amd64` |\n| Linux x64 | `onde-linux-amd64` |\n| Linux arm64 | `onde-linux-arm64` |\n| Windows x64 | `onde-win-amd64.exe` |\n| Windows arm64 | `onde-win-arm64.exe` |\n\n---\n\n## Usage\n\n```sh\nonde\n```\n\nThis opens the TUI. You can sign up or sign in right there.\n\n| Key | What it does |\n|---|---|\n| `Tab` | Move between fields |\n| `Enter` | Submit or sign out |\n| `Ctrl+L` | Go to the sign-in screen |\n| `Ctrl+N` | Go to the new account screen |\n| `Ctrl+C` | Quit |\n\n### MCP server\n\nRun `onde` as a [Model Context Protocol](https://modelcontextprotocol.io/) server over stdio instead of the TUI:\n\n```sh\nonde --mcp\n```\n\nThis exposes Onde account and model-catalog operations as MCP tools — `login`, `me`, `apps_list`, `app_create`, `app_rename`, `models_list`, `model_register`, `model_assign`, `hf_search` — returning structured JSON. stdout is the JSON-RPC channel; tools run non-interactively and reuse the token from a TUI sign-in (or the `login` tool). Point any MCP client at the command `onde --mcp`.\n\n---\n\n## Fine-tuning\n\n`onde` includes a LoRA fine-tuning pipeline for Qwen2, Qwen2.5, and Qwen3 models. It runs locally: Metal on Apple Silicon, CPU elsewhere. No cloud setup. No Python environment.\n\nThe flow is straightforward: download a safetensors base model, fine-tune it with LoRA, merge the adapter back into the base weights, then export to GGUF for use in the Onde SDK.\n\nIf you want a quick refresher on what the model is actually doing at inference time, Onde has a short note on the [forward pass](https://ondeinference.com/forward-pass).\n\n### Training data format\n\nEach line should be one complete conversation in Qwen's chat template:\n\n```jsonl\n{\"text\": \"<|im_start|>system\\nYou are a helpful assistant.<|im_end|>\\n<|im_start|>user\\nWhat is LoRA?<|im_end|>\\n<|im_start|>assistant\\nLoRA adds small trainable matrices to frozen layers, letting you fine-tune large models without updating all the weights.<|im_end|>\"}\n```\n\nSave the file wherever you want. The TUI lets you point to it directly.\n\n### Running it\n\n```\nonde\n  → Models tab (Tab from Apps)\n  → Select a safetensors model (↑↓, Enter)\n  → Press f\n```\n\nOnly safetensors models can be fine-tuned. GGUF models are already quantized, so their weights are not differentiable.\n\nConfigure the run:\n\n| Field | Default | Notes |\n|---|---|---|\n| Training data | `~/.onde/finetune/train.jsonl` | Path to your JSONL file |\n| LoRA rank | `8` | Higher means more capacity and more memory use |\n| Epochs | `3` | Full passes over the dataset |\n| Learning rate | `0.0001` | AdamW default |\n\nPress `Enter` to start. In a healthy run, loss usually starts dropping by epoch 2. If it stays flat, try `0.0003`.\n\n### After training\n\nFor rank 8 on a 0.6B model, the adapter is about 1.5 MB. From the fine-tune complete screen:\n\n- `m` to merge the adapter into the base model\n- `g` to export the merged model to GGUF\n\nThe resulting GGUF loads directly in the [Onde SDK](https://ondeinference.com/sdk) for on-device AI inference.\n\n### Supported base models\n\n| Model | Size | Notes |\n|---|---|---|\n| `Qwen/Qwen3-0.6B` | ~1.2 GB | Smallest and quickest to train |\n| `Qwen/Qwen2.5-1.5B-Instruct` | ~3.0 GB | Good default for instruction tuning |\n| `Qwen/Qwen3-1.7B` | ~3.4 GB | Newer small Qwen3 model |\n| `Qwen/Qwen3-4B` | ~8.0 GB | Best quality, better suited to macOS |\n\nYou can search for any of these from the Models tab with `/`.\n\n---\n\n## Debug\n\nLogs are written to `~/.cache/onde/debug.log`.\n\nIf you installed through pub.dev, the launcher cache lives under `~/.onde/cli`.\n\n---\n\n## License\n\nDual-licensed under [MIT](https://github.com/ondeinference/onde-cli/blob/main/LICENSE-MIT) and [Apache 2.0](https://github.com/ondeinference/onde-cli/blob/main/LICENSE-APACHE).\n\n## Copyright\n\n© 2026 [Splitfire AB](https://5mb.app) ([Onde Inference](https://ondeinference.com)).\n",
  "bytes": 6983,
  "sha": "c42a32f084d13ac6f84ee2e94cbc54cc273ca30ef9d0efa9b19124e31db02d1f",
  "repo_slug": "ondeinference/onde-cli",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ondeinference_onde_cli_543a6081/readme"
}