Pult

Monitoring for indie developers and small teams

Know what broke before your users tell you

Pult watches your servers, sites, databases, Railway and App Store — and tells you the moment something breaks: a push on your iPhone and Mac, a Telegram message, and the status page on your product's site.

Free for 2 servers, no card. The agent is open source (AGPL).

$ curl -fsSL https://pult.watch/install | sudo sh -s -- <CODE>

On your servers · the agent

  • ServerCPU 23% · RAM 64% · disk 58%
  • Sites & certificatesshop.example.com · storage503
  • DatabasesPostgreSQL · Redis
  • Docker7 containers

Services · no agent

  • Railwaydeploys · services
  • App Store Connectbuilds · review
  • Cloudflareyour zone
  • External URLsapi.shop.example.com/health
Pult 2 failures in a row → alert
iPhone
PULT · nowShop · storage is downsince 01:46 · 2 failures in a row · vps-1
Mac
Telegram

Shop · storage is down since 01:46. Responds 503.

shop.example.com — your site
Partial outage
For your AI agent
# Incident: Shop · storage — down
since 01:46 (22:46 UTC), 2 failures
«HTTP 503: storage: access denied»
Signals from everything you run flow into Pult — and out to wherever you will see them: your phone, your Mac, your team chat, your product's status page and your AI agent.

How it works

Five minutes from this page to your first alert

No dashboards to build and no checks to type in by hand. You install one agent; it tells you what it found.

  1. 30 s

    Sign in

    Email with a confirmation code, Apple, GitHub, GitLab or Google. No passwords, no card.

  2. 1 min

    One line on the server

    The dashboard gives you a line with a code: it installs the agent as a service and binds the server to your account.

  3. instant

    Pick what to watch

    The agent has already found sites, certificates, databases, disks and containers. For each: alert, show, or ignore.

  4. 2 min

    Connect services

    Railway, App Store Connect, Cloudflare — with read-only keys. External URLs — just a URL.

  5. 1 min

    Phone and Telegram

    Scan a QR code from the dashboard: alerts reach your iPhone, Mac and team chat.

What exactly the install line does
  1. Downloads the agent for your CPU (amd64 or arm64) and verifies its SHA-256.
  2. Looks around: disks, nginx sites and their certificates, databases on their usual ports, containers — and writes /etc/pult/pult.yaml.
  3. Binds the server to your account with the code: registers the agent's public key; the private key never leaves the server.
  4. Starts a systemd service under a throwaway user with a read-only view of the system.
$ curl -fsSL https://pult.watch/install | sudo sh -s -- K7Q-4MD-93X
1/4 Downloading pult-linux-amd64 ✓ sha256
2/4 Looking around this machine: 2 disks, nginx (4 sites + certificates), postgres :5432, redis :6379, 7 containers
3/4 Binding this server to your account ✓
4/4 Starting the service ✓

The script is short on purpose — read it before you run it.

What Pult sees

The agent finds what to watch by itself

Not just “the site returns 200”. The agent sits on the server and looks from inside — then you choose for each finding: alert, show, or ignore.

The machine

CPU, memory, load and every disk. Warns at 90% CPU and memory, a disk at 85% (down at 95%), load above 2.0 per core.

Sites

Every server_name in nginx. Healthy when it answers 200–399 — and, if you ask, when the page contains the word you expect.

TLS certificates

The chain must verify. A warning 14 days before expiry, an alert at 3 days — before browsers start shouting at your users.

Databases

PostgreSQL, Redis, MySQL, MongoDB and others on their usual ports. No passwords needed: PostgreSQL is asked one byte, Redis gets a PING.

Docker

Every running container: it must be up and not unhealthy. A new container shows up on its own.

Ports

Any TCP port that should accept connections — a game server, an SMTP relay, an internal API.

For developers: what the agent is
  • One static Go binary for linux/amd64 and linux/arm64 (macOS for trying it out), one dependency, no cgo.
  • Fixed disk use: history is a ring file per check — 30 days at one sample a minute is 675 KB, forever. The event journal stops at 1 MB.
  • Config is a plain /etc/pult/pult.yaml; systemctl reload pult re-reads it without a restart, a broken file is refused.
  • pult status runs every check once, right in your terminal. pult history redis -since 24h shows what happened.

Services without an agent

