Documentation

SageTea Runtime
SageTea Runtime v1.13 — User Manual

SageTea Runtime v1.13

Headless-free installer and launcher for Squeak 6 — baseline builder, Postgres auto‑config, containers (LXD/Docker/Podman), and developer‑friendly UX.

What’s new? v1.13 bakes the full example set into --help, restores the --baseline flag (non‑headless), and keeps best‑effort defaults so installs don’t hang. The launcher always prompts when multiple images exist.

Overview

SageTea Runtime installs the Squeak 6 All‑in‑One VM, seeds a workspace with images, optionally configures a local PostgreSQL instance from a portal.conf, and provides an ergonomic sagetea-runtime launcher with an image chooser and a safe (GUI) baseline workflow.

Highlights

  • Best‑effort install (add --strict to fail fast)
  • GUI/TUI image chooser (kdialog / zenity / fzf / TTY)
  • --baseline non‑headless baseline build
  • Local Postgres auto‑config from portal.conf
  • Containers: LXD preferred, Docker/Podman fallback

Paths (defaults)

  • App root: ~/.local/opt/sagetea-runtime/app (user)
  • Workspace: ~/.local/share/sagetea-runtime
  • Launcher: ~/.local/bin/sagetea-runtime
  • Log file: $WORKSPACE/install_*.log

ARM & Mobile

The Smalltalk VM runs on ARM processors, making it compatible with LynX Phone. SageTea Runtime supports the XTC Mobile Developer Ecosystem for low‑code AI development on secure mobile devices.

Requirements

  • Debian/Ubuntu with apt-get
  • Packages: curl jq tar unzip (auto‑installed)
  • Optional UI: kdialog (KDE), zenity (GNOME), fzf (TUI)
  • PostgreSQL for local DB provisioning (auto‑installed if needed)

Quick start

# User install (default paths under ~/.local)
./SageTeaRuntime.sh --user   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

# Launch (prompts to choose an image if multiple exist)
sagetea-runtime

Install modes & workspace

# Explicit user install with custom workspace
./SageTeaRuntime.sh --user   --workspace "$HOME/dev/sagetea-work"   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

# System-wide install (under /opt, launcher in /usr/local/bin)
sudo ./SageTeaRuntime.sh --system   --workspace "/var/lib/sagetea-runtime"   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

Reinstall / skip AIO / desktop entry

# Force re-download/extract of Squeak AIO
./SageTeaRuntime.sh --reinstall   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

# Skip AIO steps (useful if AIO is already present)
./SageTeaRuntime.sh --no-aio   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

# Don’t create a desktop launcher (.desktop)
./SageTeaRuntime.sh --no-desktop   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

Best‑effort vs strict

# Default is best-effort (continues on non-critical errors)
./SageTeaRuntime.sh   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

# Strict mode: fail fast on errors
./SageTeaRuntime.sh --strict   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

# Strict via env var
SAGETEA_STRICT=1 ./SageTeaRuntime.sh   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

Launcher usage

# Prompt to choose an image if multiple exist
sagetea-runtime

# Launch last used image (no prompt)
sagetea-runtime --use-last

# Launch a specific image
sagetea-runtime --image "$HOME/.local/share/sagetea-runtime/Squeak6.0-22104-64bit.image"

# Use a different workspace just for this run
SAGETEA_WORKSPACE="$HOME/dev/sagetea-work" sagetea-runtime

Baseline build (non‑headless; safe)

# Use chooser to pick image, then run default baseline script from workspace:
#   $WORKSPACE/SageTeaBaselineBuildScript.st
sagetea-runtime --baseline

# Use the last launched image (no chooser), default baseline script:
sagetea-runtime --use-last --baseline

# Pick image via chooser and run a specific script path:
sagetea-runtime --baseline   --baseline-script "$HOME/.local/share/sagetea-runtime/SageTeaBaselineBuildScript.st"

