Towertail
Changelog

What changed in each release

The notes come from GitHub Releases. The app tags are vX.Y.Z. The server tags are server/vX.Y.Z.

App

v0.3.0

This release adds disk usage: find what uses the disk space of a host, and get a cleanup script.

What is new

  • Usage view. In Full View, open DISK and select Usage. Towertail scans a folder of the host and shows a map of the folders by size. Click a folder to open it.
  • Read-only scans. The towertail-sampler scan command reads the file sizes. It deletes nothing, and it does not read the contents of files.
  • Recommendations. Towertail shows caches, logs, old releases and other items that you can remove. The list has two groups: "Safe to remove" and "Review first".
  • Cleanup script. Select items, then click Copy script. Paste the script into a terminal on the host. The script stops on a different host, and it tells which lines need sudo. Towertail never runs the script.
  • Linux, macOS and Windows hosts. The rules know the usual caches of each OS, for example apt, Homebrew, Xcode, npm, pip, Go and Docker.
  • Through the server. When the app uses the self-hosted server, the sampler of the host runs the scan. Turn on "Allow disk scans" for the node, and run the sampler with --allow-disk-scan.
  • The app bundles towertail/sampler v1.1.0. Before a scan, the app updates the sampler on the host when the sampler is old.

Known limits

  • On this Mac, macOS blocks some folders (Mail, Messages, Safari) until you give Towertail Full Disk Access. The map shows these folders as "No access".
  • A scan of a large disk can take one minute or more.
  • The Windows app has no release.

Report problems on GitHub Issues.

v0.2.0

This is the first public release of Towertail for Mac.

Towertail monitors a small fleet of remote servers from your menu bar. It usually connects over a Tailscale network. One panel shows one card for each host, with live CPU, memory, disk, and network values, sparklines, and threshold colors. It is like Stats.app, but for your servers.

What is in this release

  • Menu bar panel. One card for each host, with live values, sparklines, and threshold colors. Filter the cards by tag or by name.
  • Full View. One window for each host, with charts for CPU, memory, disk, and network, a process table, open ports, and health details.
  • Agentless collection. The app uses your ~/.ssh/config and /usr/bin/ssh. On the first connection, it copies the towertail-sampler binary to ~/.towertail/ on the host. The host needs no daemon and no open port. The app also updates the sampler when a new app release bundles a new sampler.
  • Supported hosts. Linux (amd64, arm64, armv7) and macOS (Apple silicon, Intel). The app bundles towertail/sampler v1.0.0.
  • Host discovery. The app reads tailscale status --json and shows new hosts on your tailnet. You can also add hosts manually or import a list.
  • Alerts. Set thresholds for each metric. The app sends a macOS notification when a host crosses a CPU, memory, disk, or health threshold for a set time.
  • History. The app keeps 7 days of samples in a local SQLite database.
  • Automatic updates. The app finds new releases on GitHub, checks the code signature and the notarization, and replaces itself when you do not use it.

Install

With Homebrew:

brew install --cask towertail/tap/towertail

Or download Towertail.zip below, unzip it, and move Towertail.app to /Applications. Then open it and look for the server.rack icon in the menu bar. Press ⌘, to open Preferences and add servers.

The app is signed with a Developer ID and notarized by Apple.

Requirements

  • macOS 14 Sonoma or later, on Apple silicon or Intel.
  • SSH access to each host. Key authentication is best. Password authentication also works (the app keeps the password in your login keychain).
  • Tailscale is optional. The app uses it only for host discovery.

Known limits

  • The Windows app has no release. Build it from source (apps/windows/README.md).
  • The self-hosted server (server/) is optional and new. The Mac app connects to it only through the environment variables TOWERTAIL_REMOTE_URL and TOWERTAIL_REMOTE_TOKEN. There is no setting in Preferences for it yet.
  • The Mac app cannot monitor Windows hosts.
  • The sampler does not read SMART data, temperatures, or per-process I/O that needs root.
  • Homebrew does not upgrade the app (auto_updates true), because the app updates itself. Use brew upgrade --cask --greedy towertail to make Homebrew do it.
  • brew uninstall --zap does not remove SSH passwords from the keychain (service com.towertail.ssh).

Report problems on GitHub Issues.

Server