# Glassmkr > Bare-metal infrastructure monitoring. $3 per node per month, 3 free nodes. Self-hosted AI assistant (Furnace) for alert remediation. MIT-licensed Crucible agent on npm. For the complete public documentation in a single file optimized for LLM consumption, see /llms-full.txt. Every page on glassmkr.com is also served as clean Markdown by appending .md to its URL (e.g. /vs/datadog.md, /pricing.md, homepage at /index.md); each page's HTML head also carries a . Fetch the .md instead of scraping HTML. The whole site is server-rendered, so it also works without JavaScript. ## Quick reference - Homepage: https://glassmkr.com - Documentation: https://glassmkr.com/docs - Per-rule pages: https://glassmkr.com/docs/rules - Pricing: https://glassmkr.com/pricing - Trust + security: https://glassmkr.com/trust - Verticals: https://glassmkr.com/for-sre, https://glassmkr.com/for-self-hosted, https://glassmkr.com/for-gpu - Comparison pages: https://glassmkr.com/vs/datadog, /vs/prometheus, /vs/netdata, /vs/checkmk, /vs/zabbix, /vs/librenms, /vs/cloudwatch, /vs/newrelic - Agent source (MIT): https://github.com/glassmkr/crucible - npm package: https://www.npmjs.com/package/@glassmkr/crucible - Current Crucible version: 0.13.24 ## Documentation pages (Markdown) Each guide page is served as clean Markdown at its URL with a .md suffix. Fetch these directly instead of scraping HTML (or get everything in one file via /llms-full.txt): - https://glassmkr.com/docs/getting-started.md (Getting started) - https://glassmkr.com/docs/programmatic-api.md (Programmatic API + account API keys) - https://glassmkr.com/docs/automated-onboarding.md (Automated fleet onboarding) - https://glassmkr.com/docs/api.md (API reference) - https://glassmkr.com/docs/api/tier-gating.md (API tier gating) - https://glassmkr.com/docs/configuration.md (Configuration reference) - https://glassmkr.com/docs/channels.md (Notification channels) - https://glassmkr.com/docs/troubleshooting.md (Troubleshooting) - https://glassmkr.com/docs/troubleshooting/ipmi.md (IPMI troubleshooting) - https://glassmkr.com/docs/faq.md (Frequently asked questions) - https://glassmkr.com/docs/changelog.md (Changelog) ## Marketing pages (Markdown) Every marketing page also has a .md twin (append .md to any URL). The most useful: - https://glassmkr.com/index.md (homepage) - https://glassmkr.com/pricing.md - https://glassmkr.com/trust.md - https://glassmkr.com/for-sre.md, https://glassmkr.com/for-self-hosted.md, https://glassmkr.com/for-gpu.md - https://glassmkr.com/vs.md and each comparison, e.g. https://glassmkr.com/vs/datadog.md - Blog posts: append .md to any /blog/ URL ## Quick Start Two ways to onboard a server. Both end with the Crucible agent pushing 60s health snapshots. The default snapshot interval is 60 seconds. ### Onboard via API (automation, fleets) - fully programmatic, no dashboard clicks Requires a write-scoped account key (prefix gmk_acct_live_). The programmatic API is available on every plan, bounded only by the node quota (3 on Free) and rate limits. ``` # 1. Mint a write-scoped account key (one-time; needs a logged-in dashboard # session cookie + a recent password re-auth for the 5-minute step-up window). curl -X POST https://app.glassmkr.com/api/v1/account/verify-password -b session.cookie \ -H "Content-Type: application/json" -d '{"password":"your-dashboard-password"}' curl -X POST https://app.glassmkr.com/api/v1/account/keys -b session.cookie \ -H "Content-Type: application/json" -d '{"name":"automation","scope":"write"}' # -> response carries the account key under .api_key (prefix gmk_acct_live_, shown once) ACCT_KEY="" # 2. Create each server with the account key. The per-server collector key comes # back under .server.api_key (prefix gmk_cru_live_, shown once). Body optional. curl -X POST https://app.glassmkr.com/api/v1/servers \ -H "Authorization: Bearer $ACCT_KEY" -H "Content-Type: application/json" \ -H "Idempotency-Key: onboard-web-01" \ -d '{"hostname":"web-01.example.com","tags":["prod"]}' # -> .server.api_key holds the collector key; .ingest_url holds the push endpoint # 3. Install the agent on the host with that collector key. COLLECTOR_KEY="" curl -sf https://glassmkr.com/install.sh | sudo GLASSMKR_API_KEY="$COLLECTOR_KEY" bash # or: sudo npm install -g @glassmkr/crucible && sudo glassmkr-crucible init --api-key "$COLLECTOR_KEY" ``` Full guide with a 50-server loop: https://glassmkr.com/docs/programmatic-api Even simpler for host-run automation (Ansible, cloud-init, post-install): the `glassmkr-crucible enroll --account-key ` subcommand (Crucible 0.13.21+) does steps 2 and 3 in a single command on the host itself. Bake one write-scoped account key into your automation; each host self-registers keyed by a stable machine ID (DMI product UUID, else /etc/machine-id), receives its own collector key, and starts reporting. Re-runs and re-images map back to the same server instead of duplicating it, and the account key is used for the one registration call and never written to disk. Guide with Ansible + cloud-init examples: https://glassmkr.com/docs/automated-onboarding ### Onboard via dashboard (single server) Sign up at https://app.glassmkr.com/register, click + Add Server to get a collector key, then install the agent as in step 3 above. The key goes in /etc/glassmkr/crucible.yaml under dashboard.api_key (legacy installs: /etc/glassmkr/collector.yaml; the agent reads either). ## API Reference Base URL: https://app.glassmkr.com/api/v1 Authentication: Bearer token. Account API key gmk_acct_live_xxx (scope read|write|admin; the programmatic API is on every plan, bounded by the node quota + rate limits). Crucible ingest key gmk_cru_live_xxx (per-server, returned by POST /servers, used only against /ingest). ### Server Management - POST /servers; create a server, returns a fresh per-server collector key in .server.api_key (gmk_cru_live_, shown once) plus ingest_url. Requires an account key with write scope. Accepts an Idempotency-Key header (24h replay). Body (all optional): {hostname, name, tags} - GET /servers; list all servers for authenticated customer - GET /servers/:id; server details - DELETE /servers/:id; remove server - POST /servers/:id/rotate-key; issue a new collector key for a server (old key is invalidated) - GET /servers/:id/health; latest snapshot with active alerts - GET /servers/:id/alerts?status=active|all; alerts (active only or full history) - GET /servers/:id/metrics?hours=24; time-series data for charts - GET /servers/:id/history?hours=24; raw snapshot history ### Account + API keys (session auth; minting a key needs a recent password re-auth) - POST /account/verify-password; step-up re-auth, opens a 5-minute window for key creation/rotation - POST /account/keys; create an account API key (scope read|write|admin, default write; write is required to create servers) - GET /account/keys; list account keys (metadata only, never plaintext) - POST /account/keys/:id/rotate; rotate an account key - GET /account/audit; append-only audit log, paginated by ts cursor ### Alert Management - POST /alerts/:id/acknowledge; acknowledge an active alert - GET /servers/:id/mutes; list muted rules for a server - POST /servers/:id/mutes; mute a rule - DELETE /servers/:id/mutes; unmute a rule ### Notification Channels - GET /channels; list channels - POST /channels; create channel - PUT /channels/:id; update channel - DELETE /channels/:id; delete channel ## Rule library Glassmkr ships 68 alert rules tuned for bare-metal failure modes. Categories: - Storage: drive SMART degradation, RAID state, NVMe wear, NVMe Critical Warning, I/O errors, latency - ZFS: pool health, scrub errors, SLOG faulted - Filesystem: capacity, projection, inodes, read-only mounts, fd exhaustion, LVM thin metadata - Memory & CPU: utilisation, swap, OOM kills, load, iowait, PSI pressure - Network: bonding/LACP, interface errors, saturation, link speed, conntrack, retrans, listen overflow, syn flood, softnet drops - Hardware (BMC/IPMI): CPU temperature, ECC, MCE, PSU redundancy, SEL events, fan failure - GPU: XID, ECC, thermal, NVLink, PCIe degradation, driver drift, power cap throttling (NVIDIA, Crucible v0.13.0+) - Time & Services: clock drift, NTP, systemd service state, service flapping, unexpected reboot - Security & Patching: SSH root, firewall, pending updates, kernel vulnerabilities, reboot pending, unattended-upgrades, server unreachable Each rule has a public catalog entry at /docs/rules/ with title, summary, and priority. Per-alert remediation guidance (command, prerequisites, validation, rollback) is rendered inside the dashboard at https://app.glassmkr.com on the alert detail page.