Installation¶
Build from Source¶
Requires Go 1.25+.
Cross-Compile¶
Makefile Targets¶
| Target | Description |
|---|---|
make build | Build for current OS |
make build-linux | Cross-compile for Linux amd64 |
make build-windows | Cross-compile for Windows amd64 |
make build-darwin | Cross-compile for macOS amd64 |
make build-all | Build Linux, Windows, and macOS |
make run | Build and run locally |
make clean | Remove build artifacts |
Version Injection¶
All build targets inject the version at build time via -ldflags. The version is auto-detected from the latest git tag:
Release builds (GitHub Actions) inject the exact git tag (e.g. v1.2.3) into the binary.
Verify¶
Install as a System Service¶
After building, you can register tw as a system service so it starts on boot and runs in the background.
1. Copy the binary to a system path:
2. Install and start the service:
This creates a systemd unit at /etc/systemd/system/tw.service that runs tw dashboard with automatic restart on failure.
3. Manage the service:
1. Place the binary in a permanent location:
2. Install and start the service (run as Administrator):
This registers a Windows service that starts automatically on boot.
3. Manage the service:
You can also manage it from the Services console (services.msc) — look for Tunnel Whisperer.
1. Copy the binary to a system path:
2. Allow the binary in macOS security settings:
On first run, macOS Gatekeeper will block the unsigned binary. To allow it:
- Open System Settings > Privacy & Security
- Scroll to the Security section — you will see a message about
twbeing blocked - Click Allow Anyway
- Run
twagain and click Open in the confirmation dialog
Alternatively, remove the quarantine attribute directly:
3. Install and start the service:
This creates a launchd plist at /Library/LaunchDaemons/com.tunnelwhisperer.tw.plist that keeps the service running and starts it on boot.
4. Manage the service:
The service runs tw dashboard, which auto-starts the server or client based on your config mode. See CLI Reference — Running as a Service for details.
Config Directory¶
Tunnel Whisperer stores configuration in a platform-specific directory:
| Platform | Path |
|---|---|
| Linux | /etc/tw/config/ |
| macOS | /etc/tw/config/ |
| Windows | C:\ProgramData\tw\config\ |
Override with the TW_CONFIG_DIR environment variable.