torzy
torzy is a small Rust library and CLI for running isolated worker commands
behind separate Tor SOCKS routes.
It handles the Tor lifecycle, worker isolation, command execution, timeouts, and sanitized status reporting. It does not include project-specific workflows or application launch logic.
Privacy Defaults
- The default command is local and does not call an external service.
- CLI output does not print Tor route addresses, process ids, runtime paths, or public network addresses from worker output.
- JSON summaries contain counts and worker statuses only.
- Route strings are passed to workers through
TOR_ROUTEand proxy environment variables, but they are not printed bytorzyitself.
Worker commands can still print their own data. torzy redacts common route and
public-address tokens from captured output, but callers should avoid logging
sensitive data in the command they provide.
Install
Managed Tor mode requires a tor binary on PATH, or pass --tor-binary.
CLI
Dry-run the default five workers without starting Tor:
Start five managed Tor routes and run the safe default command:
Show a sanitized terminal dashboard while the same launcher runs:
The TUI shows route bootstrap progress, worker status, and recent sanitized
worker output. It does not show route strings, process ids, runtime paths, or
network-address tokens. In non-interactive output, --tui falls back to the
plain sanitized event log.
Set the worker count and command:
Use existing SOCKS routes instead of managed Tor:
Supported command placeholders:
{TOR_ROUTE}{TOR_WORKER_ID}or{WORKER_ID}{TORZY_ROOT}{TORZY_WORKSPACE}
Workers also receive TOR_ROUTE, TOR_WORKER_ID, TORZY_ROOT,
TORZY_WORKSPACE, isolated HOME, TMPDIR, CARGO_HOME, and
CARGO_TARGET_DIR. Proxy environment variables are enabled by default and can
be disabled with --no-proxy-env.
Terminal Example
torzy does not depend on a terminal emulator, but you can provide one as the
worker command. For example, to open five lios windows while the TUI supervises
the Tor-backed workers:
That example is only a supplied command. lios is not required by torzy.
Library
use ;
async
Use tokio::sync::mpsc::unbounded_channel with run(config, Some(tx)) when you
want live events for a UI or supervisor.