Rackpulse app icon
RackpulsemacOS menu bar app for your servers

Your servers in your Mac menu bar

Rackpulse shows your cloud servers from all your projects: whether they are running, how busy they are, and what they cost this month. It sends a notification when something goes wrong. Connect a provider with an API key, and add the agent to see inside a server.

v0.2.1 · macOS 14 or later · Hetzner Cloud supported · free, open source (MIT) · no account, no telemetry

Rackpulsenow
web-1 needs a reboot to finish updates Started 08:12. Rule: Reboot required.
Rackpulse panel with three servers in two projects, Shop and Tools, with CPU, traffic, and a note that web-1 needs a reboot Rackpulse server page for web-1 with memory, disk, and uptime tiles, CPU, memory, disk and network charts, and 30 days of uptime Rackpulse Docker tab for web-1 with the app Compose project, three healthy containers, and Docker disk usage Rackpulse Costs tab with the month to date, the forecast, costs per project and resource, and an unattached volume under idle spend

fig. 1 · the panel, with sample data

01Providers and agentagent optional

Connect a provider, add the agent where you need it

Rackpulse reads your cloud provider's API with a key you create, so it needs nothing on your servers. The agent is a small read-only Linux program that adds what a provider's API can't see. You can mix both: some servers with the agent, some without.

Hetzner Cloud
SupportedOne API token per project. Servers, volumes, IP addresses, firewalls, metrics, and prices
More providers
In progressThe same experience through each provider's API
Agent only
In progressServers on any host, with the agent and no provider key
Simpleprovider API keyAgentkey and agent
Servers
Running status and a one-line summary
CPU, disk I/O, and network charts
Traffic against the included amount
Power controls
Costs, budgets, and idle spend
Inside the server
Memory and load
Disk space per file system
Failed services and pending reboots
Docker
Containers with health, restarts, CPU, and memory
Container pages and Docker disk usage
Uptime
From the provider's start and stop history
Recorded on the server, including crashes the provider can't see
Installed on your serversnothingread-only agent
02What you seewith a provider key

Every server and its cost, one click away

Simple

Everything here works with a provider's API key alone. Nothing is installed on your servers.

One status line

"All 5 servers running" or "1 not running · 2 alerts" across all projects, in the colour of the worst alert.

Grouped by project

Servers from all your projects, with problems sorted to the top. Switch to a single project from the menu.

Charts

CPU, disk IOPS, and network for 1 hour, 6 hours, 24 hours, 7 days, or 30 days. Hover a chart to read any moment.

Uptime

The last 24 hours and 30 days, from the provider's start and stop history and Rackpulse's own checks.

Power controls

Start, shut down, reboot, power off, and reset, each confirmed first. Needs a key that can write.

Costs

Month to date and the forecast to month end, per project, from the provider's list prices, with an optional budget. Stopped servers that still bill are listed separately.

Environments

Tag each server as Production, Staging, or Development, or let Rackpulse read an env label from the provider.

Menu bar readout

A status dot in the colour of the worst alert, plus the busiest server's CPU, this month's cost, or the alert count.

Keyboard and Touch ID

Press ⌃⌥R anywhere to open the panel, then type to find a server. Optionally lock the panel with Touch ID after the Mac sleeps.

03Go deeper with the agentoptional, per server

See inside the server

Agent

Memory, disk space, Docker containers, failed services, and pending reboots live inside the server, and a provider's API does not report them. The agent is a small read-only Linux program that reports them.

Memory and load

Memory use, load, and uptime since boot, with failed systemd services and pending reboots.

Disk space

Space and inodes per file system, with an alert when one fills up or turns read-only.

Docker containers

Grouped by Compose project, with health, restarts, CPU, and memory.

A page per container

7 days of charts, ports (local only or public), volumes and mounts, networks, and the last health check.

Docker disk usage

How much space images, volumes, and build cache take, and how much of it is reclaimable.

Uptime on the server

30 days recorded on the server itself. It catches crashes the provider can't see and keeps history while your Mac sleeps.

Agent

Set up the agent on a server

optional · per server
  1. 01Open Set up agent

    Open a server in Rackpulse and choose Set up agent. Rackpulse creates a key for that server.

  2. 02Run the command on the server

    The command contains the server's own key in place of rb1_.... It checks the binary's SHA-256 checksum and installs a systemd service.

    curl -fsSL https://tools-cdn.en3sis.com/tools/rackpulse/agent/install.sh | sudo sh -s -- --pair rb1_...
  3. 03Open port 7311

    Make TCP port 7311 reachable from your Mac, as shown here. Rackpulse connects within a few seconds.

port 7311, by the address Rackpulse uses

Public IPv4 or IPv6

Add an inbound rule for TCP port 7311 to the server's cloud firewall, for example a Hetzner Cloud Firewall. If you have a fixed IP, set it as the source. If ufw is active:

sudo ufw allow 7311/tcp
Tailscale or another VPN

No public rule needed. If ufw is active:

sudo ufw allow in on tailscale0 to any port 7311 proto tcp
Private network

No public rule needed. Your Mac must reach the private network, for example through a VPN server in it.

Update the agent

Run the script again without --pair. It keeps the key, port, and address.

curl -fsSL https://tools-cdn.en3sis.com/tools/rackpulse/agent/install.sh | sudo sh
Remove the agent

Run this on the server, remove the firewall rule, then choose Remove agent in Rackpulse.

sudo rackpulse-agent uninstall
Linux on x86_64 and ARM64 systemd service under its own user read-only, can't run commands keeps 30 days of history on the server
04Screenssample data

The app

