Mitch Popescu
Mitch Popescu
4 min read

Detecting OpenClaw (clawdbot, openmolt)

thumbnail for this post

OpenClaw (formerly clawdbot and moltbot) is a viral AI assistant that has been trending in Google searches and GitHub stars. The project has risen significantly since January 25, 2026.

Github Trending
GitHub stars growth
Google Trending
Google search trends

The project works by chaining skills such as email access, browser automation, or calendar, and it enables users to create complex automations such as management of email inboxes, news triage, and integrations with messaging apps.

This practical aspect makes it a great productivity booster but due to safety concerns such as wide OS and filesystem access, security practitioners may want to detect and prevent installation of OpenClaw.

How can you detect the presence of OpenClaw?

For this experiment, I used a VPS running Ubuntu 24.04.3 LTS with a Splunk Universal Forwarder to ship available host telemetry. To approximate endpoint detection and response (EDR) functionality on a Linux system, I combined Zeek for network monitoring (running on a cooked mode capture) with auditd for syscall-level visibility into command execution and real-time filesystem changes.

This setup represents a Linux-specific detection approach; artifacts and telemetry will differ on macOS and Windows systems. In production environments, many of these signals would be more reliably and efficiently collected using a full EDR platform or tools such as osquery.

The goal here is to demonstrate how OpenClaw can be detected using commonly available, open-source telemetry sources.

Using running process data

The presence of the openclaw-gateway process is a good indication that OpenClaw is running on a host. In this case I’m using process telemetry collected using Splunk Add-on for Unix and Linux.

index=main sourcetype=ps
| rex field=_raw "(?m)^(?<line>(?!USER\s+PID).*(openclaw-gateway|openclaw).*)$"
| where isnotnull(line)
| stats latest(_time) AS _time latest(line) AS line by host
openclaw-gateway process
Openclaw Gateway process running on a Linux host

Using network data - listening ports

By default, the OpenClaw gateway runs on port 18789. There’s a high likelihood that if you see this port open and listening on a host, you’ve spotted an installation of the gateway.

18789 - OpenClaw Gateway

18792 - OpenClaw Browser

index=main sourcetype=netstat
| rex field=_raw max_match=0 "(?m)^(?<line>(?:tcp|tcp6)\s+\S+\s+\S+\s+\S+:(?:18792|18789)\s+\S+\s+LISTEN\s*)$"
| where isnotnull(line)
| mvexpand line
| rex field=line "^(?<proto>\S+)\s+(?<recv_q>\S+)\s+(?<send_q>\S+)\s+(?<local_addr>\S+)\s+(?<foreign_addr>\S+)\s+(?<state>\S+)"
| rex field=local_addr ":(?<local_port>\d+)$"
| stats
    count as listen_rows
    values(local_addr) as local_addresses
    values(foreign_addr) as foreign_addresses
    values(local_port) as ports
    latest(_time) as _time
  by host
OpenClaw Listen Ports
Openclaw listening ports: 18789 and 18792

Using network data - mDNS broadcasts

When the OpenClaw gateway starts, it announces itself via multicast DNS (mDNS) on the local network. This behavior enables automatic discovery by companion components (such as the browser relay) and is observable on UDP/5353 -> 224.0.0.251.

The gateway advertises a custom service type and publishes rich metadata via PTR, SRV, TXT, A, and AAAA records. This makes mDNS a strong network-based indicator of OpenClaw activity, especially in environments where endpoint telemetry is limited.

Below is a representative tcpdump capture taken during gateway startup:

IP 192.0.2.10.5353 > 224.0.0.251.5353: 0*- [0q] PTR om-test._openclaw-gw._tcp.local.,
    (Cache flush) SRV openclaw.local.:18789 0 0,
    (Cache flush) TXT "role=gateway" "gatewayPort=18789"
        "lanHost=openclaw.local" "displayName=om-test"
        "transport=gateway",
    (Cache flush) A 192.0.2.10,
    (Cache flush) AAAA 2001:db8::10

IP 192.0.2.10.5353 > 224.0.0.251.5353: 0 [2q] ANY (QM)?
    om-test._openclaw-gw._tcp.local. ANY (QM)? openclaw.local.

Looking for installation of the companion Chrome extension

The OpenClaw extension is loaded as an unpacked extension via Developer Mode. The extension ID is derived from the absolute path on disk, so each install with a different path or on a different machine results in a different ID.

However the extension name is consistent. So you can look in your Chrome extensions telemetry for an extension called “OpenClaw Browser Relay”.

OpenClaw Browser Relay
OpenClaw Browser Relay Chrome Extension

Looking for install-time indicators

Command-line activity can be monitored to detect both direct installer script downloads and package-manager–based installations.

This includes executions that fetch OpenClaw installer scripts (for example via curl one-liner) as well as global installs performed with package managers such as npm.

In this case, I track these installations using Linux auditd, which provides visibility into executed commands at the syscall level.

Most popular openclaw installation methods:

// One-liner script

curl -fsSL https://openclaw.ai/install.sh | bash

// Using npm

npm i -g openclaw

index=os sourcetype=linux:audit type=EXECVE (openclaw AND curl) OR (openclaw AND npm)
| rex max_match=0 field=_raw " a\d+=\"(?<argv>[^\"]*)\""
| eval cmdline=mvjoin(argv," ")
| table _time host cmdline 
| sort - _time
Tracking OpenClaw Installation
Tracking OpenClaw Installation

Looking for file indicators

OpenClaw’s default installation and state directory is ~/.openclaw. The presence of this path on a system is a strong indicator that the OpenClaw agent has been installed or used.

Key artifacts under this directory include:

~/.openclaw/openclaw.json - the primary configuration file.

~/.openclaw/workspace/ - the workspace directory

These filesystem artifacts provide a high-confidence signal of OpenClaw installation or prior usage, even when the gateway process is not currently running.

Example Splunk search using auditd file events:

index=os sourcetype=linux:audit .openclaw/.openclaw.json
Openclaw FileSystem Artifacts
Openclaw FileSystem Artifacts: ~/.openclaw/openclaw.json