# Oack > Oack is a web monitoring and incident response platform with deep TCP-level telemetry, multi-channel alerting, and AI-assisted troubleshooting via MCP. Run checkers on your own infrastructure, get notified in seconds, and diagnose issues all the way down to the network layer. Website: https://oack.io Platform: https://app.oack.io API: https://api.oack.io/api/v1/ Swagger: https://api.oack.io/swagger/ Status: https://self-status.oack.io --- ## Quick Start Get monitoring in three steps: 1. **Create an account** — Sign up at app.oack.io and create your first team. 2. **Add a monitor** — Enter the URL you want to watch, pick an HTTP method, set the check interval, and choose a checker region. 3. **Configure alerts** — Create alert channels (Slack, Discord, Telegram, PagerDuty, Email, or Webhook) and link them to your monitor. You'll be notified within seconds when something goes wrong. --- ## HTTP Monitoring Each monitor performs an HTTP/HTTPS request to your endpoint at a configurable interval. Every probe captures: - **Full timing breakdown** — DNS lookup, TCP connect, TLS handshake, send, wait (TTFB), and receive phases. - **HTTP headers & body** — Request and response headers plus truncated body (1 KB) captured on every probe. - **TCP metrics** — Kernel-level TCP_INFO data including RTT, retransmits, congestion window, and segment counters. - **Packet capture** — Optional per-probe pcap of the full HTTP exchange (SYN to FIN) for deep post-mortem analysis. Monitors support custom HTTP methods (GET, POST, HEAD, etc.), custom headers, request body, and configurable timeouts. Check intervals range from 30 seconds (Business) to 5 minutes (Free). --- ## Health Rules Health rules define when a monitor is considered up or down. Each monitor has: - **Success criteria** — Expected HTTP status codes (e.g. 200-299) and maximum latency threshold. - **Failure threshold** — Number of consecutive failing probes required before the monitor transitions from UP to DOWN. - **Recovery threshold** — Number of consecutive passing probes required before the monitor transitions from DOWN back to UP. --- ## SSL & Domain Expiration Oack automatically monitors SSL certificate and domain registration expiration for every active monitor. A daily sweep checks: - **SSL certificates** — TLS handshake reads the leaf certificate's expiration date. - **Domain registration** — RDAP protocol (the ICANN standard replacement for WHOIS) checks registration expiry. Notifications are sent through your linked alert channels at configurable thresholds (default: 30, 14, 7, and 1 days before expiration). Available on Pro and Business plans. --- ## Alert Channels Alert channels define where notifications are sent when a monitor changes state. | Channel | Free | Pro | Business | |---|---|---|---| | Email | Yes | Yes | Yes | | Slack | - | Yes | Yes | | Discord | - | Yes | Yes | | Telegram | - | Yes | Yes | | Webhooks | - | Yes | Yes | | PagerDuty | - | Yes | Yes | | SMS & Calls | - | - | Coming soon | Telegram uses a one-click deep-link flow — no bot tokens or chat IDs to configure manually. Webhook payloads include HMAC signatures for verification. --- ## Alert Behavior Monitors notify only explicitly linked alert channels. If no channels are linked, the monitor stays silent. Alert events are dispatched on two transitions: - **DOWN** — fired when the failure threshold is reached. Includes monitor URL, status code, and error details. - **Recovery** — fired when the recovery threshold is reached. Includes downtime duration. --- ## Uptime, MTBF & MTTR Oack computes three reliability metrics from monitor status change history: - **Uptime %** — percentage of time the monitor was in the UP state within the selected window. - **MTBF** — Mean Time Between Failures. Average duration between consecutive DOWN incidents. - **MTTR** — Mean Time To Recovery. Average duration of DOWN incidents before recovery. Metrics are available over 7-day, 30-day, 90-day, and 365-day windows. --- ## Probe Aggregation For time ranges longer than 12 hours, probes are automatically aggregated into time buckets using SQL-level statistical functions. Available aggregation functions: avg, median, min, max, p75, p90, p95, p99. Bucket size scales with range: 5m buckets for 12-24h, up to 12h buckets for 90d+. Each bucket includes all six timing phases, probe count, and error count. Maximum 1,000 buckets per query. --- ## TCP Telemetry Every probe captures kernel-level TCP_INFO metrics with zero overhead: - **RTT (Round-Trip Time)** — Smoothed RTT and RTT variance as seen by the kernel. - **Retransmits** — Total retransmitted segments during the connection. - **Congestion window** — TCP congestion window size, indicating bandwidth capacity. - **Segment counters** — Segments sent and received during the exchange. --- ## Performance Percentiles When you open a probe's detail view, Oack computes a percent rank for each latency fraction — telling you where this probe sits relative to all successful probes for the same monitor. | Percentile | Interpretation | |---|---| | 0–50 | Faster than average | | 50–75 | Normal range | | 75–90 | Above average, worth noting | | 90–100 | Anomalous, likely a real issue | Latency fractions: dns_ms, connect_ms, tls_ms, send_ms, wait_ms (TTFB), receive_ms, total_ms. Each fraction is ranked across four time windows: 1 day, 7 days, 30 days, 90 days. --- ## Probe Sharing Share probe data with anyone using permalink share links. - **Time range** — Pick exact start and end timestamps. - **Expiration** — 1 hour, 24 hours, 7 days, 30 days, or 1 year. - **Access mode** — Public or authenticated links. - **View count** — Every share link tracks views. ### Redaction Groups When creating a share link you can hide sensitive data. Redaction is applied server-side. | Redaction Group | Fields hidden | |---|---| | Monitor name | Replaced with a generic label | | Checker IP | Checker public IP address | | Source ASN | Source AS number and network name | | HTTP bodies & auth | Request/response bodies and authorization headers | --- ## Network Checker A network checker is an agent that runs on your infrastructure, connects to Oack, and performs HTTP health checks against your monitors. - **Shared** — available to all accounts. Oack runs shared checkers in multiple regions. - **Dedicated** — private to your account. You deploy and manage the checker binary. ### Installation The checker binary supports Linux (amd64, arm64), macOS (Intel & Apple Silicon), and FreeBSD (amd64, arm64). **Homebrew (macOS / Linux):** ``` brew tap oack-io/tap brew install network-tester ``` **Shell script:** ``` curl -sSfL "https://raw.githubusercontent.com/oack-io/network-tester/refs/heads/main/install-network-tester.sh" | bash ``` **Docker:** ``` docker pull oackio/network-tester:latest mkdir -p $HOME/.net-checker-data docker run --rm \ --cap-add NET_RAW \ -v $HOME/.net-checker-data:/data \ oackio/network-tester:latest \ --token-db /data/tokens.db --mode shared ``` GitHub: https://github.com/oack-io/network-tester --- ## MCP (AI-Assisted Troubleshooting) Oack exposes a Model Context Protocol (https://modelcontextprotocol.io) server that lets AI agents read your monitoring data. All MCP tools are read-only. 53 tools available. **Claude Code config:** ```json { "mcpServers": { "oack": { "type": "http", "url": "https://api.oack.io/mcp/" } } } ``` To allow Claude to use all Oack MCP tools without permission prompts: ``` /permissions add mcp__oack__* "allow all Oack MCP tools" ``` --- ## CLI (oackctl) > Full reference: https://github.com/oack-io/oackctl/blob/main/SKILL.md CLI for managing the Oack uptime monitoring platform. ### Setup The CLI must be authenticated before use. Two methods: **Device flow (interactive):** ```bash oackctl login ``` **Static token (CI/scripting):** ```bash export TT_TOKEN= ``` The default server URL is `https://api.oack.io`. Override with `--server-url` or `TT_SERVER_URL`. Verify auth: `oackctl whoami` **Install via Homebrew:** ``` brew tap oack-io/tap brew install oackctl ``` **Install via shell script:** ``` curl -sSfL "https://raw.githubusercontent.com/oack-io/oackctl/refs/heads/main/install-oackctl.sh" | bash ``` ### Global Flags | Flag | Env var | Description | |------|---------|-------------| | `--server-url` | `TT_SERVER_URL` | API base URL (default: `https://api.oack.io`) | | `--token` | `TT_TOKEN` | Static Bearer token | | `--json` | — | JSON output (default: table) | | `--no-color` | `NO_COLOR` | Disable colors | | `--verbose` | — | Print HTTP request/response details | ### Command Reference **Auth:** `login`, `logout`, `whoami`, `version` **Accounts:** `list`, `get`, `create`, `update`, `delete`, `restore`, `transfer`, `members`, `set-role`, `remove-member`, `subscription`, `update-subscription`, `create-team`, `list-teams`, `create-invite`, `list-invites`, `revoke-invite` **Teams:** `list`, `get`, `create`, `update`, `delete` **Members** (--team required): `list`, `add`, `remove`, `set-role` **Monitors** (--team required): `list`, `get`, `create`, `update`, `delete`, `pause`, `unpause`, `duplicate`, `move`, `metrics`, `expiration`, `test-alert` Monitor create/update flags: `--name`, `--url`, `--timeout`, `--interval`, `--method`, `--http-version`, `--header` (repeatable), `--debug`, `--follow-redirects`, `--resolve-override-ip`, `--checker-region`, `--checker-country`, `--checker-id`, `--allowed-status` (repeatable), `--latency-threshold`, `--failure-threshold`, `--ssl-expiry`, `--ssl-expiry-thresholds`, `--domain-expiry`, `--domain-expiry-thresholds` **Probes** (--team --monitor required): `list`, `get`, `details`, `aggregate`, `pcap` **Alerts** (--team --monitor): `list` **Alert Channels** (--team): `list`, `create`, `update`, `delete`, `test` **Monitor Channels** (--team --monitor): `list`, `set`, `add`, `remove` **Notifications:** `defaults`, `set-defaults`, `copy-channels`, `monitor-override`, `set-monitor-override`, `remove-monitor-override` **Status Pages** (--account): `list`, `get`, `create`, `update`, `delete`, plus subcommands for components, groups, incidents, maintenances, subscribers, watchdogs, templates **Comments** (--team --monitor): `create`, `list`, `edit`, `delete`, `reply`, `list-replies`, `resolve`, `reopen` **External Links** (--team): `create`, `list`, `get`, `update`, `delete`, `assign`, `list-by-monitor`, `unassign` **Chart Events** (--team): `create`, `list`, `update`, `delete` **Shares** (--team --monitor): `create`, `list`, `revoke` **Traces** (--team --monitor): `list`, `request` **Timeline** (--team --monitor): `list` **CF Logs** (--team --monitor): `get`, `list` **API Keys** (--team): `list`, `create`, `delete` **PagerDuty** (--account): `create`, `get`, `update`, `delete`, `sync` **Cloudflare** (--account): `create`, `list`, `get`, `update`, `delete` **Devices:** `register`, `list`, `unregister` **Preferences:** `get`, `set` **Geo:** `regions` **Telegram** (--team): `create-link`, `link-status` ### Common Workflows **Create a monitor with alerts:** ```bash TEAM=$(oackctl teams list --json | jq -r '.[0].id') oackctl monitors create --team $TEAM \ --name "Production API" \ --url https://api.example.com/health \ --interval 60000 --failure-threshold 3 CH=$(oackctl alert-channels create --team $TEAM \ --type slack --name "Ops Slack" \ --config '{"webhook_url":"https://hooks.slack.com/..."}' --json | jq -r '.id') MON=$(oackctl monitors list --team $TEAM --json | jq -r '.[0].id') oackctl monitor-channels add $CH --team $TEAM --monitor $MON ``` **Investigate downtime:** ```bash oackctl monitors metrics $MON --team $TEAM oackctl probes list --team $TEAM --monitor $MON --limit 10 PROBE=$(oackctl probes list --team $TEAM --monitor $MON --limit 1 --json | jq -r '.[0].id') oackctl probes details $PROBE --team $TEAM --monitor $MON oackctl timeline list --team $TEAM --monitor $MON oackctl alerts list --team $TEAM --monitor $MON ``` ### Error Codes | Exit code | Meaning | |-----------|---------| | 0 | Success | | 1 | General error | | 2 | Authentication error (run `oackctl login`) | | 3 | Authorization error (insufficient role) | | 4 | Resource not found | | 5 | Validation error | GitHub: https://github.com/oack-io/oackctl --- ## REST API All platform functionality is available through the REST API at https://api.oack.io/api/v1/. Browse the full Swagger documentation at https://api.oack.io/swagger/. OpenAPI spec: https://api.oack.io/openapi.json Import into Postman: Import → Link → https://api.oack.io/openapi.json --- ## Account Roles | Role | Description | |---|---| | Owner | Full control. Manage subscription, transfer ownership, delete account. | | Admin | Create/manage teams, monitors, alert channels. Invite/remove members. | | Billing Admin | View/manage subscription and billing. Read-only access to teams. | | Member | Create teams and monitors, manage alert channels, invite team members. | | Guest | Read-only access. Default role for newly invited users. | ## Team Roles | Role | Description | |---|---| | Owner | Full control. Delete team, transfer ownership. | | Admin | Create/manage monitors and alert channels. Manage members. | | Member | View monitors/probes/metrics. Create share links. Cannot modify monitors. | ## Permissions Summary | Action | Min Account Role | Min Team Role | |---|---|---| | View monitors & probes | Guest | Member | | Create share links | Member | Member | | Create/update/delete monitors | Member | Admin | | Manage alert channels | Member | Admin | | Invite account members | Admin | - | | Manage subscription | Owner / Billing | - | | Delete account | Owner | - | --- ## Pricing | Feature | Free | Pro ($14/mo) | Business ($69/mo) | Enterprise (Custom) | |---|---|---|---|---| | Monitors | 20 | 100 | 500 | Custom | | Check interval | 3 min | 60 sec | 30 sec | 30 sec | | Teams | 1 | 5 | 20 | Unlimited | | Members | 3 | 20 | 40 | Unlimited | | Dedicated checkers | - | 5 | Unlimited | Unlimited | | Web checkers (pageload) | 1 | 3 | 15 | Custom | | Web checkers (test suite) | 1 | 3 | 15 | Custom | | Probe retention | 7 days | 30 days | 90 days | Custom | | Status pages | 1 | 5 | 50 | Custom | | Alert channels | Email | Email, Slack, Discord, Telegram, Webhooks | All + PagerDuty | All + SMS & Calls (in progress) | | On-call & escalation | - | Yes | Yes | Yes | | Incidents & post-mortems | - | Yes | Yes | Yes | | SSL & domain monitoring | - | Yes | Yes | Yes | | SAML SSO | - | - | - | In progress | | SCIM provisioning | - | - | - | In progress | | Dedicated support & SLA | - | - | - | Yes | ### Founding Members We are in the early stage and you are our founding users. Sign up now and every new feature we ship for your plan in the next 365 days is yours at today's price — no extra charges, no limits. ### FAQ **What counts as a monitor?** A monitor is a single HTTP/HTTPS endpoint check. Each unique URL you want to monitor counts as one monitor. **What is a dedicated checker?** A dedicated checker is an app that evaluates URL (monitor) reachability and performance. It can run on your own infrastructure, connects to Oack, and monitors your endpoints. **What happens if I exceed my monitor limit?** You won't be able to create new monitors until you upgrade or remove existing ones. Your current monitors will continue running normally. **What happens when a paid subscription expires?** Your monitors and alerts keep running. You lose access to advanced analytics and probe history beyond 30 minutes, and you can't create or modify monitors until you resubscribe. **Can I switch plans?** Yes. You can upgrade or downgrade at any time. When downgrading, monitors exceeding the new limit will be paused — you can unpause them after reducing your count. --- ## Features Overview ### Monitoring - HTTP/HTTPS Monitoring — customizable checks, assertions, and response validation - TCP/UDP Monitoring — port connectivity and service availability - Heartbeat Monitoring — cron jobs, scheduled tasks, background processes - SSL Certificate Monitoring — expiration alerts, certificate chain tracking ### Alerting - Multi-Channel Alerts — email, Slack, Discord, Telegram, PagerDuty, webhooks, SMS - On-Call Scheduling — rotation schedules - Escalation Policies — ensure incidents are never missed - Maintenance Windows — suppress alerts during planned downtime ### Incidents - Automatic Incident Creation — from monitor failures with full context - War Room Collaboration — built-in communication tools - Post-Mortem Reports — learn from incidents and prevent recurrence - Incident Timeline — complete timeline of all actions and alerts ### Analytics & Reporting - Performance Analytics — response times, availability, trends - Global Performance — compare across 30+ monitoring locations - SLA Tracking — define SLOs, track compliance, automated reporting - API & Integrations — full REST API, native integrations with DevOps tools --- ## About Oack was built by Gregory Komissarov, an engineer with over 10 years of experience using web monitoring services. After running into the same gaps across enterprise platforms and open-source tools — missing features, clunky workflows, telemetry that stopped at the HTTP layer — he built Oack to scratch his own itch. Oack is designed for engineers and entrepreneurs who need monitoring they can trust without spending hours configuring it. --- ## Contact - Support: support@oack.io - Security: security@oack.io - Privacy: privacy@oack.io - Discord: https://discord.gg/dNkYA2XU - Telegram: https://t.me/+1h2kh-goLy1jMTEy - GitHub: https://github.com/oack-io - LinkedIn: https://www.linkedin.com/in/gregory-komissarov/