For individual users — someone who wants the temper CLI on their own machine, against a
hosted or self-hosted deployment.By the end of this playbook you will have the temper binary installed and on your PATH,
ready to run temper init and connect to an instance. No Rust toolchain, no system package
manager, no homebrew tap is required.Prerequisites#
A supported platform: macOS (Apple Silicon), Linux (x86_64), or Windows (x86_64). For
other platforms (Linux arm64, Intel Mac, Windows arm64), see
Building from source below. A deployment to point at. If someone else runs the instance, ask them for the URL. If
you are standing it up yourself, see Self-host Temper. Quick install#
macOS and Linux#
curl -fsSL https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.sh | sh
Windows (PowerShell)#
irm https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.ps1 | iex
Homebrew (macOS Apple Silicon, Linux x64)#
A versioned formula ships in the tasker-systems tap
— one formula per minor, mirroring the wire-contract pins, so a deploy base can hold a
fleet on a minor the same way a client pins a contract:brew install tasker-systems/tap/temper@0.6 # pinned to the 0.6 wire contract
Homebrew loads formulae from a third-party tap only once they are trusted. Installing (or
upgrading) by the full versioned name grants that trust for the one formula, so the
line above needs no brew trust step.The temper alias — always the current minor — is the exception: Homebrew trusts a
formula named in full, and an alias is not one, so the alias refuses until its target is
trusted. Trust the tap once and the alias keeps working as it moves between minors:brew trust tasker-systems/tap # once — covers every formula, and the alias
brew install tasker-systems/tap/temper # alias — always the current minor
For fleet pinning, the Brewfile line — trusted: true has brew bundle grant the trust,
so an unattended run does not stop on it:Patches (0.5.1 → 0.5.2) update the formula in place; brew upgrade carries them.
Within a minor the wire contract is additive-only, so an upgrade never strands you.
A new minor ships a NEW formula (temper@0.7); moving to it is a deliberate
Brewfile edit, at your cadence. Trust is per formula, so install the new one by its full
name (or carry trusted: true on the new Brewfile line).
temper update refuses on a brew install — the install carries a BREW-MANAGED
marker, and brew upgrade is the only updater there. temper update --check still
reports what's newer.A brew install and a curl-script install can coexist on one machine (brew puts the binary
at /opt/homebrew/bin/temper, the script at ~/.local/bin/temper); PATH order decides
which one runs, and the curl installer warns when a brew-managed temper is already on
your PATH. temper version --verify works identically on both.irm https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.ps1 | iex
If PowerShell warns about the execution policy, run:powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.ps1 | iex"
What the installer does#
1.
Detects your OS and CPU architecture.
2.
Queries GitHub for the latest release tag.
3.
Downloads the matching archive (a .tar.gz on macOS/Linux, .zip on Windows) plus its
SHA256 checksum file.
5.
macOS/Linux only: downloads the release's per-file manifest and checks every extracted
file (temper, the bundled libonnxruntime, LICENSE) against it. A mismatch aborts
before your existing install is touched. See
Release Verification for what this check does and
does not prove. 6.
Extracts the archive into:macOS/Linux: ~/.local/share/temper/ (respects $XDG_DATA_HOME)
Windows: %LOCALAPPDATA%\Programs\temper\
7.
Creates a temper entry on your PATH:macOS/Linux: symlinks ~/.local/bin/temper → the extracted binary
Windows: appends the install directory to your user PATH
The archive contains temper[.exe], a bundled libonnxruntime for the CLI's local
embedding pipeline (the CLI embeds locally by default — embed and extract are its
default features, so ingestion posts pre-chunked, pre-embedded text rather than relying
on the server), and a copy of the
project LICENSE.Pinning to a specific version#
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.sh | sh -s -- --version v0.1.0
$script = irm https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.ps1
& ([scriptblock]::Create($script)) -Version v0.1.0
Don't want to pipe to sh?#
Download the script, read it, then run it:curl -fsSL -o /tmp/install-temper.sh https://raw.githubusercontent.com/tasker-systems/temper/main/scripts/install/install.sh
less /tmp/install-temper.sh # inspect
sh /tmp/install-temper.sh # run
Upgrading#
Run the installer again — it overwrites the previous install in place.On macOS/Linux, a curl-script install can also self-update:temper update verifies the release before installing and works for curl-script installs on
macOS/Linux. A brew install is not self-updating — temper update refuses there, and
brew upgrade tasker-systems/tap/temper@<minor> is the updater (see the Homebrew section
above). For the verification temper update performs, see
Release Verification; for the full flag reference, see
temper update.Uninstalling#
macOS / Linux#
rm -rf "${XDG_DATA_HOME:-$HOME/.local/share}/temper"
rm -f "${XDG_BIN_HOME:-$HOME/.local/bin}/temper"
Windows#
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\Programs\temper"
Building from source#
If you are on a platform we don't ship binaries for (Linux arm64, Intel Mac, Windows arm64)
or you want a custom build, clone the repo and cargo install:git clone https://github.com/tasker-systems/temper
cd temper
cargo install --path crates/temper-cli --locked --features embed,extract
A Rust toolchain (install via rustup) A C++ compiler (for transitive deps)
ONNX Runtime installed on your system if you want local embedding support. On macOS,
brew install onnxruntime suffices.
Troubleshooting#
"temper: command not found" after install (macOS/Linux)#
Your shell's PATH doesn't include ~/.local/bin. Add it:# bash
echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc
# zsh
echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.zshrc
# fish
fish_add_path ~/.local/bin
Then open a new terminal.Windows: "temper : The term 'temper' is not recognized"#
Restart your terminal. If the problem persists, log out of Windows and back in (or reboot)
so the updated user PATH propagates.Windows: SmartScreen warning#
The temper.exe binary is currently unsigned. On first run, you may see a SmartScreen
"Windows protected your PC" dialog. Click More info → Run anyway.ONNX Runtime not found#
temper --version
ls -la ~/.local/share/temper/ # macOS / Linux
dir %LOCALAPPDATA%\Programs\temper # Windows
Next: initialize the CLI#
The installer's exit message points at temper --help, but the command you actually want
next is temper init — it writes your config and points the CLI at an instance:Answer "hosted" if you are connecting to temperkb.io, or provide your instance URL for a
self-hosted deployment. Then continue with Authenticate to sign in and
request access.Further reading#
Modified at 2026-11-15 01:09:09