# Run baseline against explicit image + explicit script:
sagetea-runtime --image "$HOME/.local/share/sagetea-runtime/Squeak6.0-22104-64bit.image"   --baseline   --baseline-script "$HOME/.local/share/sagetea-runtime/SageTeaBaselineBuildScript.st"

PostgreSQL auto‑config from portal.conf

On install, the script reads portal.conf and:

  • If databaseServer is localhost or 127.0.0.1, installs/configures local PostgreSQL:
CREATE ROLE "USER" LOGIN PASSWORD '****';
CREATE DATABASE "DB" OWNER "USER";
GRANT ALL PRIVILEGES ON DATABASE "DB" TO "USER";
  • If it’s a remote server, a helper SQL file is written to $WORKSPACE/postgres_helper.sql.

Containers (LXD/Docker/Podman)

# List containers (LXD preferred; falls back to Docker, then Podman)
./SageTeaRuntime.sh --container list

# Create a container and mount workspace at /work
./SageTeaRuntime.sh --container create px7

# Launch (create if missing, then start)
./SageTeaRuntime.sh --container launch px7

# Start / Stop / Shell / Logs
./SageTeaRuntime.sh --container start  px7
./SageTeaRuntime.sh --container stop   px7
./SageTeaRuntime.sh --container shell  px7
./SageTeaRuntime.sh --container logs   px7

# Copy (clone)
./SageTeaRuntime.sh --container copy px7 px7-clone

# Delete (force)
./SageTeaRuntime.sh --container delete px7 --force

# Force a specific engine:

# LXD
./SageTeaRuntime.sh --engine lxd --container create px7

# Docker
./SageTeaRuntime.sh --engine docker --container create px7

# Podman
./SageTeaRuntime.sh --engine podman --container create px7

Full end‑to‑end examples

# User install, set workspace, copy ./portal.conf and DLCX
./SageTeaRuntime.sh --user   --workspace "$HOME/.local/share/sagetea-runtime"   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx

# Launch and choose an image to run
sagetea-runtime

# Baseline that image later (non-headless, safe)
sagetea-runtime --use-last --baseline

# System-wide install (any user can launch)
sudo ./SageTeaRuntime.sh --system   --workspace "/var/lib/sagetea-runtime"   --portal-conf ./portal.conf   --dlcx ./SageTeaInventory-2025-09-22.2.dlcx
sagetea-runtime

Uninstall & purge

# User install uninstall
./SageTeaRuntime.sh --uninstall

# Purge workspace too
./SageTeaRuntime.sh --uninstall --purge

# Also remove local fzf
./SageTeaRuntime.sh --uninstall --purge --purge-fzf

# System-wide uninstall (non-interactive)
sudo ./SageTeaRuntime.sh --system --uninstall --yes

Troubleshooting & tips

Heartbeat warning

sudo bash -c 'cat >/etc/security/limits.d/squeak.conf <

PATH (user mode)

export PATH="$HOME/.local/bin:$PATH"

Remote DB

Use the generated postgres_helper.sql on your DB host with a superuser.

We #StandWithUkraine.
Learn how you can help too!

#Stand­With­Ukraine

We don't know how long the war will last. But what we do know is that we can't stand aside and watch.

The fastest way you can help too is to support Ukraine financially. The National Bank of Ukraine (NBU) has opened a multi-currency account for that purpose. Learn more

This account accepts donations in US, Canadian and Australian dollars, euros, British pounds, Swiss francs, yuan and yen.

UA823000010000032302338301027

Also accepting cryptocurrency donations – the fastest way to help. Learn more

BTC – 357a3So9CbsNfBBgFYACGvxxS6tMaDoa1P

ETH, USDT (ERC-20) – 0x165CD37b4C644C2921454429E7F9358d18A45e14

If you want to volunteer in the army of Ukraine and help with deeds, then here are specific instructions how to do this: Learn more

Spread the word!