Everything under the hood.

Webhooks for anything that can make a request, alerts where you already are, a remote agent for the machines, and a Mac app for the ones running the show.

Webhooks

A device can have as many webhooks as it has things to say: a heartbeat, a crash, a sensor reading. Each one has its own URL, color and alert settings.

One request

A GET is enough to say "I'm here", with anything in the query string kept as data. A POST sends JSON. Add color to tint that event, or extra_data for up to 10 KB of detail.

terminal
# heartbeat
curl https://monitory.club/api/v1/webhooks/TOKEN

# sensor data
curl -X POST https://monitory.club/api/v1/webhooks/TOKEN \
  -H "Content-Type: application/json" \
  -d '{"temp": 42.1, "color": "#FF6B4A"}'

What's kept

Every event is stored with its payload, time, source IP and user agent. Keep up to 200 events per webhook by default, change the limit, or clear them whenever you like.

  • heartbeat2s ago
  • visitors 21214s ago
  • overheat 78.2°C12 min ago

Setup tokens

Hand a single-use, short-lived token to whoever installs the device. It creates its own webhook on first contact, so nobody copies URLs around.

  1. Generate a setup token from the device's Webhooks tab
  2. Send it to your technician with the event type
  3. The device registers its webhook and starts reporting

Dashboard

Every project and device with its recent activity, the latest values it sent, and the full history behind them.

Activity at a glance

Events drawn over time in each webhook's color, from the last hour out to 30 days. Filter by type, or by category: errors, heartbeats, sync and custom.

Lyon-LED-Wall
24h ago12hnow

Last activity and live values

Devices show green when they were heard from in the last five minutes, amber within the hour, grey after that. Live values put the latest reading of each event side by side.

Rooftop gardenActive
humidity
87%
temperature
21.4°C
bees at the entrance
36

Export

Export a device's or project's history as JSON lines, from the dashboard or with an API key and a single curl. Download links last seven days.

  • JSON lines
  • Per-user API keys
  • Ready-made curl
  • 60-day history

Alerts

Each webhook decides who hears about it and how. A crash can text you while a heartbeat stays silent.

Four channels

Texts and WhatsApp messages go through your own Twilio account, Telegram through your own bot, so messages come from numbers and bots you control.

  • Emailany address
  • SMSyour Twilio
  • WhatsAppyour Twilio
  • Telegramyour bot

Set per webhook

Turn alerts on or off, pick channels and recipients, and send a test before the opening night.

  • crashSMSTelegram
  • overheatSMSEmail
  • heartbeatno alert

Remote agent

A small agent for the machines themselves. See what the screen shows, what's running, and get a shell when you need one. Available on request.

Installs in one line

Runs as your user, with no sudo, under systemd on Linux or launchd on macOS. Reports CPU, memory, disk, uptime and network with every heartbeat, and updates itself.

  • Raspberry Pi, 32 and 64-bit
  • Linux amd64
  • macOS Intel and Apple silicon
  • No sudo
  • Self-updating

Screenshots and processes

Ask for a screenshot to see exactly what visitors see, or a list of running processes with their CPU and memory.

  • MyExhibition38% CPU, 1.2 GB
  • MadMapper21% CPU, 640 MB
  • node server.js3% CPU, 96 MB

SSH without a VPN

Open a tunnel for 15 minutes up to 8 hours. The agent dials out to our relay, you connect with your usual SSH client, and nothing on the device listens for incoming connections.

  1. AgentConnects out to the relay with credentials made for this tunnel
  2. RelayForwards the session to the device's SSH port
  3. YouYour own terminal and SSH client, your device's login

Assistant

Ask about a device or a project in plain language. It looks at your events, webhooks, documentation and, with the agent, the screen itself. Available on request.

Answers with evidence

Streaming answers powered by Gemini. Before it replies, it looks things up: recent events, device status, even a fresh screenshot it can see.

You Why is the Berlin projector dark?

Monitory Its last event came in at 02:33 with "temp": 78.2, and it has sent nothing since. The agent's screenshot shows a black output while MyExhibition is still running, which points to the projector rather than the app.

What it can look up

Ten tools, from device info to a screenshot of what's on the screen right now.

  • get_device_info()
  • get_recent_events()
  • search_events_by_type()
  • get_webhooks()
  • get_documentation()
  • list_project_devices()
  • get_project_info()
  • get_agent_status()
  • request_screenshot()
  • request_process_list()

Documentation

Keep wiring diagrams, specs and manuals with the project or device they belong to: files up to 25 MB, or links. The assistant knows what's there by name, description and link.

  • wiring-mezzanine-v3.pdf
  • berlin-01-specs.docx
  • dmx-universe-map.png
  • projector-manual.pdf

SDKs

A zero-dependency JavaScript client and a C++11 one. Both handle timeouts and retries for you.

A few lines

Give it your webhook URL, then call ping or send. Works in Node 18+, Electron and the browser.

installation.js
const monitor = Monitory({
  url: 'https://monitory.club/api/v1/webhooks/TOKEN',
  retry: 3,         // retry on failure
  retryDelay: 1000,  // 1s between retries
});

await monitor.ping();
await monitor.send({ temp: 42.1 }, { color: '#FFE082' });

JavaScript and C++

Load the script straight from monitory.club, or link the C++ library into native and embedded builds. It only needs libcurl.

  • browser<script src="https://monitory.club/monitory.js">
  • c++c++ -std=c++11 app.cpp -lmonitory -lcurl

Monitory for Mac

A menu bar app for the Mac running your show. It relaunches your app when it crashes, keeps the screen black in between, boots the whole installation in order and reports every crash here.

Built for kiosks

Launch sequences of apps, shell commands and AppleScript, a black backdrop on every display, hidden menu bar and other apps, and a watchdog that brings Monitory itself back.

About the Mac app

Teams and sharing

Bring in your crew, and show clients how the show is doing without giving them an account.

Roles

Invite people to a project as admins or viewers, and give temporary crew an access end date. Projects and devices can move around as the show changes.

  • Youowner
  • Technician, Lyonadmin
  • Curatorviewer until 30 Nov

Status pages

A read-only page for a whole project or one device, showing only the webhooks you pick. Add a password, set it to expire after six hours to 30 days, and revoke it any time. It refreshes itself every 30 seconds.

Make it yours

Give projects and devices their own colors, which status pages pick up too, and generate a background image in one of six styles, from pixel art to blueprint. Dark mode included.

Ready when your show is.

Request an invitation and have your first device reporting in minutes.

Invitation only, free during the beta.