Skip to content
install & set up
$ npm i -g turnout-cli
$ cargo install turnout

# then, once:
$ turnout setup
$ turnout app add
$ turnout server add
$ turnout use

turnout

Point local apps at any backend stand, keep servers and secrets at hand, build and deploy - from any directory.
Terminal window
$ turnout use web staging
'web' now uses 'staging'.
The running gateway picks this up automatically.
Stand check: https://staging.example.com responded with 200 OK.
$ cd ~/dev/web/src/components
$ turnout dev
[web] pnpm dev

Nothing in the project changed - the app still talks to localhost, and the gateway routes it to the stand you picked. Cookies are kept per app and stand, so the switch does not log you out.

Dev gateway

Your apps always talk to localhost; turnout routes requests to the selected stand. Switching is one command, and sessions survive it - the gateway keeps a cookie jar per app+server pair.

Servers, logins and paths, apart

A machine, the credential that logs into it and the directory files land in are three named entities. Define the deploy account once and point every stand at it; the same web root serves staging and production without being retyped.

Secrets in the OS keyring

Windows Credential Manager, macOS Keychain or Linux Secret Service. A secret belongs to a credential, so one pass set covers every stand it reaches. Copy a password to the clipboard with one command; nothing lives in plain files.

Commands from anywhere

dev, build, test and lint run in the right project folder for you - no cd required. Commands come from your actual package.json scripts.

Deploy

Build, upload over SSH/SFTP, restart the service - with remote backup and restore when a release goes wrong. Artifacts travel as one archive instead of thousands of round trips, to Linux and Windows servers alike.

Portable settings

export writes your apps, servers, credentials, paths and groups to one file; import merges it on another machine. Secrets come along only when you ask, sealed with a passphrase.

Nothing to memorize

Leave a name out and pick it from a list; in bash, Tab completes app, server, credential, path and group names from your own catalogs.

An action journal

Every state change appends one JSON line - what happened and to which entities, never secrets. tail, grep and jq work on it directly.