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
Release files for tmux-trainsh 1.2026.120
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tmux_trainsh-1.2026.120.tar.gz | 267.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tmux_trainsh-1.2026.120-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 596.3 kB
Release files / tmux_trainsh-1.2026.120.tar.gz
| Download URL | tmux_trainsh-1.2026.120.tar.gz |
|---|---|
| Size | 267.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b5ccaf04790c5ea0a2f22928e3d917a1321193f10c609731bc6c06280f8a035
|
|
BLAKE2b-256 checksum How to use checksums |
74aff950b64fc2d772d3ce06806137983addf754e9ab8722162b9a55b968ca71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 31, 2026.
Transparency logRelease files / tmux_trainsh-1.2026.120-py3-none-any.whl
| Download URL | tmux_trainsh-1.2026.120-py3-none-any.whl |
|---|---|
| Size | 329.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2a172c0798bc599784760e9e9c8112471cc9b98ae06baebb46c60adf5c626eee
|
|
BLAKE2b-256 checksum How to use checksums |
c80d0b27365816263835abe66f663672e9f543be4c07772aac569ddb3ba8a39a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 31, 2026.
Transparency log