What happened
Environment
- FreeToken Desktop Beta 22 (AppImage, beta channel), Linux x86_64 (CachyOS)
- Engine wheels: freetoken-0.1.3+gcc1f5c2c9, freetoken_kernel_cache-0.1.3+cu130.gcc1f5c2c9
- Private uv: 0.12.16
- GPU: RTX 3060, CUDA 13 driver
Summary
Updating to Beta 22 runs the bundled engine/install.sh. The install fails, and because the script starts with uv venv --clear, the previous working engine is already gone, so the app has no engine at all. This happened on an earlier beta update too. There are two separate bugs, plus the non-atomic install.
- sglang-kernel==0.4.5+cu130 hash mismatch
error: Failed to download sglang-kernel==0.4.5+cu130
cause: Hash mismatch for sglang-kernel==0.4.5+cu130
Expected: sha256:44cccc106239ab6f361e823e33885e5355c6776646c1c5c222bc5eb409d33c35
Computed: sha256:f482a5fdf287d85cfc9434eaa0faff757d6fee31272f1c3e4408bd79aef189b5
hint: sglang-kernel (v0.4.5+cu130) was included because freetoken[accel] (v0.1.3+gcc1f5c2c9) depends on sglang-kernel
Cause: https://docs.sglang.io/whl/cu130/sglang-kernel/ lists the same file twice, with the same URL but different hashes:
https://github.com/sgl-project/whl/releases/download/v0.4.5/sglang_kernel-0.4.5+cu130-cp310-abi3-manylinux2014_x86_64.whl#sha256=44cccc10... (stale)
https://github.com/sgl-project/whl/releases/download/v0.4.5/sglang_kernel-0.4.5+cu130-cp310-abi3-manylinux2014_x86_64.whl#sha256=f482a5fd... (actual file)
The file at that URL currently hashes to f482a5fd…. uv takes the first (stale) entry, so every install fails. PyPI has no 0.4.5+cu130 x86_64 file to fall back on. This probably needs reporting to sgl-project as well, but the installer could avoid it (see suggested fixes).
- flashinfer-cubin / flashinfer-jit-cache not pinned
install.sh installs flashinfer-cubin and flashinfer-jit-cache without version pins. uv resolves them to 0.7.0, but freetoken[accel] pulls in flashinfer-python==0.6.18.post1, so importing sgl_kernel/flashinfer fails:
RuntimeError: flashinfer-cubin version (0.7.0) does not match flashinfer version (0.6.18.post1).
Please install the same version of both packages.
flashinfer-jit-cache 0.7.0 also pulls in flashinfer-jit-cache-sm80/sm89/sm90a/sm100a/sm103a/sm120f==0.7.0, which are left behind after downgrading.
- Install isn't atomic
uv venv "$VENV" --clear runs before any download, so any network, index or resolution failure destroys a working engine.
Workaround I used
- Downloaded the sglang-kernel wheel directly, confirmed sha256 = f482a5fd…, and added the local file path to the uv pip install command.
- Pinned flashinfer-cubin==0.6.18.post1 and flashinfer-jit-cache==0.6.18.post1, then uninstalled the orphaned flashinfer-jit-cache-sm* 0.7.0 packages.
After that, ft --help works and import torch, sgl_kernel, flashinfer, freetoken succeeds on CUDA.
Suggested fixes
- Pin flashinfer-cubin and flashinfer-jit-cache to the same version as flashinfer-python (in install.sh or as accel extra dependencies).
- For sglang-kernel, depend on a direct URL with the correct hash (or bump to a version without a duplicate listing), and report the duplicate entry to sgl-project.
- Build the new engine in a temp venv (e.g. $FT_HOME/venv.new) and swap it in only after ft --help passes, so a failed update keeps the old engine working.
Desktop app version
V0.2.0-beta 19
OS
Arch Linux
OS details
CachyOS
GPU and driver
GPU: RTX 3060, CUDA 13 driver
CPU and system RAM
Ryzen 3700x
Checkpoint
Ornith-1.5-35B-A3B-NVFP4
What happened
Environment
Summary
Updating to Beta 22 runs the bundled engine/install.sh. The install fails, and because the script starts with uv venv --clear, the previous working engine is already gone, so the app has no engine at all. This happened on an earlier beta update too. There are two separate bugs, plus the non-atomic install.
error: Failed to download
sglang-kernel==0.4.5+cu130cause: Hash mismatch for
sglang-kernel==0.4.5+cu130Expected: sha256:44cccc106239ab6f361e823e33885e5355c6776646c1c5c222bc5eb409d33c35
Computed: sha256:f482a5fdf287d85cfc9434eaa0faff757d6fee31272f1c3e4408bd79aef189b5
hint:
sglang-kernel(v0.4.5+cu130) was included becausefreetoken[accel](v0.1.3+gcc1f5c2c9) depends onsglang-kernelCause: https://docs.sglang.io/whl/cu130/sglang-kernel/ lists the same file twice, with the same URL but different hashes:
https://github.com/sgl-project/whl/releases/download/v0.4.5/sglang_kernel-0.4.5+cu130-cp310-abi3-manylinux2014_x86_64.whl#sha256=44cccc10... (stale)
https://github.com/sgl-project/whl/releases/download/v0.4.5/sglang_kernel-0.4.5+cu130-cp310-abi3-manylinux2014_x86_64.whl#sha256=f482a5fd... (actual file)
The file at that URL currently hashes to f482a5fd…. uv takes the first (stale) entry, so every install fails. PyPI has no 0.4.5+cu130 x86_64 file to fall back on. This probably needs reporting to sgl-project as well, but the installer could avoid it (see suggested fixes).
install.sh installs flashinfer-cubin and flashinfer-jit-cache without version pins. uv resolves them to 0.7.0, but freetoken[accel] pulls in flashinfer-python==0.6.18.post1, so importing sgl_kernel/flashinfer fails:
RuntimeError: flashinfer-cubin version (0.7.0) does not match flashinfer version (0.6.18.post1).
Please install the same version of both packages.
flashinfer-jit-cache 0.7.0 also pulls in flashinfer-jit-cache-sm80/sm89/sm90a/sm100a/sm103a/sm120f==0.7.0, which are left behind after downgrading.
uv venv "$VENV" --clear runs before any download, so any network, index or resolution failure destroys a working engine.
Workaround I used
After that, ft --help works and import torch, sgl_kernel, flashinfer, freetoken succeeds on CUDA.
Suggested fixes
Desktop app version
V0.2.0-beta 19
OS
Arch Linux
OS details
CachyOS
GPU and driver
GPU: RTX 3060, CUDA 13 driver
CPU and system RAM
Ryzen 3700x
Checkpoint
Ornith-1.5-35B-A3B-NVFP4