What is Tissue Mast?
Tissue Mast is uptime monitoring that rings your phone. It checks your sites from eight cities, watches the cron jobs that should run and quietly don't, and when something breaks it pages whoever is on call, through silent mode and Do Not Disturb, until somebody answers.
It has two halves:
- Tissue Mast, the service, at tissue.systems/mast/app. Probes, vitals, channels, on call, incidents and status pages live here, on a Tissue Mast account. Free for ten sites.
- Mast Pager, the app for iPhone and Android. It's what rings. It also works on its own with no account, as a pager anything can post to.
The servers that deliver pages don't run anything else and keep their own database, so the thing you're watching can't take your pager down with it.
Start here
- Watch a website. Watch your first site: make an account, add a probe, get Mast Pager on your phone, and send yourself a test page. About five minutes.
- Watch a cron job. Vitals: add one line to the end of a crontab entry and you're paged when it stops running.
- Only want a pager. Mast Pager: install the app, make a channel,
curlit. No account.
The pieces
Probes are the checks we run. Give us a URL, a host and port, a certificate, a DNS record, a host to ping or a mail server, and every round we check it from eight locations on six networks. A site is down when more than half the locations fail, on at least two networks, and a second round 10 seconds later agrees. One city failing doesn't page anybody. Probes.
Vitals are the checks your jobs run. The job checks in when it finishes, and a missed check-in is the alert. A crontab line ending in && curl -fsS <url> is a monitored backup. Vitals, and run signals for start, fail and exit codes.
Deploy markers tell Mast you shipped. Every probe on the channel checks at once, a page that opens within the hour names the deploy, and a deploy job can wait for the probes and fail when one is down. Deploys.
Channels are where alerts go. Each one is a URL, so anything that can make an HTTP request can page you: Grafana, a CI job, Home Assistant, a shell script. A channel has a default level, a ceiling it can never go above, quiet hours and a dedupe window. Channels and levels.
Levels decide what the phone does with a message:
| Level | What the phone does |
|---|---|
quiet |
Into the feed. No sound, no banner |
normal |
A banner and a sound, like any app |
loud |
Time-sensitive: through a Focus, once, no repeat |
page |
Rings through silent mode and repeats until somebody acknowledges it, then moves to the next person |
On call decides who gets a page. Rotations, overrides, escalation steps, and per-person quiet hours. On call.
Incidents are what all of the above produce: one row per thing that went wrong, with who was paged, who acknowledged it, and what closed it. Incidents.
Status pages show your users what your probes and vitals see. Status pages.
Coming soon
Everything linked above works on production and pages a real phone. These are next, and the web app marks them where you'd use them:
- Status page email to subscribers.
- Investigate, an agent that looks into an incident on the hosts you name. It's listed on the paid plans and isn't running yet.
- Single sign-on for an account. Members sign in with their email, Google, GitHub or a passkey.
Where to go next
- Wiring up the things that should page you: Sending alerts, Home Assistant, Channels as code.
- Scripts, tokens and every route: The API.
- Something paged and you want to know what happened to it: Delivery.
- What each plan allows: Plans and limits and Billing.
Questions reach support@tissue.systems.