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:
| file | platform |
|---|---|
taktwerk-workbench_<v>_x64-setup.exe | Windows x86_64, per-user installer (NSIS) |
taktwerk-workbench_<v>_x64_en-US.msi | Windows x86_64, machine-wide installer (MSI) |
taktwerk-workbench_<v>_amd64.AppImage, _amd64.deb | Linux x86_64 |
taktwerk-workbench_<v>_aarch64.AppImage, _arm64.deb | Linux 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