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.
| Los Angeles | 503 | 212 ms |
| Kansas City | 503 | 148 ms |
| Chicago | 503 | 131 ms |
| Vint Hill, Virginia | 200 | 96 ms |
| Northern Virginia | 503 | 88 ms |
| Beauharnois, Quebec | 503 | 102 ms |
| Frankfurt | 503 | 290 ms |
| Nuremberg | 200 | 311 ms |
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.
- 03:14:17api.example.com confirmed down
- 03:14:18sent to Sam's iPhone, delivered
- 03:14:18rang through silent mode
- 03:16:18rang again, no answer
- 03:17:02acknowledged by Sam from the lock screen
- 03:31:47api.example.com back up, page closed
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.
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.
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
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
Only want a pager? Mast Pager works on its own with no account: 2 channels, 1 vital and 1,000 messages a month.
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
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
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
| Free | Solo | Team | Company | |
|---|---|---|---|---|
| price and people | ||||
| a month | $0 | $19 | $79 | $149 |
| a year | $0 | $190 | $790 | $1,490 |
| what you need | an email address | an account | an account | an account |
| people included | 1 | 1, all your phones | up to 10 | up to 25 |
| what pages you | ||||
| channels | 10 | 100 | 250 | 1,000 |
| vitals | 10 | 250 | 500 | 2,000 |
| probes | 10 | 100 | 250 | 500 |
| probe interval | 5 minutes | 30 seconds | 30 seconds | 30 seconds |
| messages a month | 10,000 | 100,000 | 500,000 | 2,000,000 |
| who gets paged | ||||
| on-call schedule | none | none | one rotation | unlimited, overrides, swaps, calendar feed |
| escalation | none | your other phone | a chain through the team | a policy per service |
| quiet hours | per channel | per channel | per person; hands off (coming soon) | per person; hands off (coming soon) |
| everything else | ||||
| status pages | none | 3 | 5 | 10 |
| status page on your own domain | none | yes | yes | yes |
| weekly report by email | none | yes | yes | yes |
| Investigate runs (coming soon) | none | 25 a month | 150 a month | 500 a month |
| history | 7 days | 30 days | 90 days, export | 365 days, export |
| audit log | none | none | yes | yes |
| SSO (coming soon) | none | none | none | yes |
| billing | none | card, 14 days free first | card or invoice, 14 days free first | card 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.
- PagerDuty charges per seat. Five seats there is $105 a month; Team here is $79 for up to ten.
- Opsgenie hasn't been for sale since June 2025 and shuts down in April 2027. Who should move, and who shouldn't.
- Grafana OnCall archived its open-source version in March 2026. What the fourth person costs on the successor, and what the same team costs here.
- Healthchecks.io is the cron-job monitor to beat. At twenty jobs they win on price, and the page says so.
- Pushover rings the same way for $4.99 once. It watches nothing, and that's the whole difference.
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`
});
}
};