Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installing the workbench

The workbench is the web UI of taktwerk serve over a project folder and its devices. It comes as a desktop app for Linux and Windows, or in a CLI build with the ui feature (cargo install --locked taktwerk --features ui, see Installing the CLI), opened in a browser. What it does: Workbench.

Desktop app

Each taktwerk release carries the installers, of the release’s version:

fileplatform
taktwerk-workbench_<v>_x64-setup.exeWindows x86_64, per-user installer (NSIS)
taktwerk-workbench_<v>_x64_en-US.msiWindows x86_64, machine-wide installer (MSI)
taktwerk-workbench_<v>_amd64.AppImage, _amd64.debLinux x86_64
taktwerk-workbench_<v>_aarch64.AppImage, _arm64.debLinux aarch64
taktwerk-<v>-<target>[.exe]the app’s taktwerk alone (web UI, serve, device, deploy)

Each installer carries its own taktwerk and the Linux device engines of the same version (x86_64, aarch64, armv7), which serve deploys, so a device can be deployed to without internet. SHA256SUMS lists every file of the release.

The installers are not signed. On Windows, SmartScreen stops the first start of the installer with “Windows protected your PC”: check the file against SHA256SUMS (Get-FileHash <file> in PowerShell), then More info → Run anyway. The app needs WebView2, which Windows 10 and 11 include; the installers fetch it when it is missing.

On Linux the app runs projects locally and deploys to devices. On Windows taktwerk loads no models itself: local runs and checks go to a WSL2 distribution of the PC (Local runs on Windows), and engines run on Linux devices, which a WSL2 distribution can be too. Without WSL2 the app shows the folder’s files, records, campaign results and devices, a project’s plan lists each model as not loaded, and no local run starts.

Local runs on Windows

The app runs the folder’s projects in a WSL2 distribution with the Linux engine it carries, so nothing is ported and no admin rights, SSH server or password are needed. Once, in PowerShell:

wsl --install            # WSL2 and Ubuntu; skip when `wsl -l -v` lists a version 2 distribution

Start the distribution once from the Start menu to create its user, then (re)start the app. Runs names the distribution and starts runs there: the app copies its engine to ~/.cache/taktwerk/ in the distribution, runs it in the folder as WSL sees it (C:\… is /mnt/c/…), and the Live screen reaches the run’s API through wsl.exe. Records land in the Windows folder. The distribution is the default WSL2 one, or the first WSL device of the registry (TAKTWERK_WSL_DISTRO overrides). The folder must be on a local drive or inside the distribution (\\wsl.localhost\<distro>\…), not on a network share.

A device to try

Any Linux machine with SSH and glibc 2.25 or newer serves as a device: a single-board computer on the desk, a PC, or WSL2 on the Windows machine itself. systemd supervises the bundles where it runs, taktwerk’s own supervisor elsewhere (Without systemd). The release archive of the device’s architecture carries examples/ as a bundle with its libraries built:

# on the Windows PC, PowerShell
cd $HOME\Documents
mkdir taktwerk; cd taktwerk
tar -xzf $HOME\Downloads\taktwerk-<v>-aarch64-linux-gnu.tar.gz

On the device, once, as a user with sudo (the login user owns the install root):

sudo install -d -o "$USER" /opt/taktwerk

Then in the app: Devices → add the device (address, login user, privilege sudo) → Verify and compare the fingerprint with ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub on the device → deploy the bundle examples → Install unit → Start → Live: write ctrl.sp and watch plant.level_m follow → Stop → Sync records → Records: the run from the device.

WSL2 as a device

On Windows, Devices lists the PC’s WSL2 distributions under This PC (WSL): Add as device → Verify (no host key: the distribution is this PC) → deploy, install the unit, start, Live and sync records as for any device. Take the x86_64-linux-gnu archive for the bundle. Commands run through wsl.exe, root through wsl -u root (WSL2 distributions). Units need systemd in the distribution ([boot] systemd=true in /etc/wsl.conf), else taktwerk’s own supervisor runs the bundle. The app keeps the distribution running while it is open; for engines that keep running after it closes, add to %UserProfile%\.wslconfig:

[general]
instanceIdleTimeout=-1