Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ beside itself. Unpack it anywhere:

```sh
tar --zstd -xf 1bit-v2026.40-linux-x86_64.tar.zst
1bit-v2026.40-linux-x86_64/1bit serve -m model.gguf --device vulkan --port 8000
1bit-v2026.40-linux-x86_64/1bit serve -m model.gguf --port 8000 # --device auto picks HRX
```

The builds target Strix Halo: the llama.cpp backends are built with `GGML_NATIVE` on its Zen 5. HRX and the ROCm backends need TheRock in
Expand Down
2 changes: 1 addition & 1 deletion os/mini/mkimage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ echo "== initramfs"
# (Dropbear, like sshd, refuses keys when the home directory is group-writable)
chmod -R go-w "$root"; chmod 1777 "$root/tmp"; chmod 700 "$root/root"
# every file owned by root (Dropbear, like sshd, refuses keys in files the user does not own)
(cd "$root" && find . -print0 | cpio --null -o -H newc -R 0:0 --quiet) | zstd -q -19 -T0 > "$out/initramfs.img"
(cd "$root" && find . -print0 | cpio --null -o -H newc -R 0:0 --quiet) | zstd -q -19 -T4 > "$out/initramfs.img"

echo "== 1bit-os.efi (unified kernel image)"
stub=$tools/usr/lib/systemd/boot/efi/linuxx64.efi.stub
Expand Down
2 changes: 1 addition & 1 deletion scripts/package-linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,5 @@ Keep the directory layout: 1bit finds its backends beside itself.
HRX and the ROCm backends need TheRock in /opt/rocm-therock; the NPU needs the amdxdna
kernel driver. Docs: https://1bit.gg/ Code: https://github.com/1bit-MONSTER/engine
EOF
tar -C "$(dirname "$stage")" -cf - "$name" | zstd -q -T0 -19 -o "$out/$name.tar.zst"
tar -C "$(dirname "$stage")" -cf - "$name" | zstd -q -T4 -19 -o "$out/$name.tar.zst"
ls -la "$out/$name.tar.zst"
17 changes: 10 additions & 7 deletions scripts/weekly.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
# as the GitHub release v<ISO year>.<ISO week> with the packages
# No stage: all of them, in that order. WEEKLY_DRY_RUN=1 merges and publishes nothing.
# WEEKLY_REF (default main) is what build checks out; bumps always works on main.
# WEEKLY_JOBS (default 6) caps build parallelism; heavy steps wait for WEEKLY_MIN_FREE_GB (16).
# WEEKLY_JOBS (default 4, what ~/lb/thermal-run.sh allows on Strix Halo) caps build parallelism; heavy steps wait for WEEKLY_MIN_FREE_GB (16).
# Needs gh (logged in, allowed to merge on the engine), TheRock in /opt/rocm-therock, and
# what the build scripts each list.
set -euo pipefail
Expand All @@ -40,7 +40,7 @@ SRC=$W/src BUILD=$W/build OUT=$W/out LOGS=$W/logs
GGUF=${ONEBIT_SERVE_TEST_GGUF:-$HOME/models/Qwen3-0.6B-Q4_K_M.gguf}
DRY=${WEEKLY_DRY_RUN:-0}
# the box is shared: a capped build leaves room for whatever else runs on Sunday
JOBS=${WEEKLY_JOBS:-6}
JOBS=${WEEKLY_JOBS:-4}
export CMAKE_BUILD_PARALLEL_LEVEL=$JOBS
# the submodules the packages are built from (linux, laya and comfyui.cpp only on their bumps)
SUBMODULES=(hrx-system llama.cpp llama.cpp-vulkan llama.cpp-rocmfpx zinc xdna-driver lemonade ryzenai-server ds4 tokenizers)
Expand Down Expand Up @@ -167,19 +167,22 @@ bump_check() { # bump_check <branch>
esac
}

# Lemonade's own LLM suite through the onebit recipe, on Vulkan (docs/lemonade.md)
# Lemonade's own LLM suite through the onebit recipe, on HRX (docs/lemonade.md); lemond keeps its
# state in the workdir, not in the user's ~/.cache/lemonade and ~/.config/lemonade
lemonade_suite() {
guard "$SRC/scripts/build-lemonade.sh" "$W/lemonade" > "$LOGS/lemonade-build.log" 2>&1
local venv=$W/lemonade-venv
[ -x "$venv/bin/python" ] || python3 -m venv "$venv"
"$venv/bin/pip" -q install -r "$SRC/third_party/lemonade/test/requirements.txt" # the suite's own list
# the suite talks to a running lemond: ours, on a port of its own, with this build's 1bit
local port=13399 pid rc=0
LEMONADE_ONEBIT_BIN="$BUILD/1bit" "$W/lemonade/bin/lemond" --port "$port" > "$LOGS/lemond.log" 2>&1 &
mkdir -p "$W/lemonade-state/cache" "$W/lemonade-state/config"
LEMONADE_ONEBIT_BIN="$BUILD/1bit" "$W/lemonade/bin/lemond" --port "$port" \
"$W/lemonade-state/cache" "$W/lemonade-state/config" > "$LOGS/lemond.log" 2>&1 &
pid=$!
( cd "$SRC/third_party/lemonade" &&
PATH="$W/lemonade/bin:$BUILD:$PATH" LEMONADE_ONEBIT_BIN="$BUILD/1bit" LEMONADE_TEST_PORT="$port" \
"$venv/bin/python" test/server_llm.py --wrapped-server onebit --backend vulkan ) > "$LOGS/lemonade-suite.log" 2>&1 || rc=$?
"$venv/bin/python" test/server_llm.py --wrapped-server onebit --backend hrx ) > "$LOGS/lemonade-suite.log" 2>&1 || rc=$?
kill "$pid" 2>/dev/null; wait "$pid" 2>/dev/null || true
return $rc
}
Expand Down Expand Up @@ -245,7 +248,7 @@ stage_package() {
"$SRC/scripts/package-linux.sh" "$BUILD" "$OUT" "$tag" "$W/xdna/root/opt/xilinx/xrt" > "$LOGS/package-linux.log" 2>&1
say "package $tag: Lemonade + onebit"
guard "$SRC/scripts/build-lemonade.sh" "$W/lemonade" > "$LOGS/lemonade-build.log" 2>&1
tar -C "$W/lemonade" --transform "s,^,lemonade-onebit-$tag/," -cf - bin | zstd -q -T0 -19 \
tar -C "$W/lemonade" --transform "s,^,lemonade-onebit-$tag/," -cf - bin | zstd -q -T4 -19 \
-o "$OUT/lemonade-onebit-$tag-linux-x86_64.tar.zst"
say "package $tag: Windows"
rm -rf "$W/windows"
Expand All @@ -255,7 +258,7 @@ stage_package() {
say "package $tag: 1bit OS"
rm -rf "$W/os"
guard "$SRC/os/mini/mkimage.sh" "$W/os" "$BUILD" > "$LOGS/os.log" 2>&1
zstd -q -T0 -19 "$W/os/1bit-os.img" -o "$OUT/1bit-os-$tag.img.zst"
zstd -q -T4 -19 "$W/os/1bit-os.img" -o "$OUT/1bit-os-$tag.img.zst"
cp "$W/os/1bit-os.efi" "$OUT/1bit-os-$tag.efi"
(cd "$OUT" && sha256sum -- * > SHA256SUMS)
ls -la "$OUT"
Expand Down
Loading