Railway, App Store and the rest — in the same place

Not everything you run is a VPS. The Pult server watches these itself, with read-only keys. No more four browser tabs to find out what happened.

  • Railway

    Deploys and services: a failed deploy or a crashed service is an alert, with the project and service named.

  • App Store Connect

    Your apps' builds and review status: you learn that a version was approved or rejected without refreshing the page.

  • Cloudflare

    Your zone, read through a token with “Read analytics” only.

  • Any URL, from outside

    Pult opens it every minute the way people do — and sees it even when the whole server, agent included, is down. Add a keyword so a “200 with an error inside” doesn’t count as working.

Where alerts arrive

Wherever you are — and to whoever fixes it

iPhone and Mac apps

A push with the project, what broke and since when. One tap opens the card: who checks it, how often, the reason in plain words and the original error below it.

End-to-end encrypted. The relay and Apple only see “new event”. Only your device can read the alert.

The app is free, one for iPhone and Mac: App Store soon. No Android yet — use Telegram and the web dashboard.

“Copy for agent”

One button turns the incident into text for Claude Code, Cursor or any AI agent: what is down and since when, the reason, what is next to it, recent deploys. The agent starts fixing instead of spending 20 minutes collecting facts.

# Incident: Shop · storage — down since
01:46 (22:46 UTC), 14 min
## What is down
- storage (check shop-storage on vps-1,
  site) — 15 failures in a row:
  «HTTP 503: storage: access denied»
- Next to it in Shop: site ✓ · db ✓

Telegram

Connect a chat with one button in the dashboard — your own or the team's. Same alerts, same wording, recovery with the duration.

PultShop · storage is down since 01:46 · 2 failures in a row · checked by vps-101:48

PultShop · storage is back. Was down 6 min, 01:46–01:5201:52

Status page on your site

Your users see the state too. A pulsing dot on your home page and a full page on your /status — two lines of HTML each, in your site's font and colors.

All systems operationalPartial outage
<a data-status-page="shop"></a>
<script defer src="https://pult.watch/widget.js"></script>

Honest rules

Doesn’t wake you for nothing. Doesn’t stay green when it doesn’t know.

1 min· 30 s

Every check runs every minute on Free and every 30 seconds on paid plans.

2×

An alert only after two failures in a row: one network hiccup doesn’t wake anyone at night. An unconfirmed failure is shown separately: “1 failure, waiting to confirm”.

0 s

Recovery is reported on the first good result — with how long it was down: “Was down 18 min, 17:50–18:08”.

?

Never green on stale data. If a server goes silent, its checks turn grey “unknown” with the time of the last data — and you get a separate alert: “server is silent”.

Every check is signed: which project, who checks it (agent vps-1, Railway, App Store), how often and since when.

Security and privacy

It only reads. And you can check that.

Read-only agent

Every check connects, asks and hangs up. Nothing writes to your services. The service runs as a throwaway user with a read-only view of the system.

Open source (AGPL-3.0)

The agent is open: read the probes before you install — they are short on purpose. The install script is too: /install.

End-to-end alerts

Each alert is sealed separately for each of your devices and signed by the agent. Device keys live in the Secure Enclave.

Keys stay keys

Railway, App Store Connect and Cloudflare keys are read-only, stored encrypted (AES-256-GCM) and never shown again. The agent's private key never leaves the server.

No contents

The agent sends names and states of checks — never the contents of your databases, files or logs.

Leave any time

Export everything from Settings; deleting the account removes it all at once. Removing the agent is three commands.

The technical details, and the one honest caveat

Alerts are sealed with HPKE (P-256, AES-256-GCM) for each paired device and signed by the agent; the relay that wakes phones only ever sees ciphertext. The dashboard does show check names, states and messages — that is how you see everything from a browser.

The caveat: since one sign-in links all your servers, the Pult server could in theory register a fake device. If that matters to you, pair a phone with an agent directly — pult pair shows a QR code right in the terminal, and that pairing bypasses our server entirely.

Compared

Pult and a typical uptime pinger

Services like UptimeRobot or Better Stack Uptime are good at checking sites from outside. Pult is built for a different job: the whole picture of a small product, from inside and outside.

