Watch Docs v1 Dashboard →

Watch Documentation

Watch is a real-time server monitoring and autonomous security platform. It combines live fleet metrics, AI-driven threat detection, and automated response into a single dashboard.

New here? Jump to Quick Start to get your first server online in under 5 minutes.

Introduction

Watch runs a lightweight agent on each server you want to monitor. The agent streams metrics and security events back to Watch over an encrypted WebSocket tunnel. Cortex AI continuously analyzes this data to detect threats, plan responses, and — when authorised — execute containment actions automatically.

Key capabilities:

Quick Start

  1. Sign in at watch.alsopss.com. You'll land on the Fleet overview.

  2. Add your first server. Click Add Server in the Fleet view (or top-right corner). Copy the one-line install command shown.

  3. Run the install command on your server as root. It downloads and starts the Watch agent, which connects back automatically.

  4. Watch it appear. Within a few seconds the server shows up in Fleet with live CPU and memory. A green dot means the agent is connected.

  5. Configure alerts. Go to Settings → Alert Rules to customise thresholds and notification channels.

Installing the Agent

The agent is a single binary that runs as a systemd service. Supported platforms: Linux (x86_64, arm64), Debian/Ubuntu, RHEL/CentOS, Alpine.

One-line install (recommended)

curl -sL https://watch.alsopss.com/install | sudo bash -s -- --token YOUR_INSTALL_TOKEN

Your install token is shown when you click Add Server in the dashboard. Each token is single-use and tied to your org.

What the installer does

Verify the agent is running

systemctl status watch-agent
journalctl -u watch-agent -f

Uninstall

sudo systemctl stop watch-agent && sudo systemctl disable watch-agent
sudo rm -rf /opt/watch-agent /etc/systemd/system/watch-agent.service
sudo systemctl daemon-reload

The sidebar on the left groups features into sections. It can be collapsed to icon-only mode by clicking the arrow at the bottom.

SectionWhat's here
FleetAll servers — live status, metrics, and agent activity
AlertsEvery anomaly, threshold breach, and attack signal in real time
NetworkActive connections, listening ports, and IP ban list
ServicesSystemd service status across all monitored servers
RespondHuman override queue — approve, reject, or roll back Cortex decisions
InvestigationsActive AI investigation cases, evidence chains, and confidence scores
TimelineUnified event timeline correlating alerts, actions, and metric spikes
IntelligenceAttacker profiles, predictive findings, and missed-attack analysis
CoverageMITRE ATT&CK playbook coverage and false-positive suppression
Cortex AIAutonomous threat reasoning, planning, and execution console
SOC OpsMTTD/MTTR metrics, alert funnel, and analyst workload
Sec IntelCVE exposures, threat feeds, and external IOC correlation
Audit LogImmutable record of every action — who, what, when, outcome
SettingsAgent config, automation policy, notifications, team, billing

Fleet Overview /

The Fleet view is your home screen. It shows every server in your org as a card with live metrics.

Click any server card to open the Server Detail view.

Server Detail /server/:id

A full-page view of a single server with tabs covering every aspect of that host.

Overview
Live CPU, memory, disk, network, load average, and uptime graphs.
Processes
Running process tree with CPU/memory per process. Click to inspect or kill.
Network
Open connections and listening sockets. Identify unexpected outbound traffic.
Security
Hardening scan results, FIM events, SSH key audits, and lockdown controls.
Packages
Installed packages with CVE exposure and available updates.
Vault
Secrets assigned to this server — push, rotate, or reveal with audit trail.
Terminal
Browser-based terminal into this server via the agent tunnel.
Config Watch
Track changes to critical config files with diffs and timestamps.

Lockdown

The Lockdown button (top-right of Server Detail) puts the server into a restricted state: blocks all inbound connections except the agent tunnel, kills non-whitelisted processes, and logs every action. Use it when you suspect active compromise. Lockdown can be lifted from the same button or via the Respond queue.

Alerts /alerts

The alert feed shows every security event across the fleet in real time. Alerts are streamed over the SSE event stream — no page refresh needed.

