LoadTable is early software. These pages describe the current development build; see Status for what is missing.
Install
LoadTable runs on Linux and macOS. Install it on every machine that should take part: the one your agents run on and each worker.
Build from source
You need a recent stable Rust toolchain.
git clone https://github.com/osvauld/loadtable
cd loadtable
cargo install --locked --path crates/tasks-daemon --root ~/.local
cargo install --locked --path crates/tasks-cli --features mcp --root ~/.local
Add --features ui,mcp to the second line on a machine where you want the desktop window
(loadtable ui). Make sure ~/.local/bin is on your PATH, and that no older copy of the CLI
comes before it (which -a loadtable).
Run the daemon as a service
loadtabled install # writes the user service and prints the command to start it
On Linux this writes a systemd user unit, loadtabled.service; on macOS a launchd agent with the
label loadtabled. Neither needs root. The daemon never edits units for you after that: if a unit
already exists and differs, install leaves it alone and says so.
Restart the daemon only when it is idle; jobs do not survive a restart:
loadtable drain # stop starting new jobs
loadtable status # wait until nothing is running
systemctl --user restart loadtabled # Linux
launchctl kickstart -k gui/$(id -u)/loadtabled # macOS
Exact figures per job (Linux, optional)
With cgroup delegation the daemon puts each job in its own cgroup and reports exact memory, CPU,
disk bytes and stall times. Without it everything still works and the figures are summed over the
job’s processes. loadtable status shows which you have on its attribution: line.
Delegation needs two things, both set by you, as root:
# the user manager owns the io controller too (most distributions leave it out)
sudo mkdir -p /etc/systemd/system/user@.service.d
printf '[Service]\nDelegate=cpu cpuset io memory pids\n' | \
sudo tee /etc/systemd/system/user@.service.d/delegate.conf
sudo systemctl daemon-reload # applies at your next login
and Delegate=yes on the daemon’s unit, which loadtabled install already writes. On NixOS set
systemd.services."user@".serviceConfig.Delegate = "cpu cpuset io memory pids"; instead.
Check it
loadtable status # slots, pressure, peers
loadtable run --who me -- uname -a # a first job
loadtable cache # compiler wrapper, cache root, disk reserve
Where things live
The same paths on Linux and macOS:
| What | Where |
|---|---|
| State: ledger, logs, identity | ~/.local/state/loadtable |
| Machine policy | ~/.config/loadtable/machine-policy.toml |
| Build caches | ~/build-cache (sccache, Gradle, per-checkout outputs) |
The state directory holds this machine’s identity and pairings. Back it up with the machine; deleting it means pairing again.