PultTypical uptime pinger
Sites, APIs, ports from outsideYesYes
Inside the server: disks, memory, databases, containersYes, found automaticallyUsually no, or a separate product
SetupOne line per serverEach check added by hand
Railway, App Store Connect, CloudflareIn the same placeUsually not
Fastest interval30 s (paid), 1 min (Free)30 s – 5 min, by plan
Native appsiPhone and MacOften iPhone and Android
End-to-end encrypted pushYesNot that we know of
Incident text for an AI agentYesNo
Status pagesYesYes
Phone calls, SMS, on-call rotationsNoOften yes
Checks from many regionsNo: inside + one outside pointOften yes
You pay forServers with the agent; people includedMonitors or seats
Open-source agentYes, AGPL-3.0No

From the vendors' public pricing pages as of 25 Oct 2026. If you need phone calls and on-call rotations, a dedicated on-call tool is honestly the better choice.

Pricing

Pay for servers. Everything else is included.

External checks, connectors, status pages, devices and Telegram come with every plan. Alerts never switch off — not even above a limit.

Free

Try it on your own two servers

$0

forever

  • 2 servers with the agent
  • 10 external checks, every minute
  • 1 connector (Railway, App Store, Cloudflare)
  • 7 days of history
  • 1 status page with the Pult label
  • 2 devices with push
  • Telegram
Start free

Team

For a team on call

$29

per month · charged as 1 299 ₴

  • 20 servers ($1 per extra server)
  • 200 external checks
  • 90 days of history
  • 10 status pages
  • 20 devices
  • 5 members
  • Several Telegram chats
Choose Team

Agency

For agencies and studios

$79

per month · charged as 3 499 ₴

  • 60 servers ($1 per extra server)
  • 600 external checks
  • 90 days of history
  • Unlimited unbranded status pages
  • 50 devices
  • 15 members
  • A chat per client
Choose Agency

A year costs 10 months.
Sign up before 31 Dec 2026 and get Indie free for 30 days, no card.

Compare the plans in detail →

Questions

Frequently asked

What do I need to start?

An email address or an Apple ID, and a Linux server where you can run one command with sudo. No card. If you have no servers (only Railway, Vercel and the like), you don't need the agent at all — connect services and add URLs.

How do alerts work?

An agent or the Pult server checks every minute (30 s on paid plans). After two failures in a row you get a push on your iPhone and Mac and a message in Telegram; the status page on your site changes color. Recovery is reported on the first good check, with the duration. If a server goes silent, you get an alert about that too. The dashboard has a “test alert” button to check that everything arrives.

I'm on Railway / Vercel / Fly, with no servers of my own. Will it work?

Railway connects directly: deploys and services, with a read-only token. Vercel, Fly, Render and others work through external URL checks — best on an /api/health that itself checks your database and storage and answers with a keyword. App Store Connect and Cloudflare connect the same way as Railway.

What data do you store?

Your account (email or Apple ID), names and states of checks with their messages and times, devices' public keys, encrypted read-only service keys, payment status from monobank (never full card data). History is kept 7–90 days depending on the plan. We never get the contents of your databases, files or logs, and we can't read the push alerts the agent encrypts for your devices. Export and delete it all in Settings. Details: privacy policy.

What is a “server” in the price?

A machine with the Pult agent. External checks, connectors, status pages and devices come with the plan. Above the limit, alerts never switch off: a new server is listed but not watched until you upgrade or remove another.

Can my team use it?

Team has up to 5 members and several Telegram chats, Agency up to 15 and a chat per client. You pay for servers, not for people.

How do I pay?

By card through monobank, in hryvnias — a foreign card works too, your bank converts. The US dollar prices are for reference. The invoice and receipt are in the dashboard, under Billing. In the iPhone and Mac app, plans will also be available through Apple.

How do I cancel?

Dashboard → Billing → Cancel. The plan works until the end of the paid period, then you are on Free. Alerts never switch off and your data stays.

Is there an Android app?

Not yet: iPhone and Mac only. On Android use Telegram and the dashboard in the browser.

Is the agent open source?

Yes, AGPL-3.0: read it, build it yourself, change it. The probes are short on purpose, so you can check that the agent only reads.

Your first alert in five minutes

Free for two servers, no card. Indie free for 30 days if you sign up before 31 Dec 2026.

$ curl -fsSL https://pult.watch/install | sudo sh -s -- <CODE>