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.
# 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.
- heartbeat
- visitors 212
- overheat 78.2°C
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.
- Generate a setup token from the device's Webhooks tab
- Send it to your technician with the event type
- 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.
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.
- 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.
crashoverheatheartbeat
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.
- MyExhibition
- MadMapper
- node server.js
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.
- AgentConnects out to the relay with credentials made for this tunnel
- RelayForwards the session to the device's SSH port
- 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.
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.
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.
<script src="https://monitory.club/monitory.js">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 appTeams 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.
- You
- Technician, Lyon
- Curator
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.
monitory.club/app/s/a1b2c3d4
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.