Trane ·

Trane is a modern CLI for running parallel tasks with a user-friendly TUI.
Think Concurrently, but with a better interface, alias support, runtime validation, and developer-first ergonomics. Create trane.json
file in the root directory. Define commands and the working directories. Then simply run trane
.
Install
npm install --global @xenoverseup/trane
Usage
trane --help
CLI Options
Usage
$ trane [options] [alias]
Options
--file, -f Path to command config (default: ./trane.json)
--list List all available aliases
--version, -v Show CLI version
--help, -h Show CLI help
Examples
$ trane # Launch interactive TUI from trane.json
$ trane --file=custom.json
$ trane --list # Show all available aliases
$ trane build # Run alias "build" defined in config
Config File (trane.json
)
Define tasks in a config file:
[
{
"label": "Dev Server",
"command": "npm",
"args": ["run", "dev"],
"alias": "dev",
"cwd": "./client"
},
{
"label": "Type Check",
"command": "tsc",
"args": ["--watch"],
"alias": "ts"
}
]
Types for trane.json
If your editor supports it, enable auto-completion and type-checking:
// @ts-check
// @type {import('@xenoverseup/trane/config').default}
[
{
"label": "Dev Server",
"command": "npm",
"args": ["run", "dev"],
"alias": "dev"
}
]
TODO Roadmap
- <input disabled="" type="checkbox"> Export logs to file
- <input disabled="" type="checkbox"> Timestamp each output
- <input disabled="" type="checkbox"> Native buffer support
- <input disabled="" type="checkbox"> Clear/reset output buffer
- <input disabled="" type="checkbox"> Dual modes: interactive / headless
- <input disabled="" type="checkbox"> Autocomplete alias names
Muhammed Can Durmus · 2025
Licensed under the MIT License.