We check your sites from eight cities and ring your phone until you answer.

Tissue Mast watches your URLs, your ports and the cron jobs nobody else is watching. When a site goes down, the person on call gets a page that rings through silent mode and Do Not Disturb, and it keeps ringing until someone picks it up.

Free for ten sites. Paid plans are one price for the account, with up to 10 people on the Team plan and 25 on the Company plan, and the first 14 days are free.

Start monitoring free See pricing No card. Sign in with your email, Google or GitHub. Have an account? Sign in.
api.example.com one round, 03:14:07 UTC
Los Angeles503212 ms
Kansas City503148 ms
Chicago503131 ms
Vint Hill, Virginia20096 ms
Northern Virginia50388 ms
Beauharnois, Quebec503102 ms
Frankfurt503290 ms
Nuremberg200311 ms
Down: 6 of 8 locations, on 5 networks. Checked again 10 seconds later, still down. Paging Sam, who is on call.
An example. A site is down when more than half the locations fail, on at least two networks, twice in a row. One city failing is usually the network between us and you, not your site, so it doesn't wake anybody. Where the checks come from.

what it watches

probes

Give us a URL or a host and port. We fetch it from all eight locations every 5 minutes on Free, every 30 seconds on a paid plan, and check the status code, the body, the response time and when the certificate expires.

https://api.example.com/health
expect   200, body contains "ok"
every    30 seconds
slow     over 2 s
pages    #backend, page priority

vitals

For the jobs that should run and nobody notices when they don't. The job checks in when it finishes. If a check-in doesn't arrive in time, you get paged.

# nightly backup, expected by 03:15
0 3 * * *  backup.sh && \
  curl -fsS https://mast.tissue.dev/mk_5d20b3e7f1

anything else

A channel is a URL. Anything that can make an HTTP request can page you: a health check, a CI run, Grafana, Home Assistant. The sender says how urgent it is, in the query string or in a JSON body; the manual has every field.

curl -d "db1 unreachable" \
  "https://mast.tissue.dev/mk_9f2a41c8b7?priority=page"

curl -H "Content-Type: application/json" \
  -d '{"title": "db1",
       "body": "unreachable",
       "priority": "page",
       "key": "db1"}' \
  https://mast.tissue.dev/mk_9f2a41c8b7

the page

Pages go to Mast Pager, our app for iPhone and Android. A page rings through the silent switch, Focus and Do Not Disturb, and it repeats until somebody acknowledges it, from the lock screen, a notification button or an Apple Watch.

Everything else gets the level the sender asked for: quiet, normal or loud. Four hundred failures from one flapping job fold into one row, and a probe that recovers closes its own page.

If you can't take a page for the next hour, pause them. Pages still arrive, without a sound, and if you have an escalation partner they're paged straight away.

The server records every step, so the morning after you can see exactly what happened.

  1. 03:14:17api.example.com confirmed down
  2. 03:14:18sent to Sam's iPhone, delivered
  3. 03:14:18rang through silent mode
  4. 03:16:18rang again, no answer
  5. 03:17:02acknowledged by Sam from the lock screen
  6. 03:31:47api.example.com back up, page closed
Download Mast Pager on the App StoreGet Mast Pager on Google Play
Mast Pager's feed. An open page from the channel paging reads db-01 unreachable from 6 of 8 places, with a red Acknowledge button and the line: nobody acknowledges by 12:26, then Sam gets paged. Under it a row of vital dots says 2 vitals are late or silent, then ordinary rows from stripe, deploys and certs. The Pause pages screen. Pages are paused for another 46 minutes, with an End now button and a choice of 1 minute, 30 minutes, 1 hour or 2 hours. A page that arrives during a pause lands in the feed without a sound, and Sam is paged straight away.

on call, for one person or twenty-five

On your own, a second phone is your backup: if the first doesn't answer, the other one rings. With a team, a page goes to whoever's on call. If they don't answer within five minutes it goes to the next person, and whoever answers stops it for everyone. The lock screen shows who has it and how long until it moves on.

Rotations hand off daily, weekly, every other week or every so many hours, at a time in your time zone, and stay at that hour when the clocks change. Overrides cover sick days and swaps, for whole days or a few hours. Each rotation has a calendar feed, so everyone on it sees their shifts in their own calendar.

Most on-call tools charge $21 to $25 per person per month. Team is $79 for up to ten people and Company is $149 for up to 25, so adding someone to the rotation costs nothing.

Policies, schedules, probes and channels are all in the API, so you can keep them in a file in your repo. Channels as code.

The On call screen in the Mast dashboard. Five responders with their phones and quiet hours; Sam Okafor is on call for the backend rotation until 12 October at 09:00. The rotation hands off every Monday at 09:00 Los Angeles time, with Ana, Priya, Marco and Sam next. The production escalation policy pages whoever is on call, then the next person after 5 minutes, then everyone after 15, and repeats every 2 minutes until someone acknowledges.

status pages

