> ## Documentation Index
> Fetch the complete documentation index at: https://docs.equa.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# Multiple gateways

# Multiple Gateways (same host)

Most setups should use one Gateway because a single Gateway can handle multiple messaging connections and agents. If you need stronger isolation or redundancy (e.g., a rescue bot), run separate Gateways with isolated profiles/ports.

## Isolation checklist (required)

* `EQUABOT_CONFIG_PATH` — per-instance config file
* `EQUABOT_STATE_DIR` — per-instance sessions, creds, caches
* `agents.defaults.workspace` — per-instance workspace root
* `gateway.port` (or `--port`) — unique per instance
* Derived ports (browser/canvas) must not overlap

If these are shared, you will hit config races and port conflicts.

## Recommended: profiles (`--profile`)

Profiles auto-scope `EQUABOT_STATE_DIR` + `EQUABOT_CONFIG_PATH` and suffix service names.

```bash theme={null}
# main
equabot --profile main setup
equabot --profile main gateway --port 18789

# rescue
equabot --profile rescue setup
equabot --profile rescue gateway --port 19001
```

Per-profile services:

```bash theme={null}
equabot --profile main gateway install
equabot --profile rescue gateway install
```

## Rescue-bot guide

Run a second Gateway on the same host with its own:

* profile/config
* state dir
* workspace
* base port (plus derived ports)

This keeps the rescue bot isolated from the main bot so it can debug or apply config changes if the primary bot is down.

Port spacing: leave at least 20 ports between base ports so the derived browser/canvas/CDP ports never collide.

### How to install (rescue bot)

```bash theme={null}
# Main bot (existing or fresh, without --profile param)
# Runs on port 18789 + Chrome CDC/Canvas/... Ports 
equabot onboard
equabot gateway install

# Rescue bot (isolated profile + ports)
equabot --profile rescue onboard
# Notes: 
# - workspace name will be postfixed with -rescue per default
# - Port should be at least 18789 + 20 Ports, 
#   better choose completely different base port, like 19789,
# - rest of the onboarding is the same as normal

# To install the service (if not happened automatically during onboarding)
equabot --profile rescue gateway install
```

## Port mapping (derived)

Base port = `gateway.port` (or `EQUABOT_GATEWAY_PORT` / `--port`).

* `browser.controlUrl port = base + 2`
* `canvasHost.port = base + 4`
* Browser profile CDP ports auto-allocate from `browser.controlPort + 9 .. + 108`

If you override any of these in config or env, you must keep them unique per instance.

## Browser/CDP notes (common footgun)

* Do **not** pin `browser.controlUrl` or `browser.cdpUrl` to the same values on multiple instances.
* Each instance needs its own browser control port and CDP range.
* If you need explicit CDP ports, set `browser.profiles.<name>.cdpPort` per instance.
* Remote Chrome: use `browser.profiles.<name>.cdpUrl` (per profile, per instance).

## Manual env example

```bash theme={null}
EQUABOT_CONFIG_PATH=~/.equabot/main.json \
EQUABOT_STATE_DIR=~/.equabot-main \
equabot gateway --port 18789

EQUABOT_CONFIG_PATH=~/.equabot/rescue.json \
EQUABOT_STATE_DIR=~/.equabot-rescue \
equabot gateway --port 19001
```

## Quick checks

```bash theme={null}
equabot --profile main status
equabot --profile rescue status
equabot --profile rescue browser status
```
