Install / Development preview
Everything for
your end of the link.
Install Goblin Modem on each computer attached to a radio. Then connect them with the Mac-to-Linux setup guide.
01 / macOS
The menu bar app.
Apple Silicon, macOS 26 Tahoe. Start with Homebrew, then run these commands as your normal user:
brew tap goblinreactor/tap https://brew.goblinreactor.com/homebrew-tap.git
brew update
brew install --cask goblinreactor/tap/goblin-modem
open /Applications/GoblinModem.appWhat gets installed
GoblinModem.app, the privileged launchd helper, the radio driver, the Mosh launcher and helper repair/removal tools. Homebrew installs Python 3.14 and the radio-capable Goblin Mosh package.
First launch
The installer asks for administrator authentication. Open the menu bar app and choose Radios & addresses…. If its helper is missing, choose Install or repair helper….
This preview is ad-hoc signed; the installer is not Developer ID signed or Apple-notarized. Install through the cask so the package checksum and dependencies are checked.
02 / Linux
The browser GUI.
amd64 on Ubuntu 22.04, 24.04 or 26.04, and Debian 12 or 13. A desktop session needs a browser and a polkit authentication agent. Add the repository once:
sudo apt update
sudo apt install ca-certificates curl gnupg
(
set -eu
. /etc/os-release
case "$ID:$VERSION_CODENAME" in
ubuntu:jammy|ubuntu:noble|ubuntu:resolute|debian:bookworm|debian:trixie) ;;
*) echo "This OS release is not supported." >&2; exit 1 ;;
esac
test "$(dpkg --print-architecture)" = amd64 || {
echo "Goblin Modem currently requires amd64." >&2; exit 1;
}
goblin_keydir=$(mktemp -d)
trap 'rm -rf "$goblin_keydir"' EXIT
curl -fsSL https://apt.goblinreactor.com/goblinreactor-archive-keyring.gpg \
-o "$goblin_keydir/keyring.gpg"
goblin_fingerprint=$(gpg --batch --show-keys --with-colons \
"$goblin_keydir/keyring.gpg" | awk -F: '$1 == "fpr" {print $10; exit}')
test "$goblin_fingerprint" = B7B61E8CB85A9270530364F23273CB62402FC793
sudo install -d -m 0755 /etc/apt/keyrings
sudo install -m 0644 "$goblin_keydir/keyring.gpg" \
/etc/apt/keyrings/goblinreactor.gpg
printf '%s\n' \
'Types: deb' \
'URIs: https://apt.goblinreactor.com/' \
"Suites: $VERSION_CODENAME" \
'Components: main' \
'Architectures: amd64' \
'Signed-By: /etc/apt/keyrings/goblinreactor.gpg' \
| sudo tee /etc/apt/sources.list.d/goblinreactor.sources >/dev/null
)
sudo apt update
sudo apt install goblin-modem
goblin-modemIf the Goblin APT repository is already configured for this OS release, use only the final three commands. Open Goblin Modem from the Applications menu, or run goblin-modem. Authenticate to start the controller; it opens 127.0.0.1:8777.
APT installs the driver, desktop launcher, serial permissions, privileged launcher, Python, OpenSSH client/server and Goblin Mosh. Internet sharing remains off. Closing the browser leaves the controller running; use Disconnect or goblin-modem --stop to stop it.
03 / Keep it current
Update, rebuild, or remove.
Mac
brew update
brew upgrade goblinreactor/tap/goblin-mosh
brew upgrade --cask goblinreactor/tap/goblin-modem
# Remove the app and helper:
brew uninstall --cask goblinreactor/tap/goblin-modemLinux
sudo apt update
sudo apt upgrade
# Remove Goblin Modem:
sudo apt remove goblin-modemThe September 18 preview was rebuilt in place for the Wi-Fi / Modem labels, at the same version. If you installed the earlier build, refresh it explicitly:
brew reinstall --cask goblinreactor/tap/goblin-modemsudo apt update
sudo apt install --reinstall goblin-modemUser profiles and keys are retained on removal. The Mac uninstaller stops its helper and restores managed filtering. The Linux uninstaller stops package controllers.
Build from source
Download the complete source archive, including vendored Go dependencies. Use Go 1.26.3 or newer; Mac app builds also need current Apple Command Line Tools. The source Makefile provides:
make test
make linux-deb # Linux .deb in dist/
make macos-pkg # Mac .pkg in dist/; run on macOSBuild details, checksums and dependency sources are on the Homebrew and APT package sites.
Next: make the radio link →