Pick the probes and vitals your users care about and they get a public page at tissue.systems/mast/status/your-name, showing what each one sees right now. An outage can post itself as an incident the moment it starts, and you write the updates: investigating, identified, resolved. Solo includes three status pages, Team five, Company ten, and on Solo and up a page can live on your own subdomain, such as status.example.com. How status pages work.

A public status page titled Acme status, with a red banner reading Something is down. Five components with 90 days of daily bars: Website at 100%, API at 99.92%, Checkout slow at 99.95%, Database down at 99.95%, Nightly backups at 98.88%. Below are two updates from today and three past incidents.

plans

Each plan includes everything in the one before it. You pay per account, not per person: up to 10 people on the Team plan and 25 on the Company plan.

just you

Free
$0
an email address
1 person

Sign in with your email and we'll start checking your sites.

  • 10 probes, checked every 5 minutes
  • 10 vitals and 10 channels
  • 10,000 messages a month
Create a free account

Only want a pager? Mast Pager works on its own with no account: 2 channels, 1 vital and 1,000 messages a month.

Solo
$19/mo
or $190 a year
1 person, all your phones

For when you're the whole on-call rotation and want a second phone as backup.

  • your other phone, paged when the first goes unanswered
  • 100 probes, checked every 30 seconds
  • 250 vitals and 100 channels
  • 3 status pages, on your own domain if you like
  • a weekly report by email and each month's uptime
  • domain expiry notices, and the route to your site when a check fails
  • 25 Investigate runs a month (coming soon)
  • 30 days of history

a team

Team
$79/mo
or $790 a year
up to 10 people

For a small team taking turns. If nobody answers, the page moves on to the next person.

  • one on-call rotation, handoff at a time you set
  • escalation: on call, the next person, then everyone
  • quiet hours per person; handing the page to the next person is coming soon
  • 500 vitals, 250 probes, 250 channels
  • 5 status pages
  • 90 days of history, audit log, export
  • pay by card or invoice
Company
$149/mo
or $1,490 a year
up to 25 people

For several services, each with its own rotation and rules.

  • unlimited schedules, overrides, swaps, calendar feed
  • an escalation policy per service
  • sign-in with your company's SSO (coming soon)
  • 2,000 vitals, 500 probes, 1,000 channels
  • 10 status pages
  • 365 days of history

Every paid plan starts with 14 days free; you give a card at checkout and nothing is charged until the trial ends. Need more than your plan has, or more than 25 people? Write to us. It's still one price for the account. We won't cut the free limits.

Pricing in full: what counts toward each limit, what a team pays at each size, and what happens when a card fails or you move to a smaller plan.

Every limit, side by side
FreeSoloTeamCompany
price and people
a month$0$19$79$149
a year$0$190$790$1,490
what you needan email addressan accountan accountan account
people included11, all your phonesup to 10up to 25
what pages you
channels101002501,000
vitals102505002,000
probes10100250500
probe interval5 minutes30 seconds30 seconds30 seconds
messages a month10,000100,000500,0002,000,000
who gets paged
on-call schedulenonenoneone rotationunlimited, overrides, swaps, calendar feed
escalationnoneyour other phonea chain through the teama policy per service
quiet hoursper channelper channelper person; hands off (coming soon)per person; hands off (coming soon)
everything else
status pagesnone3510
status page on your own domainnoneyesyesyes
weekly report by emailnoneyesyesyes
Investigate runs (coming soon)none25 a month150 a month500 a month
history7 days30 days90 days, export365 days, export
audit lognonenoneyesyes
SSO (coming soon)nonenonenoneyes
billingnonecard, 14 days free firstcard or invoice, 14 days free firstcard or invoice, 14 days free first

against the tools you'd replace

The monitor and the pager are one product, priced for the account. The thing that notices, the thing that decides it's worth waking you and the thing that rings your phone are the same system, and nobody on it is a seat. Five pages set that against the tools a team usually has already, each written from the other company's own pricing page on the date it was checked. Where the other one wins, the page says so.

All five, with every seat price in one table. If a figure is wrong, tell us and we'll fix it.

why it stays up when you're down

The servers that deliver pages don't run anything else, and they keep their own database, in three data centers in the US and Europe. If the thing you're watching goes down, it doesn't take your pager with it. How delivery works.

We use it ourselves. Our own probes, watchdog and server alerts all page us through Tissue Mast.

built on tissue cloud

Tissue Mast runs on Tissue Cloud, our compute platform, and your Tissue Mast account signs you in to it too. You can deploy JavaScript or WebAssembly functions to a URL there, with a SQL database, file storage and scheduled runs.

A scheduled job you deploy there is already a vital. If it doesn't run, you get paged, with no check-in code to write and no key to copy.

You don't need any of that to use Tissue Mast.

# ribo.toml
name = "invoice-run"

[[pulse]]
schedule = "0 6 * * *"      # pages you if it doesn't run

[[bindings]]
type    = "vault"
binding = "PAGE_URL"        # a channel URL

# cell.js
export default {
  async pulse(event, env) {
    const late = await findLateInvoices(env);
    if (late.length) await fetch(env.PAGE_URL, {
      method: "POST", body: `${late.length} invoices unpaid`
    });
  }
};