Skip to content

Installation

Tony West edited this page Jun 26, 2026 · 5 revisions

Installation

Joro is a single self-contained binary. Install a prebuilt release, or build from source.

Install from a release

Prebuilt binaries are published on the releases page for Linux, macOS, and Windows on both amd64 and arm64. The UI is embedded, so no Go or Node toolchain is required.

Release artifacts are named joro_<version>_<os>_<arch>.tar.gz (Linux/macOS) or joro_<version>_<os>_<arch>.zip (Windows), alongside a checksums.txt.

Linux / macOS

# Resolve the latest release tag from the /releases/latest redirect
VERSION=$(curl -fsSLI -o /dev/null -w '%{url_effective}' \
  https://github.com/BishopFox/joro/releases/latest | sed 's#.*/##')
TARGET=linux_amd64   # or linux_arm64, darwin_amd64, darwin_arm64

curl -LO "https://github.com/BishopFox/joro/releases/download/${VERSION}/joro_${VERSION}_${TARGET}.tar.gz"
curl -LO "https://github.com/BishopFox/joro/releases/download/${VERSION}/checksums.txt"

# Linux: sha256sum -c   |   macOS: shasum -a 256 -c
sha256sum --ignore-missing -c checksums.txt

tar -xzf "joro_${VERSION}_${TARGET}.tar.gz"
sudo install -m 0755 joro /usr/local/bin/joro

Windows (PowerShell)

# Resolve the latest release tag from the GitHub API
$Version = (Invoke-RestMethod https://api.github.com/repos/BishopFox/joro/releases/latest).tag_name
$Target  = "windows_amd64"   # or windows_arm64

Invoke-WebRequest "https://github.com/BishopFox/joro/releases/download/$Version/joro_${Version}_${Target}.zip" -OutFile "joro.zip"
Invoke-WebRequest "https://github.com/BishopFox/joro/releases/download/$Version/checksums.txt"           -OutFile "checksums.txt"

# Compare against the matching line in checksums.txt
Get-FileHash joro.zip -Algorithm SHA256

Expand-Archive joro.zip -DestinationPath .

Skip ahead to First run.

Build from source

Building from source is the path for contributors and for producing custom or cross-compiled binaries.

Prerequisites

  • Go 1.23 or newer
  • Node.js 22 or newer (includes npm)

Build

git clone https://github.com/BishopFox/joro.git
cd joro
make build

This compiles the React frontend and embeds it into the Go binary, producing ./joro in the current directory.

Note: go install alone will not produce a working binary. The frontend must be built by npm before being embedded into the Go binary. Always use make build.

Cross-compiling for remote hosts

Listener and team-server deployments usually run on a remote Linux host while you develop on a different OS. Use make build-all to produce binaries for all supported targets:

make build-all

This writes to dist/:

  • dist/joro-linux-amd64
  • dist/joro-darwin-arm64
  • dist/joro-windows-amd64.exe

Copy the appropriate binary to your listener or team-server host.

First run

./joro

On startup you will see something like:

Proxy listening on :8080
UI available at http://localhost:9090
CA cert: /Users/you/.joro/ca.crt  (import into browser/OS trust store)

Open http://localhost:9090 in your browser. Next, follow Getting-Started to configure your browser and install the CA certificate.

Updating

Joro checks for newer releases at startup and in the background, and can update itself in place:

  • A release binary downloads the matching release archive from GitHub and swaps itself out.
  • A binary running from a git checkout updates with git pull && make build.

Apply the update from the prompt in the UI, or upgrade manually by re-running the steps above. See Settings to disable the automatic check (or use --disable-update-checks).

Update checks run in proxy mode only. A Listener-Mode or Team-Server instance does not check for or apply updates on its own — update those hosts manually by replacing the binary and restarting.

Data directory

Joro stores its CA certificate, key, callback database, and plugin data under ~/.joro/ by default. Override with --data-dir.

Clone this wiki locally