torzy
torzy is a Rust library and CLI for running the same command across multiple
isolated workers, each with its own Tor SOCKS route. The launcher handles worker
setup, Tor lifecycle, command execution, timeouts, and redacted status output.
Use it when you need repeatable parallel work with network isolation, or when you want consistent worker orchestration without building a custom runner.
Install
Release notes
0.1.3publish pass: metadata/docs/readme refresh and crates/docs polish.0.1.2publish pass: metadata/docs/readme refresh and crates/docs polish.0.1.2publish pass: metadata/docs/readme refresh and crates/docs polish.0.1.2publishes now include refreshed crates.io metadata, docs.rs metadata, and README docs.
If you use managed Tor mode, ensure tor is available on PATH or pass
--tor-binary.
CLI quick start
Run with defaults (5 workers, local placeholder command):
Validate your setup without starting Tor or running real commands:
Change worker count and worker command:
Use existing SOCKS routes instead of launching Tor:
Write a summary you can parse in CI or scripts:
What workers receive
torzy injects and/or exposes:
TOR_ROUTETOR_WORKER_ID(also{WORKER_ID}in templates)TORZY_ROOTTORZY_WORKSPACE
The command template also supports:
{TOR_ROUTE}{TOR_WORKER_ID}or{WORKER_ID}{TORZY_ROOT}{TORZY_WORKSPACE}
Workers also get isolated workspace environment values, including HOME,
TMPDIR, CARGO_HOME, and CARGO_TARGET_DIR.
Proxy variables (ALL_PROXY, HTTPS_PROXY, HTTP_PROXY, CARGO_HTTP_PROXY) are
enabled by default and can be turned off with --no-proxy-env.
Publishing and release workflows
torzy is useful for sharding publish-like jobs across independent exits when
commands are already safe to run concurrently. Example:
Notes for publish-style commands:
- Keep
--no-verifyintentional and only use it when required. - Only pass credentials with
--envwhen you actually need them. - For dry-run checks before a real publish, use
--dry-runor your registry’s staging mode first.
Terminal mode and monitor mode
--tuishows route bootstrap progress, worker states, and recent sanitized output.- In non-interactive terminals,
--tuiautomatically falls back to plain event logging.
lios is only an example command. torzy does not require it.
Resource and flow control
-j/--max-concurrentlimits simultaneously running workers.-t/--timeout-secondssets per-worker timeout.--memory-limit-mbcaps worker memory.--working-directorysets a command working directory.--keep-workspacespreserves worker directories after completion.--summary-jsonand--pretty-jsoncreate machine-readable and human-friendly reports.--root-dirand--tor-data-dircontrol filesystem placement.
Library usage
use ;
async
Use tokio::sync::mpsc::unbounded_channel with run(config, Some(tx)) if you need
live events for UI or supervisor code.