Move heavy GPU deps (torch, bitsandbytes) to requirements-optional.txt
Nightly Build / build (push) Successful in 6m30s

torch and bitsandbytes pull in hundreds of MB of CUDA libraries
(nvidia_cublas ~423 MB) which are useless on headless servers
without an NVIDIA GPU like the NiPoGi.

- requirements.txt: keep only lightweight essential dependencies
- requirements-optional.txt (new): Orpheus TTS deps (torch, transformers,
  bitsandbytes, snac, huggingface_hub)
- Installers and update.sh: show hint about optional deps after install
- ci/package.sh: include requirements-optional.txt in tarball
This commit is contained in:
2026-07-21 00:26:34 +01:00
parent b627db761b
commit 0ee5fb2c25
6 changed files with 45 additions and 7 deletions
+3 -1
View File
@@ -17,7 +17,8 @@
# #
# The tarball contains everything needed to run (or uninstall) Skald Circle: # The tarball contains everything needed to run (or uninstall) Skald Circle:
# bin/skald, bin/skald-setup, web/, agents/, skills/, # bin/skald, bin/skald-setup, web/, agents/, skills/,
# default.config.yaml, providers.yaml, requirements.txt, run.sh, update.sh, uninstall.sh # default.config.yaml, providers.yaml, requirements.txt,
# requirements-optional.txt, run.sh, update.sh, uninstall.sh
set -eu set -eu
@@ -95,6 +96,7 @@ cp -r skills "$STAGING/skills"
cp default.config.yaml "$STAGING/default.config.yaml" cp default.config.yaml "$STAGING/default.config.yaml"
cp providers.yaml "$STAGING/providers.yaml" cp providers.yaml "$STAGING/providers.yaml"
cp requirements.txt "$STAGING/requirements.txt" cp requirements.txt "$STAGING/requirements.txt"
cp requirements-optional.txt "$STAGING/requirements-optional.txt"
cp run.sh "$STAGING/run.sh" cp run.sh "$STAGING/run.sh"
cp update.sh "$STAGING/update.sh" cp update.sh "$STAGING/update.sh"
cp uninstall.sh "$STAGING/uninstall.sh" cp uninstall.sh "$STAGING/uninstall.sh"
+9
View File
@@ -397,6 +397,15 @@ echo ""
# Write channel tag for future updates # Write channel tag for future updates
echo "$CHANNEL" > "$INSTALL_DIR/.release-channel" echo "$CHANNEL" > "$INSTALL_DIR/.release-channel"
# ── Hint about optional deps ──────────────────────────────────────────────────
if [ -f "${INSTALL_DIR}/requirements-optional.txt" ]; then
echo ""
info "💡 Optional GPU/ML dependencies available:"
info " ${INSTALL_DIR}/requirements-optional.txt"
echo " Install them manually if you use the Orpheus TTS plugin:"
echo " cd ${INSTALL_DIR} && .venv/bin/pip install -r requirements-optional.txt"
fi
echo " Server : ${INSTALL_DIR}/run.sh" echo " Server : ${INSTALL_DIR}/run.sh"
echo " Binary : ${INSTALL_DIR}/bin/skald" echo " Binary : ${INSTALL_DIR}/bin/skald"
echo " Setup : ${INSTALL_DIR}/bin/skald-setup" echo " Setup : ${INSTALL_DIR}/bin/skald-setup"
+9
View File
@@ -403,6 +403,15 @@ echo ""
echo "release" > "$INSTALL_DIR/.release-channel" echo "release" > "$INSTALL_DIR/.release-channel"
echo "$VERSION" > "$INSTALL_DIR/.release-version" echo "$VERSION" > "$INSTALL_DIR/.release-version"
# ── Hint about optional deps ──────────────────────────────────────────────────
if [ -f "${INSTALL_DIR}/requirements-optional.txt" ]; then
echo ""
info "💡 Optional GPU/ML dependencies available:"
info " ${INSTALL_DIR}/requirements-optional.txt"
echo " Install them manually if you use the Orpheus TTS plugin:"
echo " cd ${INSTALL_DIR} && .venv/bin/pip install -r requirements-optional.txt"
fi
echo " Server : ${INSTALL_DIR}/run.sh" echo " Server : ${INSTALL_DIR}/run.sh"
echo " Binary : ${INSTALL_DIR}/bin/skald" echo " Binary : ${INSTALL_DIR}/bin/skald"
echo " Setup : ${INSTALL_DIR}/bin/skald-setup" echo " Setup : ${INSTALL_DIR}/bin/skald-setup"
+13
View File
@@ -0,0 +1,13 @@
# Orpheus TTS 3B (plugin-tts-orpheus-3b) — GPU-heavy dependencies
# Install only if you enable the Orpheus TTS plugin:
# pip install -r requirements-optional.txt
#
# NOTE: torch and bitsandbytes pull in CUDA libraries (~GB). On a headless
# server (no NVIDIA GPU) these are completely unnecessary, so they are kept
# in a separate file.
torch
transformers
snac
bitsandbytes
huggingface_hub
+2 -6
View File
@@ -16,12 +16,8 @@ trendspyg>=0.7.0
kokoro-onnx kokoro-onnx
soundfile soundfile
# Orpheus TTS 3B (plugin-tts-orpheus-3b) — heavy deps, only needed when plugin is enabled # Orpheus TTS 3B (plugin-tts-orpheus-3b) — heavy deps moved to requirements-optional.txt
torch # See requirements-optional.txt if you need the Orpheus TTS plugin.
transformers
snac
bitsandbytes
huggingface_hub
fastapi fastapi
uvicorn uvicorn
scipy scipy
+9
View File
@@ -207,6 +207,15 @@ fi
start_service start_service
# ── Hint about optional deps ──────────────────────────────────────────────────
if [ -f "${INSTALL_DIR}/requirements-optional.txt" ]; then
info "💡 Optional GPU/ML dependencies available:"
info " ${INSTALL_DIR}/requirements-optional.txt"
echo " Install them manually if you use the Orpheus TTS plugin:"
echo " cd ${INSTALL_DIR} && .venv/bin/pip install -r requirements-optional.txt"
echo ""
fi
# ── Done ────────────────────────────────────────────────────────────────────── # ── Done ──────────────────────────────────────────────────────────────────────
echo "" echo ""
info "✅ Skald Circle updated to ${DISPLAY_VERSION}!" info "✅ Skald Circle updated to ${DISPLAY_VERSION}!"