SeverityMeaning
CriticalActive threat requiring immediate action (ransomware, rootkit, active exfil)
WarningSuspicious activity that may indicate a threat (brute force, anomalous process)
InfoNoteworthy events that are not immediately dangerous

Acknowledging alerts

Click Ack on any alert to mark it reviewed. Bulk-acknowledge with the Ack All button. Acknowledged alerts are archived but remain in the audit log forever. You can add a note when acknowledging — it's attached to the alert record.

Alert rules

Go to Settings → Alert Rules to create custom threshold rules (e.g. CPU > 90% for 5 min) or tune the severity of built-in detections. The Rule Builder lets you test rules against recent data before saving.

Network /network

A fleet-wide view of all active TCP/UDP connections and listening ports. Use it to spot unexpected outbound calls, port scanners, or services that shouldn't be exposed.

Timeline /timeline

A chronological view that merges alerts, Cortex actions, metric spikes, and config changes onto a single timeline. Use it to reconstruct an incident: see the CPU spike that preceded the alert, the Cortex decision that followed, and the remediation that resolved it — all in sequence.

Cortex AI

Cortex is Watch's autonomous security engine. It continuously analyses telemetry across the fleet, correlates signals into attack chains, and — depending on your automation policy — either proposes or automatically executes containment actions.

How Cortex works

  1. Detect — ingest process trees, network connections, file changes, and login events from all agents.

  2. Assess — score each anomaly, correlate across servers, and build a causal chain (e.g. brute force → successful login → lateral move → exfil attempt).

  3. Plan — propose a remediation plan: ban IP, kill process, quarantine server, rotate credential.

  4. Execute — if automation is enabled for that action class, execute immediately. Otherwise, send to the Respond queue for human approval.

  5. Verify — re-check the server after action to confirm the threat is resolved and no regression occurred.

Automation policy

Go to Settings → Security Policy to control what Cortex can do autonomously. Each action class (IP ban, process kill, lockdown, credential rotate) can be set to auto, require approval, or disabled.

Tip: Start with all actions in require approval mode. Once you trust Cortex's decisions on your environment, selectively enable auto-execution for lower-risk actions like IP bans.

Detections & Coverage /detection

Shows which MITRE ATT&CK techniques Watch actively detects on your fleet, and which have gaps. Green = covered, yellow = partial, grey = not covered.

Each technique card links to the playbook for that detection — showing what signals trigger it, what Cortex does in response, and any false-positive suppression rules in effect.

Use YARA Rules (/yara) to write custom detections that scan file content and process memory on demand or on a schedule.

Respond & Approvals /respond

When Cortex proposes an action that requires human approval, it appears here. Each item shows:

Approve to execute, Reject to dismiss, or Modify to adjust the action before running it. All decisions are logged in the Audit Log.

You can also roll back any executed action here within the retention window.

Investigations /investigations

Each Cortex investigation is a structured case file. It contains:

Investigations can be exported as PDF incident reports for compliance or post-mortem review.

Zero Trust /zerotrust

Watch implements a Zero Trust model for your fleet. Rather than trusting servers by network position, every process, connection, and user action is validated against policy.

Ghost Mode /ghost

Ghost Mode makes Watch's presence invisible to an attacker who has compromised a server. It:

Note: Ghost Mode requires kernel-level support. Available on Linux with kernel ≥ 5.10. Not supported on containers.

Intelligence /intelligence

The Intelligence view surfaces proactive findings that don't rise to the level of an alert but are worth knowing:

Threat Map /threatmap

A real-time world map showing the geographic origin of attack traffic hitting your fleet. Circles pulse on new events. Click any origin to see the associated alerts and attacker profile. Available on paid plans.

Predict /predict

Predict uses behavioural baselines to surface anomalies before they become incidents. It builds a statistical model of normal behaviour per server (CPU patterns, process launches, login times) and flags deviations with a z-score and severity. Unlike threshold alerts, Predict catches slow-burn attacks that stay below fixed thresholds.

DARVER /darver

