tx3up is the installer and version manager for the Tx3 toolchain. It downloads the tools described by a channel manifest, keeps them up to date, and wires them into your PATH.
Install the latest release with the bootstrap script:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tx3-lang/up/releases/latest/download/tx3up-installer.sh | shOnce tx3up is on your PATH, it manages itself and the rest of the toolchain.
tx3up # install or update everything on the active channel
tx3up install # same as above
tx3up install --release v0.8.0 # pin the manifest to a specific toolchain release
tx3up check # report available updates without installing
tx3up use stable # switch the default channel (stable, beta, nightly, …)
tx3up show # list installed tools and their versionsGlobal flags (also available as env vars):
| Flag | Env var | Purpose |
|---|---|---|
--root-dir |
TX3_ROOT |
Installation root (default: ~/.tx3) |
--channel |
TX3_CHANNEL |
Override the active channel for one command |
--github-token |
GITHUB_TOKEN |
Authenticated GitHub requests (higher rate limits) |
tx3up is a thin orchestrator around channel manifests published as assets on releases of tx3-lang/toolchain.
- Channel manifest. For the active channel,
tx3updownloadsmanifest-<channel>.jsonfrom the latest (or pinned) toolchain release. The manifest lists every tool in the toolchain with its source repo and required semver. - Version check. Each installed binary is invoked with
--versionand compared against the manifest's requirement. Tools that are missing or out of date become update candidates. - Install. For each update,
tx3upqueries the tool's own GitHub releases, picks the newest release matching the manifest'sVersionReq, downloads the asset for the currentos/arch, and extracts the binary into the channel'sbin/directory. - PATH wiring. On first install,
tx3upappends the channelbin/to the user's shell profile so the tools are available in new shells.
~/.tx3/
├── default -> stable # symlink to the active channel
├── stable/
│ ├── bin/ # installed tool binaries
│ ├── manifest.json # cached channel manifest
│ └── updates.json # cached update state
├── beta/
└── nightly/
Channels are fully isolated — switching with tx3up use <channel> just repoints the default symlink, so multiple channels can coexist without reinstalling.
src/main.rs— CLI entrypoint, global config, channel/path resolution.src/cmds/— one module per subcommand (install,check,use,show).src/manifest.rs— manifest fetching, caching, and staleness checks.src/updates.rs— comparing installed versions against manifest requirements.src/perm_path.rs— adding the channelbin/directory to the user's shell profile.src/bin.rs— binary extraction helpers (tar.gz / tar.xz).
See CONTRIBUTING.md for the development workflow and tests/e2e/README.md for the end-to-end test harness.