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
- Scheduled group notices — event reminders go out to every SL group mapped to the event's genre, on time, exactly once (even across restarts).
- Staff reminder IMs — "you're on in 30 minutes" to the DJ and host of an event.
- Group invites & auto-greet — welcome arrivals at your venue and offer your group, if you turn it on (Manage Venue → Auto-Greet & Invite).
- Notice attachments — drop an item on the bot in-world (or
accept via the dashboard); it files it into its
- XTech Bot -folder, and you can attach it to group notices from the Bots page. - FAQ auto-replies — IM it "redelivery?" and it answers, hands out items, or teleport-links people around your build — set up on the Bots page's Auto Answer tab. Anyone can also ask it "events" for what's coming up.
- Group chat messages — post into a group's live chat session (works for event groups where the bot may chat but not send notices), manually or as a scheduled event reminder.
- Presence — sit it on a stand or stool (a scan lists nearby furniture — no UUID hunting), play poses, drive furniture pose menus from the dashboard, and wear your saved SL Outfits, with optional auto-rotation of both. It gets back on its stand by itself after relogs, region restarts and Send Home.
- Visitor stats — group share — the venue server counts arrivals on its own parcel with or without a bot; a bot adds the "in your group" share to Visitor Stats.
- Manual actions — send an IM, group notice, group chat message or item right now, from the dashboard.
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
- 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.
- A machine that stays on, with Docker. A small Linux VPS, a home server, or a Windows PC with Docker Desktop.
- The bot folder — two small text files you received:
docker-compose.ymland.env.example. The bot software itself is a prebuilt image pulled from our registry; there is nothing to build. - 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
- Open Bots → Register a New Bot and give it a name.
- You're shown the bot's token and a ready-made
.envblock. Copy it now — the token is only displayed once. (Lost it? Regenerate Token on the same page and update your.env.) - In the Run Your Bot (Docker) card on the same page, click
Generate Registry Token. It hands you a complete
docker logincommand — also shown once. This is what lets your machine pull the bot image; your web account (with a venue) is the login. - 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)
- 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.
- 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 - 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
- Updating: when we announce a new bot version, run
docker compose pull && docker compose up -d. That's the whole update. Your.envand the saved 2FA hash (a Docker volume) both survive it. - Stopping:
docker compose down. Start again withdocker compose up -d. - Inventory hygiene: the bot keeps its notice attachments
under the
- XTech Bot -folder; new arrivals land inNew. Manage it from the dashboard's Bots page — the attachment picker is locked to that folder on purpose. - Don't rush the IMs. Outbound IMs are deliberately paced —
SL suspends accounts that burst IMs ("excessive instant messages"). Leave
SL_IM_MIN_GAP_MSalone unless you enjoy support tickets.
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. |