DARVER (Detect → Assess → Remediate → Verify → Enforce → Report) is Watch's structured incident-response pipeline. It gives each incident a lifecycle stage and tracks it through to resolution, ensuring no alert is left unresolved. The DARVER dashboard shows the current distribution of incidents across each stage.

Playbooks /playbooks

Playbooks are automated response runbooks. When a trigger condition is met (e.g. ransomware detected), the playbook executes a sequence of steps: notify on-call, snapshot disk, isolate server, open incident. You can write your own playbooks or start from built-in templates.

Each step can be conditional, delayed, or require manual approval before proceeding. Playbook runs are logged in full in the Audit Log.

War Room /war-room

A live multi-team collaboration space for active incidents. All team members see the same real-time feed of Cortex actions, alerts, and server state. Use it to coordinate during a breach: assign tasks, share findings, and track who is doing what without leaving the dashboard.

Compliance /compliance

Generates live compliance scores for CIS Benchmarks, SOC2, and PCI-DSS. Each framework shows a breakdown by control with pass, warn, and fail status. Watch maps its own detections and hardening checks to the relevant controls automatically.

Export a compliance report PDF for auditors from the top-right of the Compliance view.

Vault /vault

Vault stores encrypted secrets (passwords, API keys, TLS certificates) and distributes them to agents on demand. Secrets are encrypted at rest with a per-org key.

Audit Log /audit

Every privileged action in Watch is appended to a tamper-evident audit log. This includes user logins, alert acknowledgements, Cortex decisions, playbook runs, settings changes, and API key usage.

The log is append-only and cryptographically chained — each entry includes a hash of the previous entry. Export to CSV/JSON for SIEM integration via the API.

Team & Roles /users

RoleCan do
OwnerEverything — billing, team management, delete org, all API key scopes
AdminAll operations except billing and owner management
AnalystView all data, acknowledge alerts, approve Cortex actions. Cannot change settings.
Read-onlyView only. Cannot acknowledge, approve, or change anything.

Invite team members from Settings → Team. Invites are sent by email and expire after 48 hours. SSO (SAML 2.0) is available on Enterprise plans — configure it under Settings → SSO.

Integrations /settings/integrations

Watch can send notifications and create tickets in external systems when alerts fire or Cortex takes action.

Slack
Post alert messages and Cortex decisions to a channel.
PagerDuty
Create and auto-resolve incidents. Supports escalation policies.
Opsgenie
Create alerts with severity mapping.
Teams
Post adaptive card notifications to a Teams channel.
Jira
Open tickets automatically for critical alerts.
Splunk
Forward structured events to a Splunk HEC endpoint.
Webhook
POST a JSON payload to any HTTPS endpoint.
Ntfy / Pushover
Push notifications to your phone.

Configure integrations at Settings → Integrations. Use the Send test button to verify your config before saving. Each integration can be scoped to specific alert severities or servers.

API Keys /settings/api-keys

API keys let you access Watch programmatically. Create them at Settings → API Keys.

Key prefixes

Available scopes

ScopeGrants access to
servers:readList and retrieve server metadata
metrics:readTime-series metric data
alerts:readList and filter alerts
alerts:writeAcknowledge and snooze alerts
stream:readSubscribe to the real-time SSE event stream
vault:revealDecrypt vault secrets
integrations:readList integrations
integrations:writeCreate and update integrations
audit:readRead the audit log
webhooks:writeCreate, update, delete, and test outbound webhook targets
events:readRead the historical custom event log
events:writePush custom events from external systems
actions:writeTrigger automation: ban IP, run scan, lockdown, restart agent
read:*All read scopes
write:*All write scopes

Using a key

curl https://api.watch.alsopss.com/api/servers \
  -H "Authorization: Bearer wk_live_YOUR_KEY"

Developer APIs

The following APIs are designed for programmatic use — automation pipelines, CI/CD integrations, and external tools. All require a wk_live_ key with the appropriate scope.

Webhooks POST /api/webhooks

Register outbound webhook targets that Watch will POST to when events fire. Each delivery is signed with X-Watch-Signature: sha256=<hmac> using a per-webhook secret.

