GPU training workflow automation with tmux
Project description
tmux-trainsh
tmux-trainsh is a terminal-first workflow runner for GPU and remote automation work.
README is the quick overview and landing page. The canonical command reference stays in the CLI:
train help
train --help
Those two commands are the canonical help entry points.
Install
Install from PyPI with uv:
uv tool install -U tmux-trainsh
train help
Or use the install script:
curl -LsSf https://raw.githubusercontent.com/binbinsh/tmux-trainsh/main/install.sh | bash
Main Command Groups
train recipefor recipe files, execution, status, logs, jobs, and schedulestrain hostfor named SSH or Colab hoststrain vllmfor managed remote vLLM servers and local batch clientstrain storagefor named storage backendstrain transferfor local, host, and storage copiestrain secretsfor credentialstrain configfor config and tmux settingstrain vastfor Vast.ai instancestrain runpodfor RunPod Podstrain colabfor one-off Colab tunnelstrain pricingfor exchange rates and cost estimates
Quick Start
train secrets set GITHUB_TOKEN
train secrets set VAST_API_KEY
train secrets set RUNPOD_API_KEY
train secrets set POE_API_KEY
train host add
train vllm serve gpu-box Qwen/Qwen2.5-32B-Instruct --gpus 0
train storage add
train recipe show nanochat
train recipe new demo --template remote-train
train exec nanochat
train host clone gpu-box https://github.com/org/private-repo.git /srv/private-repo
train recipe status --last
Bundled Examples
Current bundled examples: aptup, brewup, hello, nanochat
Recipe Authoring
Public imports:
from trainsh import Recipe, Host, RunpodHost, VastHost, HostPath, Storage, StoragePath, load_python_recipe, local
from trainsh import flash_attn_install_script
Main authoring model:
RecipeHost/VastHost/RunpodHost/HostPathStorage/StoragePathhost.tmux(...)local.tmux(...)tmux.install_flash_attn(...)tmux.script(...)recipe.storage_wait_count(...)
Runtime Guarantees
.pyreciperecipes run as: load -> dependency graph fromdepends_on-> executor run- Airflow-like retry / timeout / callback / trigger-rule semantics remain supported
- Supported executor aliases include
sequential,thread_pool,process_pool,local,airflow,celery,dask, anddebug - Kubernetes executor remains unsupported
Maintenance
To refresh this file after editing the canonical help catalog:
python3 scripts/sync_cli_docs.py
Regression commands:
python3 tests/test_commands.py
python3 -m unittest tests.test_runtime_persist tests.test_pyrecipe_runtime tests.test_runtime_semantics tests.test_provider_dispatch tests.test_ti_dependencies
uv run --with coverage python scripts/check_runtime_coverage.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tmux_trainsh-1.2026.120.tar.gz.
File metadata
- Download URL: tmux_trainsh-1.2026.120.tar.gz
- Upload date:
- Size: 267.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b5ccaf04790c5ea0a2f22928e3d917a1321193f10c609731bc6c06280f8a035
|
|
| MD5 |
fbd659b1336de2eda3f1e4f0c904fcbc
|
|
| BLAKE2b-256 |
74aff950b64fc2d772d3ce06806137983addf754e9ab8722162b9a55b968ca71
|
Provenance
The following attestation bundles were made for tmux_trainsh-1.2026.120.tar.gz:
Publisher:
publish.yml on binbinsh/tmux-trainsh
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tmux_trainsh-1.2026.120.tar.gz -
Subject digest:
6b5ccaf04790c5ea0a2f22928e3d917a1321193f10c609731bc6c06280f8a035 - Sigstore transparency entry: 1203319930
- Sigstore integration time:
-
Permalink:
binbinsh/tmux-trainsh@d0d70be6c51c5f6204d1b0cb363d76691df27cc5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/binbinsh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d0d70be6c51c5f6204d1b0cb363d76691df27cc5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file tmux_trainsh-1.2026.120-py3-none-any.whl.
File metadata
- Download URL: tmux_trainsh-1.2026.120-py3-none-any.whl
- Upload date:
- Size: 329.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a172c0798bc599784760e9e9c8112471cc9b98ae06baebb46c60adf5c626eee
|
|
| MD5 |
c417912f3c0bf67a4cadf89f3f59eadd
|
|
| BLAKE2b-256 |
c80d0b27365816263835abe66f663672e9f543be4c07772aac569ddb3ba8a39a
|
Provenance
The following attestation bundles were made for tmux_trainsh-1.2026.120-py3-none-any.whl:
Publisher:
publish.yml on binbinsh/tmux-trainsh
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tmux_trainsh-1.2026.120-py3-none-any.whl -
Subject digest:
2a172c0798bc599784760e9e9c8112471cc9b98ae06baebb46c60adf5c626eee - Sigstore transparency entry: 1203319935
- Sigstore integration time:
-
Permalink:
binbinsh/tmux-trainsh@d0d70be6c51c5f6204d1b0cb363d76691df27cc5 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/binbinsh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d0d70be6c51c5f6204d1b0cb363d76691df27cc5 -
Trigger Event:
push
-
Statement type: