The Notice Bot

A Second Life bot account that you run, in one small Docker container. It logs into SL like a client, connects out to the XTech controller, and from then on your dashboard drives it — no server hosting knowledge required beyond this page.

What it does

No open ports needed. The bot dials out to Second Life and to the controller. It runs happily behind home NAT, on a VPS, or on the PC in your closet — anywhere Docker runs and the machine stays on.

What you need

  1. A Second Life account for the bot. A regular account you create for this purpose (flag it as Scripted Agent in your SL account settings). It must be a member of the groups it will notice, with the group's Send Notices power.
  2. A machine that stays on, with Docker. A small Linux VPS, a home server, or a Windows PC with Docker Desktop.
  3. The bot folder — two small text files you received: docker-compose.yml and .env.example. The bot software itself is a prebuilt image pulled from our registry; there is nothing to build.
  4. Two credentials from the dashboard's Bots page — next section: a registry token (lets your machine pull the image) and a bot token (lets the bot connect to the controller).

Register the bot on the dashboard

  1. Open Bots → Register a New Bot and give it a name.
  2. You're shown the bot's token and a ready-made .env block. Copy it now — the token is only displayed once. (Lost it? Regenerate Token on the same page and update your .env.)
  3. In the Run Your Bot (Docker) card on the same page, click Generate Registry Token. It hands you a complete docker login command — also shown once. This is what lets your machine pull the bot image; your web account (with a venue) is the login.
  4. On Manage Venue → Notice Bot, attach the bot to your venue so events know who delivers them.

Run it — Linux

Any distro with Docker Engine + the compose plugin (install guide). Then, inside the bot folder:

# 1. Log the machine into the registry (paste the command from the Bots page)
docker login registry.xtech.dev -u YOUR-USERNAME -p YOUR-REGISTRY-TOKEN

# 2. Create your config from the template
cp .env.example .env
nano .env

# 3. Pull the image and start (detached; restarts itself on reboot)
docker compose pull
docker compose up -d

# 4. Watch it log in
docker compose logs -f

In .env, the essentials are:

SL_FIRST_NAME / SL_LAST_NAME / SL_PASSWORD The bot account's SL login. Single-word names use last name Resident.
CONTROLLER_WS_URL, BOT_TOKEN, BOT_NAME Paste these straight from the Register a New Bot panel.
SL_MFA_CODE Only if the account has two-factor enabled: put a current code in for the first start. The bot saves SL's device hash to a Docker volume, so you never need it again — clear the variable afterwards.
Everything else Safe defaults. The region-restart settings let the bot step aside during a restart and walk itself home after; the IM pacing settings keep it under SL's IM throttle.

Run it — Windows (Docker Desktop)

  1. Install Docker Desktop from docker.com. Accept the WSL 2 option when it asks (it will install/enable it for you), reboot if prompted, and make sure the whale icon says it's running.
  2. Open PowerShell in the bot folder (Shift+right-click the folder → Open PowerShell window here) and do the same steps:
    docker login registry.xtech.dev -u YOUR-USERNAME -p YOUR-REGISTRY-TOKEN
    Copy-Item .env.example .env
    notepad .env      # fill it in, save, close
    docker compose pull
    docker compose up -d
    docker compose logs -f
  3. Keep the machine awake. The container auto-starts with Docker Desktop, but Windows sleep stops Docker: Settings → System → Power → set Sleep to Never (and in Docker Desktop settings, enable Start Docker Desktop when you sign in).

Care & feeding

Troubleshooting

Dashboard shows the bot offline docker compose logs -f and read the last lines. The bot reconnects to both SL and the controller by itself, so a brief blip heals; a wrong password or token does not.
Token rejected Regenerate it on the Bots page, paste the new value into .env, then docker compose up -d.
docker compose pull says unauthorized / denied The machine isn't logged into the registry (or the registry token was regenerated since). Generate a token in the Bots page's Run Your Bot (Docker) card and run its docker login command again. Note the login belongs to your web account — it needs a venue attached to it.
Login wants 2FA every start The device hash isn't persisting — make sure you're using the supplied docker-compose.yml (it mounts the bot-data volume for exactly this).
Notices don't send to a group The bot must be in the group with the Send Notices power — check the Groups panel on the Bots page, which shows exactly this.
Bot vanished after a region restart It leaves before the restart and walks home afterwards, retrying until the region is back. Give it a few minutes; the logs narrate the whole trip.