main
md 226 lines 6.82 KB
Rendered Raw
1 <p align="center">
2 <img src="https://raw.githubusercontent.com/ondeinference/onde/main/assets/onde-inference-logo.svg" alt="Onde Inference" width="80">
3 </p>
4
5 <h1 align="center">onde</h1>
6
7 <p align="center">
8 <strong>A terminal app for managing <a href="https://ondeinference.com/">Onde Inference</a> apps and fine-tuning models locally.</strong><br>
9 Sign in, assign models, and train adapters without bouncing between browser tabs.
10 </p>
11
12 <p align="center">
13 <a href="https://ondeinference.com"><img src="https://img.shields.io/badge/ondeinference.com-235843?style=flat-square&labelColor=17211D" alt="Website"></a>
14 <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>
15 <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>
16 <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>
17 <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>
18 <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>
19 <a href="https://github.com/ondeinference/onde-cli/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT%20%2F%20Apache--2.0-235843?style=flat-square&labelColor=17211D" alt="License"></a>
20 </p>
21
22 <br>
23
24 <p align="center">
25 <img src="https://raw.githubusercontent.com/ondeinference/onde-cli/main/assets/screenshot.png" alt="onde CLI app list and model assignments" width="720">
26 </p>
27
28 <br>
29
30 ---
31
32 ## Install
33
34 ```sh
35 pip install onde-cli
36 ```
37
38 That installs the native `onde` binary for your platform. No compiler setup, no Node.js, no extra runtime to babysit. For package docs and the full install matrix, see <https://ondeinference.com/cli>.
39
40 ## What you get
41
42 Run:
43
44 ```sh
45 onde --tui
46 ```
47
48 and you'll get a full terminal UI where you can:
49
50 - sign up or sign in
51 - create and rename apps
52 - assign models to apps
53 - fine-tune supported Qwen models locally
54 - merge adapters and export GGUF files
55
56 If you prefer doing this work in a terminal instead of a browser, that's the whole point.
57
58 ## Keyboard shortcuts
59
60 ### Auth screen
61
62 | Key | Action |
63 |---|---|
64 | `Tab` | Move between fields |
65 | `Enter` | Submit |
66 | `Ctrl+L` | Switch to sign in |
67 | `Ctrl+N` | Switch to create account |
68 | `Ctrl+C` | Quit |
69
70 ### Apps list
71
72 | Key | Action |
73 |---|---|
74 | `↑` `↓` | Move through apps |
75 | `Enter` | Open app details |
76 | `n` | Create a new app |
77 | `s` | Sign out |
78 | `Ctrl+C` | Quit |
79
80 ### App detail
81
82 | Key | Action |
83 |---|---|
84 | `m` | Assign or change model |
85 | `r` | Rename app |
86 | `s` | Sign out |
87 | `Esc` | Back to apps list |
88
89 ### Model picker
90
91 | Key | Action |
92 |---|---|
93 | `↑` `↓` | Move through models |
94 | `Enter` | Assign selected model |
95 | `Esc` | Cancel |
96
97 ### Fine-tuning
98
99 | Key | Action |
100 |---|---|
101 | `↑` `↓` | Move through models |
102 | `f` | Open fine-tune config for the selected model |
103 | `m` | Merge adapter into base model |
104 | `g` | Export merged model to GGUF |
105
106 ## Fine-tuning
107
108 `onde` can fine-tune Qwen2, Qwen2.5, and Qwen3 safetensors models with LoRA.
109
110 Training runs locally:
111 - on Metal for Apple Silicon
112 - on CPU everywhere else
113
114 No cloud training job. No Python environment. No notebook setup spiral.
115
116 If you want the short version of what happens inside the model at inference time, Onde also has a plain-English note on the [forward pass](https://ondeinference.com/forward-pass).
117
118 ### Supported base models
119
120 | Model | Size |
121 |---|---|
122 | `Qwen/Qwen3-0.6B` | ~1.2 GB |
123 | `Qwen/Qwen2.5-1.5B-Instruct` | ~3.0 GB |
124 | `Qwen/Qwen3-1.7B` | ~3.4 GB |
125 | `Qwen/Qwen3-4B` | ~8.0 GB |
126
127 Only safetensors models can be fine-tuned. GGUF models are already quantized, so this pipeline doesn't use them as training inputs.
128
129 ### Training data format
130
131 Use one JSON object per line. Each object needs a `text` field containing the full conversation in Qwen's chat template.
132
133 ```jsonl
134 {"text": "<|im_start|>user\nWhat is the boiling point of water?<|im_end|>\n<|im_start|>assistant\n100°C at sea level.<|im_end|>"}
135 {"text": "<|im_start|>user\nWhat about at high altitude?<|im_end|>\n<|im_start|>assistant\nLower, around 90°C at 3000 m.<|im_end|>"}
136 ```
137
138 ### Running a fine-tune
139
140 1. Open the Models tab.
141 2. Pick a safetensors model with `↑` / `↓`.
142 3. Press `f`.
143 4. Set your training data path, LoRA rank, epochs, and learning rate.
144 5. Start training.
145
146 Default values:
147 - LoRA rank: `8`
148 - Epochs: `3`
149 - Learning rate: `0.0001`
150
151 As a rough reference, a rank-8 adapter for the 0.6B model is about 1.5 MB.
152
153 ### After training
154
155 Once the run finishes:
156
157 - press `m` to merge the adapter into the base weights
158 - press `g` to export the merged model to GGUF
159
160 The exported file loads directly in the [Onde SDK](https://ondeinference.com/sdk) for on-device AI inference.
161
162 ## Other ways to install
163
164 | Method | Command |
165 |---|---|
166 | npm | `npm install -g @ondeinference/cli` |
167 | Homebrew | `brew install ondeinference/homebrew-tap/onde` |
168 | uv | `uv tool install onde-cli` |
169 | Dart pub | `dart pub global activate onde_cli` |
170 | .NET tool | `dotnet tool install --global Onde.Cli` |
171 | Cargo | `cargo install onde-cli` |
172
173 ### Build from source
174
175 ```sh
176 git clone https://github.com/ondeinference/onde-cli
177 cd onde-cli
178 cargo build --release
179 ./target/release/onde
180 ```
181
182 ## Platform support
183
184 Prebuilt native binaries are available for:
185
186 | Platform | Architecture |
187 |---|---|
188 | macOS | arm64, x64 |
189 | Linux (glibc) | arm64, x64 |
190 | Windows | arm64, x64 |
191
192 ## Debug logs
193
194 Logs are written to `~/.cache/onde/debug.log`.
195
196 The app uses the terminal screen directly while the TUI is open, so logs go to the file instead of printing over the interface.
197
198 ## Related SDKs
199
200 | SDK | Install |
201 |---|---|
202 | [Swift SDK](https://github.com/ondeinference/onde-swift) | Swift Package Manager |
203 | [Flutter SDK](https://pub.dev/packages/onde_inference) | `flutter pub add onde_inference` |
204 | [React Native SDK](https://www.npmjs.com/package/@ondeinference/react-native) | `npm i @ondeinference/react-native` |
205 | [Rust crate](https://crates.io/crates/onde) | `cargo add onde` |
206
207 ## Source and issues
208
209 This package ships a prebuilt native binary. The source code lives here:
210
211 [github.com/ondeinference/onde-cli](https://github.com/ondeinference/onde-cli)
212
213 Bug reports and feature requests should go there too.
214
215 ## License
216
217 Dual-licensed under **MIT** and **Apache 2.0**.
218
219 - [MIT License](https://github.com/ondeinference/onde-cli/blob/main/LICENSE-MIT)
220 - [Apache License 2.0](https://github.com/ondeinference/onde-cli/blob/main/LICENSE-APACHE)
221
222 ---
223
224 ## Copyright
225
226 © 2026 [Splitfire AB](https://5mb.app) ([Onde Inference](https://ondeinference.com)).