# Create a webhook
curl -X POST https://api.watch.alsopss.com/api/webhooks \
  -H "Authorization: Bearer wk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-pipeline",
    "url": "https://hooks.example.com/sentinel",
    "events": ["alert.critical", "lockdown.enabled", "custom.event"]
  }'

# List webhooks
curl https://api.watch.alsopss.com/api/webhooks \
  -H "Authorization: Bearer wk_live_YOUR_KEY"

# Test a webhook
curl -X POST https://api.watch.alsopss.com/api/webhooks/1/test \
  -H "Authorization: Bearer wk_live_YOUR_KEY"

# Delivery history
curl https://api.watch.alsopss.com/api/webhooks/1/deliveries \
  -H "Authorization: Bearer wk_live_YOUR_KEY"
EventDescription
alert.criticalCritical severity alert fired
alert.warningWarning severity alert fired
alert.resolvedAlert acknowledged or auto-resolved
lockdown.enabledServer placed into lockdown
lockdown.disabledLockdown lifted
ban.addedIP address banned
ban.removedIP ban removed
agent.offlineSentinel agent went offline
agent.onlineSentinel agent came back online
scan.completerkhunter or clamav scan finished
investigation.openedNew WID investigation opened
ttp.matchedTTP pattern matched in telemetry
custom.eventExternal event pushed via /api/events/ingest
*All events

Event Ingest POST /api/events/ingest

Push custom events from external systems — deploy markers, CI results, on-call handoffs, external alerts. Events appear in the dashboard event timeline and can trigger webhook deliveries.

curl -X POST https://api.watch.alsopss.com/api/events/ingest \
  -H "Authorization: Bearer wk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": "github-actions",
    "type": "deploy",
    "title": "Deployed v2.4.1 to production",
    "severity": "info",
    "server_id": "srv_abc123",
    "meta": { "commit": "a1b2c3d", "actor": "aidenmcelroy" }
  }'

Fields: source (required), type (required, lowercase slug), title (required), body (optional markdown), severity (info | warning | error | success), server_id, meta (JSON object).

Event History GET /api/events

Paginated historical event log covering both system events and custom ingest events.

# Last 50 events
curl "https://api.watch.alsopss.com/api/events" \
  -H "Authorization: Bearer wk_live_YOUR_KEY"

# Filter by source and time range
curl "https://api.watch.alsopss.com/api/events?source=github-actions&since=1700000000000&limit=100" \
  -H "Authorization: Bearer wk_live_YOUR_KEY"

Query params: limit (max 500), offset, source, type, severity, server_id, since (ms epoch), until (ms epoch).

Automation Actions POST /api/automation/*

Trigger remediation actions from automation pipelines. Requires scope actions:write. Command policies (two-person auth, approval gates) are enforced identically to the dashboard — if approval is required, the API returns 202 Accepted with an approval_id.

# Ban an IP
curl -X POST https://api.watch.alsopss.com/api/automation/ban-ip \
  -H "Authorization: Bearer wk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"serverId": "srv_abc123", "ip": "1.2.3.4", "reason": "blocked by IDS"}'

# Run a scan
curl -X POST https://api.watch.alsopss.com/api/automation/scan \
  -H "Authorization: Bearer wk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"serverId": "srv_abc123", "scanner": "rkhunter"}'

# Enable lockdown
curl -X POST https://api.watch.alsopss.com/api/automation/lockdown \
  -H "Authorization: Bearer wk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"serverId": "srv_abc123", "active": true}'

# List active IP bans on a server
curl "https://api.watch.alsopss.com/api/automation/server/srv_abc123/bans" \
  -H "Authorization: Bearer wk_live_YOUR_KEY"

Notifications /settings/notifications

Control which events trigger notifications and through which channels. You can set per-severity rules (e.g. only page on-call for Critical, send Slack for Warning) and configure quiet hours to suppress non-critical noise outside business hours.

On-call rotation is configured under Settings → On-Call. Watch will call or page the currently on-call user when a critical alert fires and no human has acknowledged it within your configured escalation window.

API Reference

Interactive API explorer. Authenticate with a wk_live_ key using the Authorize button to try requests live.