Rackpulse server list with web-1 and db-1 in Shop and staging-1 in Tools, with CPU, memory, disk, traffic, and environment tags
fig. 2 · server listSimple
Rackpulse server page for staging-1 without the agent, with CPU, disk and network charts for 7 days
fig. 3 · server page, key onlySimple
Rackpulse server page for web-1 with the agent: memory and disk tiles, a reboot note, CPU, memory, disk and network charts, and uptime
fig. 4 · server page, with agentAgent
Rackpulse Docker tab with the app Compose project, three healthy containers, and Docker disk usage
fig. 5 · Docker tabAgent
Rackpulse container page for app-web-1 with health, CPU and memory charts, ports, and volumes
fig. 6 · container pageAgent
Rackpulse Costs tab with the month to date, the forecast, costs per project and resource, and idle spend
fig. 7 · costsSimple
05Alerts12 rules

Alerts when something goes wrong

Each rule has its own threshold and duration. A server can use the global rules, its own thresholds, or no alerts.

rulefires whenmode
Server downA server is not running and you did not stop itSimple
Sustained CPUCPU stays above the threshold for the whole periodSimple
Traffic quotaOutgoing traffic passes a share of the included trafficSimple
Disk I/O anomalyDisk IOPS stay above a multiple of the 7-day medianSimple
BudgetThe month's cost forecast goes above the project's budgetSimple
Unexpected changeA server or volume appears or disappears, a server is rebuilt, or a firewall changesSimple
Disk spaceA file system passes a share of its space or inodes, or turns read-onlyAgent
MemoryMemory use stays above the threshold for the whole periodAgent
Docker containersA container is unhealthy, keeps restarting, or stopped with an errorAgent
Failed serviceA systemd service is in the failed stateAgent
Reboot requiredInstalled updates need a rebootAgent
Agent not answeringThe provider says the server runs, but the agent does not answer, for example because it frozeAgent

Notifications

Each with Snooze and Open buttons, grouped per server in Notification Center.

Quiet hours

Hold notifications back during the hours you set.

Snooze

From the notification or the popover, to silence an alert for 24 hours.

06Privacy and securityno account, no telemetry

Only your provider, the update feed, and your agents

Where data goes

Rackpulse talks to your provider's API, its own update feed, and the agents you set up. Nothing else.

Keychain

API keys and agent keys are stored in the macOS Keychain, never in files or logs.

App Sandbox

Runs in the macOS App Sandbox with outgoing network access only. Signed and notarized by Apple.

Limited changes

With a read-only key, Rackpulse can't change anything. With a key that can write, it only sends the power actions, after you confirm.

Read-only agent

The agent can't run commands or change anything, only reads from Docker, and runs sandboxed by systemd.

Per-server keys

Each server has its own key, and the agent's certificate is pinned on the first connection. Change a key from the app at any time.

07InstallmacOS 14 or later

Install Rackpulse

  1. Install the app

    Open Rackpulse.dmg and drag Rackpulse to Applications.

  2. Create an API key at your provider

    For Hetzner Cloud: in the Hetzner Console, open a project and go to Security, then API tokens. Choose Read to monitor only, or Read & Write to also use the power controls.

  3. Add the project

    Click the Rackpulse icon in the menu bar, paste the key, and click Verify and Save. Add one key for each project.

  4. Set up the agent on a server Agent

    Open a server, choose Set up agent, and run the command it shows. Skip this step to stay in Simple mode. The agent

requirements

Mac
macOS 14 Sonoma or later
Provider
An API key per project. Hetzner Cloud today
Server
Linux on x86_64 or ARM64 with systemd
Agent
Network
TCP port 7311 reachable from your Mac
Agent

Rackpulse checks its update feed once a day and asks before it installs an update. To build from source, see the README.

08Supportbugs, questions, ideas

Get help

For a bug, include your macOS version, the Rackpulse version from About, and what you expected to happen. If the agent is involved, add its version from the agent setup page.

09Questions9

Questions and answers

Which providers does Rackpulse support?

Hetzner Cloud today. More providers, and servers with only the agent, are in progress. Tell us on Discord which provider you want next.

Do I need to install anything on my servers?

No. Rackpulse works with a provider's API key. The agent is optional. It adds memory, disk space, Docker containers, and uptime recorded on the server.

Which key permission should I choose?

A read-only key to monitor. A key that can write if you also want to start, shut down, reboot, power off, or reset servers from Rackpulse. On Hetzner Cloud, these are Read and Read & Write tokens.

How accurate are the costs?

They are estimates from the provider's list prices and the hours each resource existed this month. Hetzner has no billing API, so credits and extra traffic are not included. VAT is added only when you choose prices with VAT in Settings.

Does the agent need a public port?

Your Mac connects to the agent on TCP port 7311. On a public address, add an inbound rule to the server's cloud firewall. Over Tailscale, another VPN, or a private network, no public rule is needed.

Does Rackpulse send my data anywhere?

Only to your provider's API, its own update feed, and the agents you set up. There is no account and no telemetry.

How do I remove the agent?

Run sudo rackpulse-agent uninstall on the server and remove the firewall rule. In Rackpulse, choose Remove agent on the server page.

How does Rackpulse update?

Rackpulse checks for updates once a day and asks before it installs one. To update the agent, run the install command on the server again without --pair. It keeps its key, port, and address.

Is Rackpulse free?

Yes. Rackpulse is open source under the MIT License. It is an independent project, not affiliated with Hetzner Online GmbH or any other provider.

Rackpulse app icon

Rackpulse is open source

The app and the agent are on GitHub under the MIT License. Questions, bugs, and ideas are welcome, on Discord or in an issue.