FOR HOSTING PROVIDERS
Hardware-failure warnings before the ticket lands.
The in-OS health layer for the dedicated servers you rent out: SMART trends, ECC errors, PSU redundancy, GPU health. Your customers, or your platform, wire it in over one API.
Free hosted or self-hosted. Prove it on boxes you run yourself before offering it to customers.
curl -fsSL https://glassmkr.com/install.sh | sudo bash Crucible v1.1.1 on npm
Baking it into provisioning? Drop glassmkr-crucible enroll into your post-install or cloud-init: one account key, every host self-registers by machine ID. See automated fleet onboarding.
The problem
When a disk dies inside a customer’s dedicated server, the failure becomes your ticket: the emergency migration, the RMA, the customer who found out from an outage. Most of those failures gave notice first. Reallocated sectors climbing for weeks, correctable ECC errors trending up, a PSU quietly dropping out of redundancy.
Provider tooling covers the out-of-band half well. IPMI and KVM access, power control, traffic graphs: table stakes, and most panels do them fine. What the customer doesn’t get is the in-OS half: SMART trend analysis, ECC counters, NVMe wear, RAID state, GPU reliability, kernel and security warnings, with alerting their team can route somewhere they’ll actually see it.
So customers self-assemble that layer, or run without it and open a ticket when the box misbehaves. Glassmkr is that layer as a product: per-server, curated for bare metal, and automatable end to end, so it rides along with your provisioning instead of becoming one more platform to operate.
How Glassmkr fits
The in-OS half of hardware health.
Your out-of-band tooling reads the BMC. Crucible reads the OS: SMART attributes and trends, ECC and MCE counters, NVMe wear, RAID and ZFS state, GPU XID/ECC/thermals, kernel and security signals. The rules are tuned for bare-metal failure modes, not cloud workloads.
Every step is an API call, including alert channels.
Enroll hosts during provisioning with one account key. Create, update, test and delete notification channels (Slack, Discord, PagerDuty, Telegram, email, generic webhook) over the API. Read alerts and trend warnings back into your own panel. No dashboard clicks anywhere in the loop, hosted or self-hosted.
Tickets that never get opened.
A customer who sees “reallocated sectors rising on disk 3” a week early schedules the swap in a window they choose. The other version of that story is a 3 a.m. outage, an emergency migration and an RMA under pressure: work your support team absorbs.
An agent your customers can audit.
Recommending third-party software inside customers’ machines is a trust decision. Crucible is open source (AGPL-3.0-only), published on npm, source on GitHub, runs as a non-root user, and sends telemetry and alert state, never bulk logs or command output. Every alert rule has a public catalog page, so customers can see exactly what it watches before installing anything.
What your customers see
Per-server health at a glance: the firing alert with a suggested fix first, then CPU, memory, network errors and IPMI sensors. This is the page a customer opens before they open a ticket.
eno2 has logged 160 hardware errors (CRC + frame) and 90 discards: the error ratio crossed 0.1% of packets, usually a failing cable or SFP.
ethtool -S eno2 | grep -iE 'err|crc'interface_errorsThe whole lifecycle is an API
Monitoring that rides along with provisioning only works if every step is scriptable. Every step is. One write-scoped account key (gmk_acct_live_) drives the loop; the per-server collector keys it returns can only push that server’s telemetry.
# 1. Register the server at provision time; its collector key returns once.
curl -sS -X POST https://app.glassmkr.com/api/v1/servers \
-H "Authorization: Bearer $ACCT_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: provision-cust4211-web01" \
-d '{"hostname":"cust4211-web01.example.net","tags":["cust-4211"]}'
# 2. Install the agent on the host with that key. Or skip step 1 entirely:
# glassmkr-crucible enroll --account-key ... self-registers the host.
curl -sf https://glassmkr.com/install.sh | sudo GLASSMKR_API_KEY="$COLLECTOR_KEY" bash
# 3. Route alerts where the customer's team works, then prove delivery.
curl -sS -X POST https://app.glassmkr.com/api/v1/channels \
-H "Authorization: Bearer $ACCT_KEY" \
-H "Content-Type: application/json" \
-d '{"channel_type":"slack","name":"cust-4211","config":{"webhook_url":"https://hooks.slack.com/services/..."}}'
# The test endpoint returns 200 with {"success":false} when delivery fails,
# so assert on .success to make a broken channel fail the pipeline.
curl -sS -X POST "https://app.glassmkr.com/api/v1/channels/$CHANNEL_ID/test" \
-H "Authorization: Bearer $ACCT_KEY" | jq -e '.success' >/dev/null \
|| { echo "channel test failed: notification did not deliver"; exit 1; }
# 4. Read health and alerts back into your own panel or ticketing.
curl -sS "https://app.glassmkr.com/api/v1/servers/$SERVER_ID/alerts?status=active" \
-H "Authorization: Bearer $ACCT_KEY"Channels are created, updated, tested and deleted over the same API: six types, each filterable by alert priority. All of it works on the hosted instance and self-hosted alike. Reference: channels API; guides: programmatic API and automated onboarding.
The failures it catches early
The rules a hosting fleet cares about most:
- Disk pre-failure: SMART reallocated and pending sectors trending, NVMe wear bands, NVMe Critical Warning; the signals that often precede a disk RMA by days or weeks
- Memory pre-failure: correctable ECC error rate trending up, MCE events; the classic leading indicator of a DIMM swap
- Power and cooling: PSU redundancy loss on multi-PSU chassis, fan failures, temperature thresholds, SEL critical entries from the BMC
- Arrays and filesystems: degraded RAID, ZFS pool state, capacity projection (“this volume fills in 9 days”), read-only remounts
- GPU fleets: XID events, GPU ECC, thermal throttling, PCIe link degradation, vBIOS drift between same-model cards in a host
- Network: interface CRC and frame errors (usually a failing cable or SFP), link-speed drops, bond degradation
- Security posture: SSH root login enabled, no firewall configured, pending kernel vulnerabilities; the state customers blame the provider for after an incident
The agent you can read
Anything a provider recommends installing inside a customer’s OS gets scrutiny, and it should. Crucible is AGPL-3.0-only and on npm; the source is at github.com/glassmkr/crucible and the installer is ~150 lines of bash you can read first. The agent runs as the glassmkr user, never root, communicates over HTTPS only, and ships metrics and alert state, plus small bounded diagnostic excerpts around a failure (for example the last journal lines of a failed service, or a matched kernel dmesg event): no bulk log streaming, no command output, no arbitrary file contents.
Keys are scoped to match. The collector key on each box can only push that one server’s telemetry, and with enroll the account key is used for a single registration call and never written to disk. What we hold and how we run it is on the trust page.
Or run the whole stack in your own racks
The dashboard is open source under AGPL-3.0-only (github.com/glassmkr/crucible) and the whole stack self-hosts with one docker compose file: dashboard, API, Postgres, ClickHouse. For a provider that changes the shape of the offer. Monitoring becomes something you run on your own infrastructure and hand to customers as part of the product, with no third party in the data path: their SMART trends, ECC counters and journal excerpts travel from their server to a dashboard you operate, and stop there.
The lifecycle above is the same codebase either way, so provisioning automation written against the hosted API works unchanged against your own instance: same enrollment, same channels, same alert reads back into your panel. And when a customer asks where their telemetry goes, the answer is one sentence: it never leaves your network.
Self-host in 10 minutes. The hosted instance at app.glassmkr.com stays available if you would rather prove the value before running it yourself.
Pricing reminder
Free both ways: self-hosted under AGPL-3.0-only with no node limits, or the free hosted instance with a 10-node per-account cap. No card required to install.
Node counting is per server, not per GPU and not per gigabyte of telemetry.
Prove it on your own fleet first.
Install on a few boxes you operate yourself and watch what fires before you put it in front of customers. The default rules need no configuration.
curl -fsSL https://glassmkr.com/install.sh | sudo bashOr self-host it
The whole stack is open source under AGPL-3.0-only and runs on your own hardware with one docker compose file; nothing leaves your network.
curl -fsSL https://glassmkr.com/install.sh | sudo bash -s -- \
--api-key "gmk_cru_live_..." \
--ingest-url "http://your-dashboard-host:3000/api/v1/ingest" Building this into a hosting platform, or interested in a design-partner pilot? Email [email protected] directly. Glassmkr is built and run by one operator who works directly with the people who run the infrastructure.