# Remote Control

## Overview

OpenClaw's remote control capabilities allow a macOS app to function as a controller for an OpenClaw gateway on another host via SSH.

## Key Operational Modes

The system supports three operational approaches:

1. **Local execution** on the macOS device
2. **Remote over SSH** (default) with port forwarding
3. **Remote direct** using WebSocket connections without SSH tunneling

## Transport Options

Two transport mechanisms are available:

- **SSH tunneling**: Masks the client as localhost
- **Direct WebSocket**: Exposes the actual client IP

## Setup Requirements

### Remote Host Requirements

- Node.js, pnpm, and the OpenClaw CLI installed
- Accessible on the system PATH
- SSH should use key-based authentication
- Tailscale IPs recommended for reliable off-network access

### macOS App Configuration

1. Select transport type
2. Specify the SSH target
3. Optionally provide gateway URLs and identity file paths
4. Use "Test remote" feature to validate connectivity

## Web Chat Integration

Web Chat operates through the same SSH tunnel or direct gateway connection depending on the selected transport method.

## Security Considerations

- Use loopback bindings with either SSH or Tailscale for secure connections
- Implement token/password authentication when binding to non-loopback interfaces

## Troubleshooting

Common issues include:

- **Exit code 127**: PATH configuration problems
- **SSH connectivity failures**: Check key authentication and host accessibility
- **Port forwarding mismatches**: Verify WebSocket connection ports match configuration
