Everything under the hood

Platform Features

A complete monitoring platform for creative installations. Webhooks, dashboards, notifications, remote access, AI assistance, and native tools.

Webhook Monitoring

Each device gets a unique webhook URL. GET or POST — your device reports status with a single HTTP request.

How It Works

Each device gets a unique webhook URL. Hit it with GET for a simple heartbeat, or POST with JSON to send structured data. Works from any environment that can make an HTTP request.

# Simple heartbeat (GET)
curl https://monitory.club/webhooks/a1b2c3d4-e5f6-...

# Send sensor data (POST)
curl -X POST https://monitory.club/webhooks/a1b2c3d4-e5f6-... \
  -H "Content-Type: application/json" \
  -d '{"temp": 42.1, "status": "running"}'

Automatic Status

Devices are marked online when a webhook arrives and offline when the configurable threshold expires. Every payload is logged with timestamp, headers, and body for full audit trails.

Berlin-Projector-01
2s ago
Lyon-LED-Wall
14s ago
Tokyo-Sensor-03
offline — 12min

Setup Tokens

Generate short-lived setup tokens for provisioning new devices. Share a token with an installer — they configure the device to ping the webhook, and it auto-registers on the platform.

1. Generate a setup token from the dashboard
2. Share the install command with your technician
3. Device registers and starts reporting automatically

Real-Time Dashboard

Activity visualizations, health status, and event history at the device and project level. See what matters at a glance.

Activity Visualizations

Color-coded activity histograms show webhook frequency by event category. Live payload values update in real time. Select time ranges — 1h, 24h, 7d, or 30d — to analyze trends.

Webhook Activity — Last 24h

00:00 06:00 12:00 18:00 Now

Device & Project Views

Organize devices into projects. Each project provides an overview of all devices, their health status, and aggregate metrics. Drill into individual devices to see event history and live payload data.

Project: Berlin Exhibition

3 devices online
Healthy
Total webhooks today 4,218
Avg response interval 58s

Multi-Channel Notifications

Six notification channels. Per-webhook configuration. Map event types to the channels that matter.

Six Channels

Get notified where you already are. Each channel is independently configurable per webhook, so critical devices can alert via SMS while others send a quiet email digest.

Email

SMTP

Push

FCM

SMS

Twilio

WhatsApp

Twilio

Telegram

Bot API

WebSocket

Real-time

Event-to-Channel Mapping

Route specific event types to specific channels. Device goes offline? SMS and push. New webhook registered? Email only. Full control over what triggers what.

Notification Rules

device.offline
SMS Push Email
device.online
Email
webhook.payload
WebSocket

SSH Remote Agent

SSH into any device from the browser. Outbound-only connections, per-session credentials, auto-expiring tunnels — all encrypted end to end. No VPN, no open ports, no sudo required.

Three-Component Architecture

The agent runs on the device and connects outbound to a relay server. Your browser connects to the same relay. No inbound ports needed on the device side.

Agent — Go binary on the device. Connects outbound to relay.
Relay Server — Routes SSH connections between agent and browser.
Browser — xterm.js terminal in the Monitory dashboard.

Capabilities

Runs as a system service (systemd on Linux, launchd on macOS). Sends heartbeat metrics including CPU, memory, disk usage, and uptime. Tunnels have configurable TTL for security.

No sudo required systemd & launchd CPU / mem / disk metrics Tunnel TTL Linux amd64 / arm64 macOS amd64 / arm64

AI Chat Assistant

Ask questions about your devices in natural language. The AI has full context — events, webhooks, documents, and project data.

Gemini-Powered

Streaming responses powered by Gemini with function calling. The AI can query device info, recent events, webhook history, uploaded documentation, and project context in real time.

you: Why did Berlin-Projector-01 go offline at 2:34am?
monitory: The last webhook from Berlin-Projector-01 arrived at 02:33:47. The payload contained "temp": 78.2, which exceeds the thermal threshold documented in your projector manual (max 75°C). The device likely triggered an automatic thermal shutdown. Previous events show temp climbing from 71°C over the last 45 minutes.

Function Calling

The AI doesn't just talk — it acts. It calls internal functions to fetch device info, query webhook events, search uploaded documentation, and pull project-level context to give accurate answers.

get_device_info() get_recent_events() search_events_by_type() get_webhooks() get_documentation() list_project_devices() get_project_info()

Plugin SDKs

Zero-dependency JavaScript and lightweight C++ SDKs. Automatic retries, heartbeats, and payload formatting built in.

Simple Integration

Configure with your webhook URL, and call send or ping. The SDK handles retries, connection errors, and timeout management automatically.

const Monitory = require('monitory');

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

// Heartbeat
await monitor.ping();

// Send custom data
await monitor.send({ temp: 42.1, status: 'running' });

Two Environments

The @monitory/js client works in Node.js 18+, Electron, and modern browsers with zero dependencies. The @monitory/cpp client brings the same API to native desktop/embedded development, requiring only libcurl (C++11 compatible).

NPM: npm install @monitory/js
CXX: c++ -std=c++11 -lmonitory -lcurl

Monitory for Mac

A zero-dependency Swift macOS menu bar app built for live exhibitions, installations, and kiosk deployments. Monitors your app, restarts it on crash, manages blackout safe screens, and reports status to the platform.

Menu Bar App

Lives in the macOS menu bar. Select an application to monitor, and Monitory watches for crashes. When the app terminates unexpectedly, it restarts automatically and sends an event to the platform.

Menu Bar

Monitoring
App: MyExhibition.app
Auto-restart on crash
Launch Sequences
Black screen management
Webhook to dashboard
Launch at login

Launch Sequences

Configure complex launch sequences with multiple applications, scripts, or URLs. Define ordering, wait times, and auto-start behaviors to manage your entire installation's boot process from a single interface.

1. Launch App
MadMapper.app
2. Delay
Wait 5.0s
3. Launch App (Hidden)
MyExhibition.app

Crash Recovery

When the monitored app crashes, Monitory covers the screen with a black overlay to hide the desktop, then relaunches the application. The audience never sees a macOS desktop or error dialog.

1. App crashes or terminates unexpectedly
2. Black screen covers the display instantly
3. Application relaunches automatically
4. Crash event sent to the Monitory dashboard

Public Status Pages

Generate secure, read-only dashboards for clients or field technicians in a single click. No account required to view.

Shareable Links

Create temporary or permanent status pages with customizable scopes. Share insights on the entire project or restrict visibility to a single device and specific webhook events.

Share active link

https://monitory.club/app/s/a1b2c3d4

Access Controls

Keep data secure. Protect pages with custom passwords and configure auto-expiring tokens lasting from 1 hour up to 30 days. Revoke access manually at any time.

Password Protection Auto-Expiration Webhook Scoping Manual Revocation

Visual Customization

Present data that matches your brand. Define a primary accent color so the status page looks cohesive when shared with clients.

Ready to start?

Request an invitation and start monitoring your installations in minutes.

Invitation only. We'll review your request.