@ondeinference / cli / commits / cff0ba2

Update docs, fine-tuning instructions, and dependencies

- Rewrite and clarify fine-tuning sections in all READMEs - Improve keyboard shortcut tables and usage instructions - Update npm and PyPI package descriptions - Update dependencies in Cargo.lock (fax, idna_adapter, jni, etc.) - Remove unused cesu8 and fax_derive packages

keypair34 committed Apr 28, 2026 at 07:48 UTC cff0ba2b499b12c73b3b899e74ac558b24d6327d
5 files changed +498 -234
Cargo.lock
+312 -114
@@ -716,12 +716,6 @@ dependencies = [
716 "shlex",
717 ]
718
719 -[[package]]
720 -name = "cesu8"
721 -version = "1.1.0"
722 -source = "registry+https://github.com/rust-lang/crates.io-index"
723 -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
724 -
719 [[package]]
720 name = "cfg-if"
721 version = "1.0.4"
@@ -1612,23 +1606,9 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
1606
1607 [[package]]
1608 name = "fax"
1615 -version = "0.2.6"
1616 -source = "registry+https://github.com/rust-lang/crates.io-index"
1617 -checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
1618 -dependencies = [
1619 - "fax_derive",
1620 -]
1621 -
1622 -[[package]]
1623 -name = "fax_derive"
1624 -version = "0.2.0"
1609 +version = "0.2.7"
1610 source = "registry+https://github.com/rust-lang/crates.io-index"
1626 -checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
1627 -dependencies = [
1628 - "proc-macro2",
1629 - "quote",
1630 - "syn 2.0.117",
1631 -]
1611 +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a"
1612
1613 [[package]]
1614 name = "fdeflate"
@@ -2605,9 +2585,9 @@ dependencies = [
2585
2586 [[package]]
2587 name = "idna_adapter"
2608 -version = "1.2.1"
2588 +version = "1.2.2"
2589 source = "registry+https://github.com/rust-lang/crates.io-index"
2610 -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
2590 +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
2591 dependencies = [
2592 "icu_normalizer",
2593 "icu_properties",
@@ -2815,27 +2795,32 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
2795
2796 [[package]]
2797 name = "jni"
2818 -version = "0.21.1"
2798 +version = "0.22.4"
2799 source = "registry+https://github.com/rust-lang/crates.io-index"
2820 -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
2800 +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498"
2801 dependencies = [
2822 - "cesu8",
2802 "cfg-if",
2803 "combine",
2825 - "jni-sys 0.3.1",
2804 + "jni-macros",
2805 + "jni-sys",
2806 "log",
2827 - "thiserror 1.0.69",
2807 + "simd_cesu8",
2808 + "thiserror 2.0.18",
2809 "walkdir",
2829 - "windows-sys 0.45.0",
2810 + "windows-link 0.2.1",
2811 ]
2812
2813 [[package]]
2833 -name = "jni-sys"
2834 -version = "0.3.1"
2814 +name = "jni-macros"
2815 +version = "0.22.4"
2816 source = "registry+https://github.com/rust-lang/crates.io-index"
2836 -checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
2817 +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3"
2818 dependencies = [
2838 - "jni-sys 0.4.1",
2819 + "proc-macro2",
2820 + "quote",
2821 + "rustc_version",
2822 + "simd_cesu8",
2823 + "syn 2.0.117",
2824 ]
2825
2826 [[package]]
@@ -3250,7 +3235,7 @@ dependencies = [
3235 "mistralrs-core",
3236 "mistralrs-macros",
3237 "rand 0.9.4",
3253 - "reqwest 0.13.2",
3238 + "reqwest 0.13.3",
3239 "schemars 1.2.1",
3240 "serde",
3241 "serde_json",
@@ -3335,7 +3320,7 @@ dependencies = [
3320 "rayon",
3321 "regex",
3322 "regex-automata",
3338 - "reqwest 0.13.2",
3323 + "reqwest 0.13.3",
3324 "rubato",
3325 "rust-mcp-schema",
3326 "rustc-hash 2.1.2",
@@ -3389,7 +3374,7 @@ dependencies = [
3374 "async-trait",
3375 "futures-util",
3376 "http",
3392 - "reqwest 0.13.2",
3377 + "reqwest 0.13.3",
3378 "rust-mcp-schema",
3379 "serde",
3380 "serde_json",
@@ -3771,7 +3756,7 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
3756
3757 [[package]]
3758 name = "onde"
3774 -version = "0.1.8"
3759 +version = "1.0.0"
3760 dependencies = [
3761 "anyhow",
3762 "cc",
@@ -3779,8 +3764,8 @@ dependencies = [
3764 "hf-hub",
3765 "home",
3766 "log",
3782 - "mistralrs",
3783 - "mistralrs-core",
3767 + "onde-mistralrs",
3768 + "onde-mistralrs-core",
3769 "reqwest 0.12.28",
3770 "serde",
3771 "serde_json",
@@ -3820,11 +3805,274 @@ dependencies = [
3805 "tokio",
3806 ]
3807
3808 +[[package]]
3809 +name = "onde-mistralrs"
3810 +version = "0.8.2"
3811 +source = "registry+https://github.com/rust-lang/crates.io-index"
3812 +checksum = "f4b5589da2ed82d3962ab4d8278cc8a93fea7c758eb1230894ffadb926c3c16c"
3813 +dependencies = [
3814 + "anyhow",
3815 + "candle-core",
3816 + "candle-nn",
3817 + "clap 4.6.1",
3818 + "either",
3819 + "futures",
3820 + "image",
3821 + "indexmap 2.14.0",
3822 + "onde-mistralrs-core",
3823 + "onde-mistralrs-macros",
3824 + "rand 0.9.4",
3825 + "reqwest 0.13.3",
3826 + "schemars 1.2.1",
3827 + "serde",
3828 + "serde_json",
3829 + "thiserror 2.0.18",
3830 + "tokio",
3831 + "tracing",
3832 + "tracing-subscriber",
3833 + "walkdir",
3834 +]
3835 +
3836 +[[package]]
3837 +name = "onde-mistralrs-audio"
3838 +version = "0.8.2"
3839 +source = "registry+https://github.com/rust-lang/crates.io-index"
3840 +checksum = "ed88aa277c613327f393ff5816fed55609a7a93b87ace505d70a6b3438b12dd2"
3841 +dependencies = [
3842 + "anyhow",
3843 + "apodize",
3844 + "hound",
3845 + "symphonia",
3846 +]
3847 +
3848 +[[package]]
3849 +name = "onde-mistralrs-core"
3850 +version = "0.8.2"
3851 +source = "registry+https://github.com/rust-lang/crates.io-index"
3852 +checksum = "7872456b7db2d8aaf39da83269dbf77e2503d6d398010f3b9a17eebec3da8dee"
3853 +dependencies = [
3854 + "ahash",
3855 + "akin",
3856 + "anyhow",
3857 + "apodize",
3858 + "as-any",
3859 + "async-trait",
3860 + "base64 0.22.1",
3861 + "bm25",
3862 + "bytemuck",
3863 + "bytemuck_derive",
3864 + "candle-core",
3865 + "candle-metal-kernels",
3866 + "candle-nn",
3867 + "cfgrammar",
3868 + "chrono",
3869 + "clap 4.6.1",
3870 + "csv",
3871 + "derive-new",
3872 + "derive_more",
3873 + "dirs 6.0.0",
3874 + "either",
3875 + "float8",
3876 + "futures",
3877 + "galil-seiferas",
3878 + "half",
3879 + "hashbrown 0.16.1",
3880 + "hf-hub",
3881 + "hound",
3882 + "html2text",
3883 + "http",
3884 + "image",
3885 + "indexmap 2.14.0",
3886 + "indicatif 0.18.4",
3887 + "interprocess",
3888 + "itertools 0.14.0",
3889 + "libc",
3890 + "llguidance",
3891 + "lrtable",
3892 + "minijinja",
3893 + "minijinja-contrib",
3894 + "num-traits",
3895 + "objc",
3896 + "objc2-metal",
3897 + "onde-mistralrs-audio",
3898 + "onde-mistralrs-mcp",
3899 + "onde-mistralrs-paged-attn",
3900 + "onde-mistralrs-quant",
3901 + "onde-mistralrs-vision",
3902 + "onde-openai-harmony",
3903 + "onde-tqdm",
3904 + "ordered-float",
3905 + "parking_lot",
3906 + "radix_trie",
3907 + "rand 0.9.4",
3908 + "rand_distr 0.5.1",
3909 + "rand_isaac",
3910 + "rayon",
3911 + "regex",
3912 + "regex-automata",
3913 + "reqwest 0.13.3",
3914 + "rubato",
3915 + "rust-mcp-schema",
3916 + "rustc-hash 2.1.2",
3917 + "rustfft",
3918 + "safetensors 0.7.0",
3919 + "schemars 1.2.1",
3920 + "scraper",
3921 + "serde",
3922 + "serde-big-array",
3923 + "serde-saphyr",
3924 + "serde_json",
3925 + "serde_plain",
3926 + "statrs",
3927 + "strum 0.27.2",
3928 + "symphonia",
3929 + "sysinfo",
3930 + "thiserror 2.0.18",
3931 + "tokenizers 0.21.4",
3932 + "tokio",
3933 + "tokio-rayon",
3934 + "tokio-tungstenite",
3935 + "toktrie",
3936 + "toktrie_hf_tokenizers",
3937 + "toml",
3938 + "tracing",
3939 + "tracing-subscriber",
3940 + "urlencoding",
3941 + "uuid 1.23.1",
3942 + "variantly",
3943 + "vob",
3944 +]
3945 +
3946 +[[package]]
3947 +name = "onde-mistralrs-macros"
3948 +version = "0.8.2"
3949 +source = "registry+https://github.com/rust-lang/crates.io-index"
3950 +checksum = "ed7a88fcf59377469c00a355065f3ad9723e00c1870c8b3717b0649f86c77bde"
3951 +dependencies = [
3952 + "darling 0.23.0",
3953 + "proc-macro2",
3954 + "quote",
3955 + "syn 2.0.117",
3956 +]
3957 +
3958 +[[package]]
3959 +name = "onde-mistralrs-mcp"
3960 +version = "0.8.2"
3961 +source = "registry+https://github.com/rust-lang/crates.io-index"
3962 +checksum = "f708829672943371b2a14cceaa8c09182d11c9049ec6d3a9c303a74ae65dfc1f"
3963 +dependencies = [
3964 + "anyhow",
3965 + "async-trait",
3966 + "futures-util",
3967 + "http",
3968 + "reqwest 0.13.3",
3969 + "rust-mcp-schema",
3970 + "serde",
3971 + "serde_json",
3972 + "tokio",
3973 + "tokio-tungstenite",
3974 + "tracing",
3975 + "utoipa",
3976 + "uuid 1.23.1",
3977 +]
3978 +
3979 +[[package]]
3980 +name = "onde-mistralrs-paged-attn"
3981 +version = "0.8.2"
3982 +source = "registry+https://github.com/rust-lang/crates.io-index"
3983 +checksum = "bdd14bcbee553325d640609504117a2a49db166417bd7883329c6d39971b28c2"
3984 +dependencies = [
3985 + "anyhow",
3986 + "candle-core",
3987 + "candle-metal-kernels",
3988 + "dispatch2",
3989 + "float8",
3990 + "half",
3991 + "objc2-foundation",
3992 + "objc2-metal",
3993 + "thiserror 2.0.18",
3994 +]
3995 +
3996 +[[package]]
3997 +name = "onde-mistralrs-quant"
3998 +version = "0.8.2"
3999 +source = "registry+https://github.com/rust-lang/crates.io-index"
4000 +checksum = "36928bb1eec1138ca7b36ee1f4d370e4e374f0874f378915ff0ff34f927c4daf"
4001 +dependencies = [
4002 + "byteorder",
4003 + "candle-core",
4004 + "candle-metal-kernels",
4005 + "candle-nn",
4006 + "dispatch2",
4007 + "float8",
4008 + "half",
4009 + "hf-hub",
4010 + "lazy_static",
4011 + "memmap2",
4012 + "objc2-foundation",
4013 + "objc2-metal",
4014 + "paste",
4015 + "rayon",
4016 + "regex",
4017 + "safetensors 0.7.0",
4018 + "serde",
4019 + "serde_json",
4020 + "thiserror 2.0.18",
4021 + "tokio",
4022 + "tracing",
4023 + "yoke 0.8.2",
4024 +]
4025 +
4026 +[[package]]
4027 +name = "onde-mistralrs-vision"
4028 +version = "0.8.2"
4029 +source = "registry+https://github.com/rust-lang/crates.io-index"
4030 +checksum = "2670a611890bfddc7964902f253626cd2b3fd0b7df13f84a779180f35e2a79e9"
4031 +dependencies = [
4032 + "candle-core",
4033 + "image",
4034 + "rayon",
4035 +]
4036 +
4037 +[[package]]
4038 +name = "onde-openai-harmony"
4039 +version = "0.0.9"
4040 +source = "registry+https://github.com/rust-lang/crates.io-index"
4041 +checksum = "f0f73e12b7378937cb8aaf832bed02b2afa1687581f73c3298c5af0cca9df5e6"
4042 +dependencies = [
4043 + "anyhow",
4044 + "base64 0.22.1",
4045 + "bstr",
4046 + "clap 4.6.1",
4047 + "fancy-regex 0.13.0",
4048 + "futures",
4049 + "regex",
4050 + "reqwest 0.12.28",
4051 + "rustc-hash 1.1.0",
4052 + "serde",
4053 + "serde_json",
4054 + "serde_with",
4055 + "sha1",
4056 + "sha2",
4057 + "thiserror 2.0.18",
4058 +]
4059 +
4060 +[[package]]
4061 +name = "onde-tqdm"
4062 +version = "0.8.2"
4063 +source = "registry+https://github.com/rust-lang/crates.io-index"
4064 +checksum = "2d96f4fcb4af06959bf9c9b81ace0502e2be2d11d7e037c94f3f7851bde720ea"
4065 +dependencies = [
4066 + "anyhow",
4067 + "crossterm 0.29.0",
4068 + "once_cell",
4069 +]
4070 +
4071 [[package]]
4072 name = "onig"
3825 -version = "6.5.1"
4073 +version = "6.5.3"
4074 source = "registry+https://github.com/rust-lang/crates.io-index"
3827 -checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0"
4075 +checksum = "0cc3cbf698f9438986c11a880c90a6d04b9de27575afd28bbf45b154b6c709e2"
4076 dependencies = [
4077 "bitflags 2.11.1",
4078 "libc",
@@ -3834,9 +4082,9 @@ dependencies = [
4082
4083 [[package]]
4084 name = "onig_sys"
3837 -version = "69.9.1"
4085 +version = "69.9.3"
4086 source = "registry+https://github.com/rust-lang/crates.io-index"
3839 -checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc"
4087 +checksum = "1e68317604e77e53b85896388e1a803c1d21b74c899ec9e5e1112db90735edd7"
4088 dependencies = [
4089 "cc",
4090 "pkg-config",
@@ -4639,9 +4887,9 @@ dependencies = [
4887
4888 [[package]]
4889 name = "reqwest"
4642 -version = "0.13.2"
4890 +version = "0.13.3"
4891 source = "registry+https://github.com/rust-lang/crates.io-index"
4644 -checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"
4892 +checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0"
4893 dependencies = [
4894 "base64 0.22.1",
4895 "bytes",
@@ -4834,9 +5082,9 @@ dependencies = [
5082
5083 [[package]]
5084 name = "rustls-platform-verifier"
4837 -version = "0.6.2"
5085 +version = "0.7.0"
5086 source = "registry+https://github.com/rust-lang/crates.io-index"
4839 -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"
5087 +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0"
5088 dependencies = [
5089 "core-foundation 0.10.1",
5090 "core-foundation-sys",
@@ -5336,6 +5584,16 @@ version = "0.3.9"
5584 source = "registry+https://github.com/rust-lang/crates.io-index"
5585 checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
5586
5587 +[[package]]
5588 +name = "simd_cesu8"
5589 +version = "1.1.1"
5590 +source = "registry+https://github.com/rust-lang/crates.io-index"
5591 +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"
5592 +dependencies = [
5593 + "rustc_version",
5594 + "simdutf8",
5595 +]
5596 +
5597 [[package]]
5598 name = "simd_helpers"
5599 version = "0.1.0"
@@ -5345,6 +5603,12 @@ dependencies = [
5603 "quote",
5604 ]
5605
5606 +[[package]]
5607 +name = "simdutf8"
5608 +version = "0.1.5"
5609 +source = "registry+https://github.com/rust-lang/crates.io-index"
5610 +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
5611 +
5612 [[package]]
5613 name = "siphasher"
5614 version = "1.0.2"
@@ -7349,15 +7613,6 @@ dependencies = [
7613 "windows-link 0.2.1",
7614 ]
7615
7352 -[[package]]
7353 -name = "windows-sys"
7354 -version = "0.45.0"
7355 -source = "registry+https://github.com/rust-lang/crates.io-index"
7356 -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
7357 -dependencies = [
7358 - "windows-targets 0.42.2",
7359 -]
7360 -
7616 [[package]]
7617 name = "windows-sys"
7618 version = "0.48.0"
@@ -7403,21 +7658,6 @@ dependencies = [
7658 "windows-link 0.2.1",
7659 ]
7660
7406 -[[package]]
7407 -name = "windows-targets"
7408 -version = "0.42.2"
7409 -source = "registry+https://github.com/rust-lang/crates.io-index"
7410 -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
7411 -dependencies = [
7412 - "windows_aarch64_gnullvm 0.42.2",
7413 - "windows_aarch64_msvc 0.42.2",
7414 - "windows_i686_gnu 0.42.2",
7415 - "windows_i686_msvc 0.42.2",
7416 - "windows_x86_64_gnu 0.42.2",
7417 - "windows_x86_64_gnullvm 0.42.2",
7418 - "windows_x86_64_msvc 0.42.2",
7419 -]
7420 -
7661 [[package]]
7662 name = "windows-targets"
7663 version = "0.48.5"
@@ -7475,12 +7715,6 @@ dependencies = [
7715 "windows-link 0.1.3",
7716 ]
7717
7478 -[[package]]
7479 -name = "windows_aarch64_gnullvm"
7480 -version = "0.42.2"
7481 -source = "registry+https://github.com/rust-lang/crates.io-index"
7482 -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
7483 -
7718 [[package]]
7719 name = "windows_aarch64_gnullvm"
7720 version = "0.48.5"
@@ -7499,12 +7733,6 @@ version = "0.53.1"
7733 source = "registry+https://github.com/rust-lang/crates.io-index"
7734 checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
7735
7502 -[[package]]
7503 -name = "windows_aarch64_msvc"
7504 -version = "0.42.2"
7505 -source = "registry+https://github.com/rust-lang/crates.io-index"
7506 -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
7507 -
7736 [[package]]
7737 name = "windows_aarch64_msvc"
7738 version = "0.48.5"
@@ -7523,12 +7751,6 @@ version = "0.53.1"
7751 source = "registry+https://github.com/rust-lang/crates.io-index"
7752 checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
7753
7526 -[[package]]
7527 -name = "windows_i686_gnu"
7528 -version = "0.42.2"
7529 -source = "registry+https://github.com/rust-lang/crates.io-index"
7530 -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
7531 -
7754 [[package]]
7755 name = "windows_i686_gnu"
7756 version = "0.48.5"
@@ -7559,12 +7781,6 @@ version = "0.53.1"
7781 source = "registry+https://github.com/rust-lang/crates.io-index"
7782 checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
7783
7562 -[[package]]
7563 -name = "windows_i686_msvc"
7564 -version = "0.42.2"
7565 -source = "registry+https://github.com/rust-lang/crates.io-index"
7566 -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
7567 -
7784 [[package]]
7785 name = "windows_i686_msvc"
7786 version = "0.48.5"
@@ -7583,12 +7799,6 @@ version = "0.53.1"
7799 source = "registry+https://github.com/rust-lang/crates.io-index"
7800 checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
7801
7586 -[[package]]
7587 -name = "windows_x86_64_gnu"
7588 -version = "0.42.2"
7589 -source = "registry+https://github.com/rust-lang/crates.io-index"
7590 -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
7591 -
7802 [[package]]
7803 name = "windows_x86_64_gnu"
7804 version = "0.48.5"
@@ -7607,12 +7817,6 @@ version = "0.53.1"
7817 source = "registry+https://github.com/rust-lang/crates.io-index"
7818 checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
7819
7610 -[[package]]
7611 -name = "windows_x86_64_gnullvm"
7612 -version = "0.42.2"
7613 -source = "registry+https://github.com/rust-lang/crates.io-index"
7614 -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
7615 -
7820 [[package]]
7821 name = "windows_x86_64_gnullvm"
7822 version = "0.48.5"
@@ -7631,12 +7835,6 @@ version = "0.53.1"
7835 source = "registry+https://github.com/rust-lang/crates.io-index"
7836 checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
7837
7634 -[[package]]
7635 -name = "windows_x86_64_msvc"
7636 -version = "0.42.2"
7637 -source = "registry+https://github.com/rust-lang/crates.io-index"
7638 -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
7639 -
7838 [[package]]
7839 name = "windows_x86_64_msvc"
7840 version = "0.48.5"
README.md
+24 -24
@@ -22,7 +22,7 @@
22
23 ---
24
25 -Manage your Onde Inference account, fine-tune local models, and export them to GGUF — all from the terminal.
25 +Manage your Onde Inference account, fine-tune local models, and export them to GGUF, all from the terminal.
26
27 ## Install
28
@@ -49,7 +49,7 @@ uv tool install onde-cli
49
50 ### Pre-built binary
51
52 -Download from [GitHub Releases](https://github.com/ondeinference/onde-cli/releases):
52 +Download a release from [GitHub Releases](https://github.com/ondeinference/onde-cli/releases):
53
54 ```sh
55 # macOS Apple Silicon
@@ -89,33 +89,33 @@ cargo build --release
89 onde
90 ```
91
92 -Opens a TUI. Sign up or sign in from there.
92 +This opens the TUI. You can sign up or sign in right there.
93
94 | Key | What it does |
95 |---|---|
96 -| `Tab` | move between fields |
97 -| `Enter` | submit / sign out |
98 -| `Ctrl+L` | sign in screen |
99 -| `Ctrl+N` | new account screen |
100 -| `Ctrl+C` | quit |
96 +| `Tab` | Move between fields |
97 +| `Enter` | Submit or sign out |
98 +| `Ctrl+L` | Go to the sign-in screen |
99 +| `Ctrl+N` | Go to the new account screen |
100 +| `Ctrl+C` | Quit |
101
102 ---
103
104 ## Fine-tuning
105
106 -onde includes a LoRA fine-tuning pipeline for Qwen2, Qwen2.5, and Qwen3 models. Runs on Metal on Apple Silicon, CPU elsewhere. No cloud, no Python.
106 +`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.
107
108 -The full pipeline: download a safetensors base model → fine-tune with LoRA → merge the adapter into the base weights → export to GGUF → load in the Onde SDK.
108 +The 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.
109
110 ### Training data format
111
112 -Each line is a complete conversation in Qwen's chat template:
112 +Each line should be one complete conversation in Qwen's chat template:
113
114 ```jsonl
115 {"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|>"}
116 ```
117
118 -Save it anywhere — the TUI lets you point to the file path.
118 +Save the file wherever you want. The TUI lets you point to it directly.
119
120 ### Running it
121
@@ -126,25 +126,25 @@ onde
126 → Press f
127 ```
128
129 -Only safetensors models can be fine-tuned. GGUF models can't — they're quantized and the weights aren't differentiable.
129 +Only safetensors models can be fine-tuned. GGUF models are already quantized, so their weights are not differentiable.
130
131 Configure the run:
132
133 | Field | Default | Notes |
134 |---|---|---|
135 | Training data | `~/.onde/finetune/train.jsonl` | Path to your JSONL file |
136 -| LoRA rank | `8` | Higher = more capacity, more memory |
136 +| LoRA rank | `8` | Higher means more capacity and more memory use |
137 | Epochs | `3` | Full passes over the dataset |
138 | Learning rate | `0.0001` | AdamW default |
139
140 -Press `Enter` to start. Loss should drop by epoch 2. If it doesn't, try bumping the learning rate to `0.0003`.
140 +Press `Enter` to start. In a healthy run, loss usually starts dropping by epoch 2. If it stays flat, try `0.0003`.
141
142 ### After training
143
144 -The adapter is ~1.5 MB for rank 8 on a 0.6B model. From the fine-tune done screen:
144 +For rank 8 on a 0.6B model, the adapter is about 1.5 MB. From the fine-tune complete screen:
145
146 -- `m` — merge adapter into the base model
147 -- `g` — export merged model to GGUF
146 +- `m` to merge the adapter into the base model
147 +- `g` to export the merged model to GGUF
148
149 The resulting GGUF loads directly in the Onde SDK for on-device inference.
150
@@ -152,18 +152,18 @@ The resulting GGUF loads directly in the Onde SDK for on-device inference.
152
153 | Model | Size | Notes |
154 |---|---|---|
155 -| `Qwen/Qwen3-0.6B` | ~1.2 GB | Smallest, fastest to train |
156 -| `Qwen/Qwen2.5-1.5B-Instruct` | ~3.0 GB | Good for instruction tuning |
157 -| `Qwen/Qwen3-1.7B` | ~3.4 GB | Latest small Qwen3 |
158 -| `Qwen/Qwen3-4B` | ~8.0 GB | Best quality, macOS recommended |
155 +| `Qwen/Qwen3-0.6B` | ~1.2 GB | Smallest and quickest to train |
156 +| `Qwen/Qwen2.5-1.5B-Instruct` | ~3.0 GB | Good default for instruction tuning |
157 +| `Qwen/Qwen3-1.7B` | ~3.4 GB | Newer small Qwen3 model |
158 +| `Qwen/Qwen3-4B` | ~8.0 GB | Best quality, better suited to macOS |
159
160 -Search for any of these by pressing `/` on the Models tab.
160 +You can search for any of these from the Models tab with `/`.
161
162 ---
163
164 ## Debug
165
166 -Logs go to `~/.cache/onde/debug.log`.
166 +Logs are written to `~/.cache/onde/debug.log`.
167
168 ---
169
npm/README.md.tmpl
+12 -7
@@ -1,23 +1,28 @@
1 <p align="center">
2 - <img src="https://avatars.githubusercontent.com/u/218425892?s=200&v=4" alt="Onde Inference" width="96">
2 + <img src="https://raw.githubusercontent.com/ondeinference/onde/main/assets/onde-inference-logo.svg" alt="Onde Inference" width="96">
3 </p>
4
5 -<h1 align="center">Onde CLI</h1>
5 +<h1 align="center">${node_pkg}</h1>
6
7 -## `${node_pkg}`
7 +This package is one of the platform-specific binaries behind [`@ondeinference/cli`](https://www.npmjs.com/package/@ondeinference/cli).
8
9 -This is a platform-specific binary for [`@ondeinference/cli`](https://www.npmjs.com/package/@ondeinference/cli). You don't need to install it directly.
10 -
11 -Install the main package instead:
9 +You usually should not install it directly. Install the main package instead:
10
11 ```sh
12 npm install -g @ondeinference/cli
13 ```
14
17 -npm pulls in the right binary for your OS and architecture.
15 +npm will pick the right binary for your OS and CPU automatically.
16 +
17 +## What this package is for
18 +
19 +`@ondeinference/cli` ships native binaries for different platforms. This package is one of those binaries. It exists so the main npm package can install the correct executable on macOS, Linux, or Windows without making you think about it.
20 +
21 +If you landed here from npm search results, the package you probably want is [`@ondeinference/cli`](https://www.npmjs.com/package/@ondeinference/cli).
22
23 ## Links
24
25 +- [Main npm package](https://www.npmjs.com/package/@ondeinference/cli)
26 - [Source code](https://github.com/ondeinference/onde-cli)
27 - [Issues](https://github.com/ondeinference/onde-cli/issues)
28 - [Website](https://ondeinference.com)
npm/onde-cli/README.md
+53 -24
@@ -5,7 +5,7 @@
5 <h1 align="center">@ondeinference/cli</h1>
6
7 <p align="center">
8 - Manage your Onde Inference account and fine-tune models from the terminal.
8 + A terminal app for your Onde Inference account, plus local model fine-tuning.
9 </p>
10
11 <p align="center">
@@ -23,40 +23,64 @@
23 npm install -g @ondeinference/cli
24 ```
25
26 -The right binary for your platform gets pulled in automatically. Works on macOS (Apple Silicon and Intel), Linux (x64 and arm64), and Windows (x64 and arm64).
26 +npm installs the right native binary for your platform automatically.
27 +
28 +It works on:
29 +
30 +- macOS (Apple Silicon and Intel)
31 +- Linux (x64 and arm64)
32 +- Windows (x64 and arm64)
33
34 ### Other ways to install
35
36 | Method | Command |
37 |---|---|
32 -| **Homebrew** | `brew install ondeinference/homebrew-tap/onde` |
33 -| **pip** | `pip install onde-cli` |
34 -| **uv** | `uv tool install onde-cli` |
35 -| **Cargo** | `cargo install onde-cli` |
38 +| Homebrew | `brew install ondeinference/homebrew-tap/onde` |
39 +| pip | `pip install onde-cli` |
40 +| uv | `uv tool install onde-cli` |
41 +| Cargo | `cargo install onde-cli` |
42
43 ---
44
39 -## Usage
45 +## Run it
46
47 ```sh
48 onde
49 ```
50
45 -Opens a TUI. Sign up or sign in from there, no browser needed.
51 +That opens the terminal UI.
52 +
53 +From there you can:
54 +
55 +- sign up or sign in
56 +- create and manage apps
57 +- assign models
58 +- fine-tune supported local models
59 +- export merged models to GGUF
60 +
61 +No browser needed.
62
47 -| Key | What it does |
63 +## Basic keys
64 +
65 +| Key | Action |
66 |---|---|
67 | `Tab` | Move between fields |
50 -| `Enter` | Submit / confirm |
51 -| `Ctrl+L` | Sign in screen |
52 -| `Ctrl+N` | New account screen |
68 +| `Enter` | Submit or confirm |
69 +| `Ctrl+L` | Go to sign in |
70 +| `Ctrl+N` | Go to create account |
71 | `Ctrl+C` | Quit |
72
73 ---
74
75 ## Fine-tuning
76
59 -`onde` includes LoRA fine-tuning for Qwen2, Qwen2.5, and Qwen3 safetensors models. It runs on Metal (Apple Silicon) or CPU — no cloud, no Python.
77 +`onde` can fine-tune Qwen2, Qwen2.5, and Qwen3 safetensors models with LoRA.
78 +
79 +Training runs locally:
80 +- Metal on Apple Silicon
81 +- CPU on other platforms
82 +
83 +So yes, no cloud training setup and no Python environment to babysit.
84
85 ### Supported base models
86
@@ -67,11 +91,11 @@ Opens a TUI. Sign up or sign in from there, no browser needed.
91 | `Qwen/Qwen3-1.7B` | ~3.4 GB |
92 | `Qwen/Qwen3-4B` | ~8.0 GB |
93
70 -Only safetensors models can be fine-tuned. GGUF models are quantized — their weights aren't differentiable.
94 +Only safetensors models can be fine-tuned. GGUF models are already quantized, so their weights are not differentiable.
95
96 ### Training data
97
74 -One JSON object per line, each with a `text` field containing the full conversation in the Qwen chat template:
98 +Use one JSON object per line. Each object needs a `text` field containing the full conversation in Qwen's chat template.
99
100 ```jsonl
101 {"text": "<|im_start|>user\nWhat is the boiling point of water?<|im_end|>\n<|im_start|>assistant\n100°C at sea level.<|im_end|>"}
@@ -79,35 +103,40 @@ One JSON object per line, each with a `text` field containing the full conversat
103
104 ### Running a fine-tune
105
82 -1. Go to the Models tab.
83 -2. Select a safetensors model with `↑` / `↓`.
106 +1. Open the Models tab.
107 +2. Pick a safetensors model with `↑` / `↓`.
108 3. Press `f` to open the fine-tune config.
85 -4. Set your data path, LoRA rank (default 8), epochs (default 3), and learning rate (default 0.0001).
109 +4. Set your data path, LoRA rank (default `8`), epochs (default `3`), and learning rate (default `0.0001`).
110 5. Start training.
111
88 -The adapter for a rank-8 run on the 0.6B model is about 1.5 MB.
112 +A rank-8 adapter for the 0.6B model is about 1.5 MB, so the output stays pretty small.
113
114 ### After training
115
92 -Press `m` to merge the adapter into the base weights. Press `g` to export to GGUF. The output file loads directly in the [Onde SDK](https://ondeinference.com) for on-device inference.
116 +- Press `m` to merge the adapter into the base weights.
117 +- Press `g` to export the merged model to GGUF.
118 +
119 +The exported file loads directly in the [Onde SDK](https://ondeinference.com) for on-device inference.
120
121 ---
122
96 -## What's Onde?
123 +## What is Onde?
124 +
125 +[Onde Inference](https://ondeinference.com) is for running LLMs on the user's device. No server round-trips, no sending prompts off to somebody else's machine.
126
98 -[Onde Inference](https://ondeinference.com) runs LLMs on the user's device. No server round-trips, no data leaving the hardware. It ships as a native SDK for each platform:
127 +It ships as native SDKs for:
128
129 <p align="center">
130 <a href="https://github.com/ondeinference/onde-swift">Swift</a>&ensp;·&ensp;<a href="https://pub.dev/packages/onde_inference">Flutter</a>&ensp;·&ensp;<a href="https://www.npmjs.com/package/@ondeinference/react-native">React Native</a>&ensp;·&ensp;<a href="https://crates.io/crates/onde">Rust</a>
131 </p>
132
104 -This CLI handles account management and local fine-tuning. The SDKs handle inference.
133 +The CLI is for account management and local fine-tuning. The SDKs are what you ship in your app.
134
135 ---
136
137 ## Debug
138
110 -Logs go to `~/.cache/onde/debug.log`.
139 +Logs are written to `~/.cache/onde/debug.log`.
140
141 ## License
142
pypi/README.md
+97 -65
@@ -5,8 +5,8 @@
5 <h1 align="center">onde</h1>
6
7 <p align="center">
8 - <strong>Manage your <a href="https://ondeinference.com">Onde Inference</a> apps from the terminal.</strong><br>
9 - Sign up, sign in, assign models — no browser required.
8 + <strong>A terminal app for managing Onde Inference 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">
@@ -20,7 +20,7 @@
20 <br>
21
22 <p align="center">
23 - <img src="https://raw.githubusercontent.com/ondeinference/onde-cli/main/assets/screenshot.png" alt="onde CLI — apps list with model assignments" width="720">
23 + <img src="https://raw.githubusercontent.com/ondeinference/onde-cli/main/assets/screenshot.png" alt="onde CLI app list and model assignments" width="720">
24 </p>
25
26 <br>
@@ -33,110 +33,138 @@
33 pip install onde-cli
34 ```
35
36 -Installs the native `onde` binary for your platform — no compiler, no Node.js, no runtime dependencies.
36 +That installs the native `onde` binary for your platform. No compiler setup, no Node.js, no extra runtime to babysit.
37
38 -## Quick start
38 +## What you get
39 +
40 +Run:
41
42 ```sh
43 onde
44 ```
45
44 -A full terminal UI opens. Create an account or sign in, then manage your apps and model assignments without leaving the terminal.
46 +and you'll get a full terminal UI where you can:
47 +
48 +- sign up or sign in
49 +- create and rename apps
50 +- assign models to apps
51 +- fine-tune supported Qwen models locally
52 +- merge adapters and export GGUF files
53 +
54 +If you prefer doing this work in a terminal instead of a browser, that's the whole point.
55
46 -## Keys
56 +## Keyboard shortcuts
57
58 ### Auth screen
59
50 -| Key | Action |
51 -|-----------|---------------------------|
52 -| `Tab` | Move between fields |
53 -| `Enter` | Submit form |
54 -| `Ctrl+L` | Switch to Sign in |
55 -| `Ctrl+N` | Switch to Create account |
56 -| `Ctrl+C` | Quit |
60 +| Key | Action |
61 +|---|---|
62 +| `Tab` | Move between fields |
63 +| `Enter` | Submit |
64 +| `Ctrl+L` | Switch to sign in |
65 +| `Ctrl+N` | Switch to create account |
66 +| `Ctrl+C` | Quit |
67
68 ### Apps list
69
60 -| Key | Action |
61 -|-----------|---------------------------|
62 -| `↑` `↓` | Navigate apps |
63 -| `Enter` | Open app detail |
64 -| `n` | Create new app |
65 -| `s` | Sign out |
66 -| `Ctrl+C` | Quit |
70 +| Key | Action |
71 +|---|---|
72 +| `↑` `↓` | Move through apps |
73 +| `Enter` | Open app details |
74 +| `n` | Create a new app |
75 +| `s` | Sign out |
76 +| `Ctrl+C` | Quit |
77
78 ### App detail
79
70 -| Key | Action |
71 -|-----------|---------------------------|
72 -| `m` | Assign / change model |
73 -| `r` | Rename app |
74 -| `s` | Sign out |
75 -| `Esc` | Back to apps list |
80 +| Key | Action |
81 +|---|---|
82 +| `m` | Assign or change model |
83 +| `r` | Rename app |
84 +| `s` | Sign out |
85 +| `Esc` | Back to apps list |
86
87 ### Model picker
88
79 -| Key | Action |
80 -|-----------|---------------------------|
81 -| `↑` `↓` | Navigate models |
82 -| `Enter` | Assign selected model |
83 -| `Esc` | Cancel |
89 +| Key | Action |
90 +|---|---|
91 +| `↑` `↓` | Move through models |
92 +| `Enter` | Assign selected model |
93 +| `Esc` | Cancel |
94
95 ### Fine-tuning
96
87 -| Key | Action |
88 -|-----------|-----------------------------------------|
89 -| `↑` `↓` | Navigate models |
90 -| `f` | Open fine-tune config for selected model |
91 -| `m` | Merge adapter into base model |
92 -| `g` | Export merged model to GGUF |
97 +| Key | Action |
98 +|---|---|
99 +| `↑` `↓` | Move through models |
100 +| `f` | Open fine-tune config for the selected model |
101 +| `m` | Merge adapter into base model |
102 +| `g` | Export merged model to GGUF |
103
104 ## Fine-tuning
105
96 -`onde` includes LoRA fine-tuning for Qwen2, Qwen2.5, and Qwen3 safetensors models. Training runs locally on Metal (Apple Silicon) or CPU — no cloud account, no Python environment.
106 +`onde` can fine-tune Qwen2, Qwen2.5, and Qwen3 safetensors models with LoRA.
107 +
108 +Training runs locally:
109 +- on Metal for Apple Silicon
110 +- on CPU everywhere else
111 +
112 +No cloud training job. No Python environment. No notebook setup spiral.
113
114 ### Supported base models
115
116 | Model | Size |
101 -|-------|------|
117 +|---|---|
118 | `Qwen/Qwen3-0.6B` | ~1.2 GB |
119 | `Qwen/Qwen2.5-1.5B-Instruct` | ~3.0 GB |
120 | `Qwen/Qwen3-1.7B` | ~3.4 GB |
121 | `Qwen/Qwen3-4B` | ~8.0 GB |
122
107 -Only safetensors models can be fine-tuned. GGUF models are quantized and their weights aren't differentiable, so they don't work here.
123 +Only safetensors models can be fine-tuned. GGUF models are already quantized, so this pipeline doesn't use them as training inputs.
124
125 ### Training data format
126
111 -One JSON object per line, each with a `text` field containing the full conversation formatted in the Qwen chat template:
127 +Use one JSON object per line. Each object needs a `text` field containing the full conversation in Qwen's chat template.
128
129 ```jsonl
130 {"text": "<|im_start|>user\nWhat is the boiling point of water?<|im_end|>\n<|im_start|>assistant\n100°C at sea level.<|im_end|>"}
115 -{"text": "<|im_start|>user\nWhat about at high altitude?<|im_end|>\n<|im_start|>assistant\nLower — around 90°C at 3000 m.<|im_end|>"}
131 +{"text": "<|im_start|>user\nWhat about at high altitude?<|im_end|>\n<|im_start|>assistant\nLower, around 90°C at 3000 m.<|im_end|>"}
132 ```
133
134 ### Running a fine-tune
135
120 -1. Go to the Models tab.
121 -2. Select a safetensors model with `↑` / `↓`.
122 -3. Press `f` to open the fine-tune config.
123 -4. Set your data path, LoRA rank (default 8), epochs (default 3), and learning rate (default 0.0001).
124 -5. Start training. The adapter for a rank-8 run on the 0.6B model is about 1.5 MB.
136 +1. Open the Models tab.
137 +2. Pick a safetensors model with `↑` / `↓`.
138 +3. Press `f`.
139 +4. Set your training data path, LoRA rank, epochs, and learning rate.
140 +5. Start training.
141 +
142 +Default values:
143 +- LoRA rank: `8`
144 +- Epochs: `3`
145 +- Learning rate: `0.0001`
146 +
147 +As a rough reference, a rank-8 adapter for the 0.6B model is about 1.5 MB.
148
149 ### After training
150
128 -Press `m` to merge the LoRA adapter into the base weights, then `g` to export the result to GGUF. The output file loads directly in the [Onde SDK](https://ondeinference.com) for on-device inference.
151 +Once the run finishes:
152 +
153 +- press `m` to merge the adapter into the base weights
154 +- press `g` to export the merged model to GGUF
155 +
156 +The exported file loads directly in the [Onde SDK](https://ondeinference.com) for on-device inference.
157
130 -## Other installation methods
158 +## Other ways to install
159
160 | Method | Command |
133 -|--------|---------|
161 +|---|---|
162 | npm | `npm install -g @ondeinference/cli` |
163 | Homebrew | `brew install ondeinference/homebrew-tap/onde` |
164 | uv | `uv tool install onde-cli` |
165 | Cargo | `cargo install onde-cli` |
166
139 -### From source
167 +### Build from source
168
169 ```sh
170 git clone https://github.com/ondeinference/onde-cli
@@ -147,32 +175,36 @@ cargo build --release
175
176 ## Platform support
177
150 -Pre-built native binaries ship for every major platform:
178 +Prebuilt native binaries are available for:
179
152 -| Platform | Architecture |
153 -|---------------|--------------|
154 -| macOS | arm64, x64 |
155 -| Linux (glibc) | arm64, x64 |
156 -| Windows | arm64, x64 |
180 +| Platform | Architecture |
181 +|---|---|
182 +| macOS | arm64, x64 |
183 +| Linux (glibc) | arm64, x64 |
184 +| Windows | arm64, x64 |
185
186 ## Debug logs
187
160 -Logs are written to `~/.cache/onde/debug.log`. Nothing touches the terminal output — ratatui owns the screen exclusively while the TUI is open.
188 +Logs are written to `~/.cache/onde/debug.log`.
189
162 -## Related
190 +The app uses the terminal screen directly while the TUI is open, so logs go to the file instead of printing over the interface.
191 +
192 +## Related SDKs
193
194 | SDK | Install |
165 -|-----|---------|
195 +|---|---|
196 | [Swift SDK](https://github.com/ondeinference/onde-swift) | Swift Package Manager |
197 | [Flutter SDK](https://pub.dev/packages/onde_inference) | `flutter pub add onde_inference` |
198 | [React Native SDK](https://www.npmjs.com/package/@ondeinference/react-native) | `npm i @ondeinference/react-native` |
199 | [Rust crate](https://crates.io/crates/onde) | `cargo add onde` |
200
171 -## Source & issues
201 +## Source and issues
202 +
203 +This package ships a prebuilt native binary. The source code lives here:
204 +
205 +[github.com/ondeinference/onde-cli](https://github.com/ondeinference/onde-cli)
206
173 -This package ships a pre-built native binary. Source lives at
174 -[github.com/ondeinference/onde-cli](https://github.com/ondeinference/onde-cli) —
175 -file bugs and feature requests there.
207 +Bug reports and feature requests should go there too.
208
209 ## License
210