# Install VidClaw

Get your self-hosted AI dashboard up and running in under a minute.

## Prerequisites

- A running [OpenClaw](https://github.com/openclaw/openclaw) instance
- SSH access to your server or [Tailscale](https://tailscale.com/) for remote access

## Quick Install

One command. Installs Node.js, Tailscale, and VidClaw automatically:

```bash
curl -fsSL vidclaw.com/install.sh | bash
```

Localhost only? Add `--no-tailscale`:

```bash
curl -fsSL vidclaw.com/install.sh | bash -s -- --no-tailscale
```

## Setup Options

`./setup.sh` accepts the following flags:

| Flag | Description |
| --- | --- |
| `--dry-run` | Print actions without executing them |
| `--tailscale [PORT]` | Enable Tailscale Serve integration (default port: 8443) |
| `--service-mode MODE` | Override service mode (`auto`, `systemd`, `launchd`, `direct`, `none`) |
| `--skip-service` | Install and build only; do not register a service |
| `--interactive` | Allow interactive sudo prompts when needed |
| `--skip-heartbeat` | Do not modify `../HEARTBEAT.md` |

## Service Modes

The `--service-mode` flag controls how VidClaw runs as a background service:

| Mode | Description |
| --- | --- |
| `auto` | Detect the best option for your OS (default) |
| `systemd` | Register as a systemd unit (Linux) |
| `launchd` | Register as a launchd agent (macOS) |
| `direct` | Run directly as a background process |
| `none` | Do not start any service |

## Accessing the Dashboard

VidClaw only binds to `localhost` — it is not exposed to the network. Two ways to access it remotely:

### Tailscale (default)

The installer enables [Tailscale Serve](https://tailscale.com/) by default on port 8443. Open `https://your-machine.your-tailnet.ts.net:8443` from any device on your tailnet.

### SSH tunnel

If you installed with `--no-tailscale`, use an SSH tunnel instead:

```bash
ssh -L 3333:localhost:3333 root@your-server
```

Then open [http://localhost:3333](http://localhost:3333/) on your local machine.

## Helper Scripts

VidClaw includes helper scripts for day-to-day management:

| Script | Description |
| --- | --- |
| `./start.sh` | Start the service. Add `--dev` for local dev mode (backend + Vite HMR). |
| `./stop.sh` | Stop the running service. |
| `./status.sh` | Check whether the service is running. |
| `./logs.sh` | Tail service logs. Use `-n 50` to limit lines, `--no-follow` to exit after printing. |

All scripts accept `--dry-run`, `--interactive`, and `--service-mode MODE`.

## Updating

```bash
cd ~/.openclaw/workspace/dashboard
./update.sh
```

Pulls the latest code, rebuilds the frontend, and restarts the service.

| Flag | Description |
| --- | --- |
| `--skip-git` | Skip git fetch/pull |
| `--skip-build` | Skip dependency install and build |
| `--no-restart` | Do not restart the service after update |
| `--allow-merge-pull` | Allow non-fast-forward pull when ff-only fails |

## Uninstalling

```bash
cd ~/.openclaw/workspace/dashboard
./uninstall.sh
```

Stops the service and removes the service registration. Your OpenClaw data is never touched.

Add `--purge-data` to also remove VidClaw's runtime data files (tasks, logs, activity).

**Need help?** Open an issue on [GitHub](https://github.com/madrzak/vidclaw/issues) or check the [changelog](/content/changelog/index.html) for recent updates.
