Update docs and comments for clarity and add Onde links
- Improve documentation and comments for clarity and consistency - Add or update links to ondeinference.com and Onde SDK in READMEs - Clarify install instructions and add references to full install matrix - Refine code comments for accuracy and readability
keypair34 committed
May 3, 2026 at 13:01 UTC
8b785502b2c798fadb47bed1bf432d2c35728479
10 files changed
+37
-38
README.md
+3
-3
@@ -5,7 +5,7 @@
5
<h1 align="center">Onde Inference CLI</h1>
6
7
<p align="center">
8
- Command-line interface for <a href="https://ondeinference.com">Onde Inference</a>.
8
+ Command-line interface for <a href="https://ondeinference.com/">Onde Inference</a>.
9
</p>
10
11
<p align="center">
@@ -28,7 +28,7 @@ Manage your Onde Inference account, fine-tune local models, and export them to G
28
29
## Install
30
31
-[Install onde-cli](https://github.com/ondeinference/onde-cli) with your favorite tool.
31
+[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>.
32
33
### npm
34
@@ -152,7 +152,7 @@ For rank 8 on a 0.6B model, the adapter is about 1.5 MB. From the fine-tune comp
152
- `m` to merge the adapter into the base model
153
- `g` to export the merged model to GGUF
154
155
-The resulting GGUF loads directly in the Onde SDK for on-device inference.
155
+The resulting GGUF loads directly in the [Onde SDK](https://ondeinference.com/sdk) for on-device AI inference.
156
157
### Supported base models
158
build.rs
+5
-6
@@ -1,9 +1,8 @@
1
fn main() {
2
- // Load .env if present (local dev). In CI the vars are injected directly
3
- // as environment variables, so this is a no-op there.
2
+ // Load .env for local builds. In CI these vars already come from the environment.
3
let _ = dotenvy::dotenv();
4
6
- // Required variables — build fails if missing.
5
+ // These must be present or the build should fail.
6
for var in [
7
"ONDE_APP_ID",
8
"ONDE_APP_SECRET",
@@ -25,7 +24,7 @@ fn main() {
24
}
25
}
26
28
- // Optional variables — baked in when present, empty string when absent.
27
+ // Optional vars: bake them in when present, use an empty string otherwise.
28
{
29
let var = "HF_TOKEN";
30
println!("cargo:rerun-if-env-changed={var}");
@@ -34,12 +33,12 @@ fn main() {
33
println!("cargo:rustc-env={var}={val}");
34
}
35
Err(_) => {
37
- // Forward an empty value so env!() still compiles.
36
+ // Keep env!() happy even when the token is missing.
37
println!("cargo:rustc-env={var}=");
38
}
39
}
40
}
41
43
- // Rebuild whenever .env itself changes.
42
+ // Re-run the build script if .env changes.
43
println!("cargo:rerun-if-changed=.env");
44
}
npm/onde-cli/README.md
+2
-2
@@ -5,7 +5,7 @@
5
<h1 align="center">@ondeinference/cli</h1>
6
7
<p align="center">
8
- A terminal app for your Onde Inference account, plus local model fine-tuning.
8
+ A terminal app for your <a href="https://ondeinference.com/">Onde Inference</a> account, plus local model fine-tuning.
9
</p>
10
11
<p align="center">
@@ -122,7 +122,7 @@ A rank-8 adapter for the 0.6B model is about 1.5 MB, so the output stays pretty
122
- Press `m` to merge the adapter into the base weights.
123
- Press `g` to export the merged model to GGUF.
124
125
-The exported file loads directly in the [Onde SDK](https://ondeinference.com) for on-device inference.
125
+The exported file loads directly in the [Onde SDK](https://ondeinference.com/sdk) for on-device inference.
126
127
---
128
npm/onde-cli/src/index.ts
+4
-4
@@ -3,9 +3,9 @@
3
import { spawnSync } from "child_process";
4
5
/**
6
- * Returns the executable path which is located inside node_modules
7
- * The naming convention is cli-OS-ARCH
8
- * If the platform is win32 or cygwin, executable will include a .exe extension.
6
+ * Return the bundled executable path from node_modules.
7
+ * Package names follow the cli-OS-ARCH pattern.
8
+ * Windows builds use the .exe suffix.
9
* @see https://nodejs.org/api/os.html#osarch
10
* @see https://nodejs.org/api/os.html#osplatform
11
* @example "x/xx/node_modules/cli-darwin-arm64"
@@ -30,7 +30,7 @@ function getExePath() {
30
}
31
32
/**
33
- * Runs the application with args using nodejs spawn
33
+ * Run the bundled executable with the current CLI args.
34
*/
35
function run() {
36
const args = process.argv.slice(2);
npm/scripts/render-main-package.cjs
+2
-2
@@ -16,7 +16,7 @@ const vars = {
16
};
17
18
/**
19
- * Replace every `${key}` in the template with the corresponding value from vars.
19
+ * Replace `${key}` placeholders in the template with values from vars.
20
*/
21
function interpolate(template, variables) {
22
return template.replace(/\$\{(\w+)\}/g, (match, key) => {
@@ -25,7 +25,7 @@ function interpolate(template, variables) {
25
});
26
}
27
28
-// Read and interpolate package-main.json.tmpl
28
+// Read package-main.json.tmpl and fill in the release version.
29
const template = fs.readFileSync(
30
path.join(npmRoot, "package-main.json.tmpl"),
31
"utf-8",
npm/scripts/render-platform-package.cjs
+4
-4
@@ -17,7 +17,7 @@ const packageDirectory = path.resolve(npmRoot, packageName);
17
18
fs.mkdirSync(packageDirectory, { recursive: true });
19
20
-// Variable map for template interpolation
20
+// Values we drop into the templates.
21
const vars = {
22
node_pkg: packageName,
23
node_version: version,
@@ -26,7 +26,7 @@ const vars = {
26
};
27
28
/**
29
- * Replace every `${key}` in the template with the corresponding value from vars.
29
+ * Replace `${key}` placeholders in the template with values from vars.
30
*/
31
function interpolate(template, variables) {
32
return template.replace(/\$\{(\w+)\}/g, (match, key) => {
@@ -35,7 +35,7 @@ function interpolate(template, variables) {
35
});
36
}
37
38
-// Read and interpolate package.json.tmpl
38
+// Read package.json.tmpl and fill it in.
39
const packageTemplate = fs.readFileSync(
40
path.join(npmRoot, "package.json.tmpl"),
41
"utf-8",
@@ -45,7 +45,7 @@ fs.writeFileSync(
45
interpolate(packageTemplate, vars),
46
);
47
48
-// Read and interpolate README.md.tmpl
48
+// Read README.md.tmpl and fill it in.
49
const readmeTemplate = fs.readFileSync(
50
path.join(npmRoot, "README.md.tmpl"),
51
"utf-8",
nuget/onde-cli/README.md
+1
-1
@@ -20,7 +20,7 @@ dotnet tool update --global Onde.Cli
20
onde
21
```
22
23
-That opens the terminal UI for account management, app setup, and local model fine-tuning.
23
+That opens the terminal UI for account management, app setup, and local model fine-tuning. For package details, platform notes, and the full install matrix, see <https://ondeinference.com/cli>.
24
25
If you want a quick background read on the inference side, Onde has a short note on the [forward pass](https://ondeinference.com/forward-pass).
26
pub/onde_cli/README.md
+1
-1
@@ -14,7 +14,7 @@ dart pub global activate onde_cli
14
onde
15
```
16
17
-That opens the Onde terminal UI for account management, app setup, and local model fine-tuning.
17
+That opens the Onde terminal UI for account management, app setup, and local model fine-tuning. For package details, platform notes, and the full install matrix, see <https://ondeinference.com/cli>.
18
19
If you want a quick background read on the inference side, Onde has a short note on the [forward pass](https://ondeinference.com/forward-pass).
20
pypi/README.md
+3
-3
@@ -5,7 +5,7 @@
5
<h1 align="center">onde</h1>
6
7
<p align="center">
8
- <strong>A terminal app for managing Onde Inference apps and fine-tuning models locally.</strong><br>
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
@@ -35,7 +35,7 @@
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.
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
@@ -157,7 +157,7 @@ Once the run finishes:
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) for on-device inference.
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
src/app.rs
+12
-12
@@ -12,17 +12,17 @@ use {
12
tokio::sync::mpsc,
13
};
14
15
-// ui.rs imports OndeApp and OndeModel from here instead of depending on the SDK directly.
15
+// ui.rs pulls OndeApp and OndeModel from here so it does not have to depend on the SDK directly.
16
pub use smbcloud_gresiq_sdk::{OndeApp, OndeModel};
17
18
-// Onde is a tenant in smbCloud Auth. These identify this CLI to the backend.
19
-// smbCloud Auth credentials — baked in at compile time from the environment.
20
-// Set these in .env for local builds; inject as secrets in CI.
18
+// Onde is a tenant in smbCloud Auth. These values identify the CLI to the backend.
19
+// They are baked in at compile time from the environment.
20
+// Put them in .env for local builds, or inject them as CI secrets.
21
pub(crate) const ONDE_APP_ID: &str = env!("ONDE_APP_ID");
22
pub(crate) const ONDE_APP_SECRET: &str = env!("ONDE_APP_SECRET");
23
pub(crate) const HF_TOKEN: &str = env!("HF_TOKEN");
24
25
-// GresIQ API credentials for the Onde tenant — distinct from Auth above.
25
+// GresIQ credentials for the same tenant. These are separate from Auth.
26
pub(crate) const GRESIQ_API_KEY: &str = env!("GRESIQ_API_KEY");
27
pub(crate) const GRESIQ_API_SECRET: &str = env!("GRESIQ_API_SECRET");
28
@@ -100,9 +100,9 @@ pub struct AdapterEntry {
100
impl AdapterEntry {
101
/// Classify the location of this artifact for display purposes.
102
///
103
- /// - `"Onde Inference"` — inside the shared App Group container
104
- /// - `"HF Cache"` — inside `~/.cache/huggingface/hub` or `$HF_HOME`
105
- /// - The raw path string — anything else (custom / local export)
103
+ /// - `"Onde Inference"`: inside the shared App Group container
104
+ /// - `"HF Cache"`: inside `~/.cache/huggingface/hub` or `$HF_HOME`
105
+ /// - the raw path string: anything else, usually a custom or local export
106
pub fn location_label(&self) -> String {
107
let path_str = self.path.to_string_lossy();
108
@@ -121,7 +121,7 @@ impl AdapterEntry {
121
return "HF Cache".to_string();
122
}
123
124
- // Custom / local path — show the directory
124
+ // For custom or local paths, just show the directory.
125
self.path
126
.parent()
127
.map(|p| p.to_string_lossy().to_string())
@@ -130,11 +130,11 @@ impl AdapterEntry {
130
131
/// Whether this GGUF should show the upload-to-HuggingFace UI.
132
///
133
- /// Only locally fine-tuned / exported models (not from a known HF cache)
134
- /// are candidates for uploading — models already on HF don't need it.
133
+ /// Only local fine-tune outputs should get the upload UI.
134
+ /// If the model already came from a known HF cache, skip it.
135
pub fn is_uploadable(&self) -> bool {
136
let path_str = self.path.to_string_lossy();
137
- // Not in the Onde app group (those are downloaded from HF)
137
+ // App Group files were downloaded from HF, so skip them.
138
if path_str.contains("group.com.ondeinference.apps") {
139
return false;
140
}