Source branch: feature/ai-brain-router Source commit: c2a09e0460465201a58aaab56c71424e9a96405e
5.8 KiB
Playable AzerothAI Realm
This profile turns the current prototype into a realm you can connect a WoW 3.3.5a client to.
It uses:
- the
mod-playerbots/azerothcore-wotlkPlayerbot branch mod-playerbotsmod-ale- AzerothAI's ALE bridge
- MySQL
- AzerothAI's local dashboard/runtime
- optional Ollama +
qwen3.5:4b
The server exposes only the standard WoW ports needed by the client:
- TCP 3724 — authserver
- TCP 8085 — worldserver
SOAP runs on TCP 7878 but the playable profile binds it to 127.0.0.1 only for the AzerothAI operator/GM channel.
Recommended network
For the mini PC, the cleanest private setup is:
Windows WoW PC ─────┐
│ LAN or Tailscale
HP EliteDesk ───────┘
├─ AzerothCore
├─ Playerbots
├─ ALE
├─ AzerothAI
└─ Ollama
If Tailscale is installed, the bootstrap automatically prefers the machine's Tailscale IPv4 address. Otherwise it uses the first LAN IPv4 address it can detect.
You can override it:
REALM_ADDRESS=192.168.1.50 bash deploy/playable/bootstrap.sh
Bootstrap
Run this from the AzerothAI checkout on the Linux host:
bash deploy/playable/bootstrap.sh
The script:
- builds AzerothAI and initializes its local D1/SQLite state
- generates private bridge/operator tokens
- starts AzerothAI on port 8787
- clones the Playerbots AzerothCore fork
- installs
mod-playerbotsandmod-ale - mounts
ale/azerothai_bridge.luainto the real worldserver - builds AzerothCore
- prepares client data and databases
- starts authserver/worldserver
- updates the realm address so another machine can connect
The generated secrets are stored outside the repo at:
~/azerothai-playable/runtime.env
with owner-only permissions.
Create your player/GM account
AzerothCore recommends account creation through the worldserver console rather than manually creating auth rows.
cd ~/azerothai-playable/azerothcore
docker attach ac-worldserver
Then:
account create YOURNAME YOURPASSWORD
account set gmlevel YOURNAME 3 -1
Detach from Docker without stopping worldserver:
Ctrl-P, then Ctrl-Q
Then save the same GM account for AzerothAI's local SOAP client:
bash deploy/playable/set-gm-credentials.sh YOURNAME YOURPASSWORD
Restart AzerothAI by stopping/re-running the playable profile so the new local credentials are loaded.
Connect the WoW client
In the 3.3.5a client's:
Data/enUS/realmlist.wtf
set:
set realmlist <the address printed by bootstrap>
Then launch the client normally and log in with the account you created.
The realm should appear as:
AzerothAI Lab
Dashboard
From another machine on the same LAN/Tailscale network:
http://<server-address>:8787
The dashboard and WoW realm are separate surfaces:
- WoW client: live game world
- AzerothAI dashboard: population, identities, memories, operator tools, events, model settings
AI brain
The realm can run without Ollama; decisions remain deterministic.
When Ollama is available:
ollama pull qwen3.5:4b
Then choose Ollama in AzerothAI's Server & Models page.
Routine Qwen decisions use non-thinking mode so the small host spends its generation budget on a fast structured action instead of hidden reasoning.
Autonomous living world
The playable profile now enables a real unattended Playerbot population by default.
- native Playerbots log in and keep playing even when no human is connected
- bots remain fully active while alone
- periodic artificial rerandomization/teleporting is pushed out to a one-year horizon so normal movement, questing, combat and leveling remain the source of progression
- ALE emits authoritative Playerbot snapshots with character GUID/account bindings
- AzerothAI adopts observed Playerbots as persistent resident identities
- the local autonomy worker periodically turns each resident's goals/personality/memories into high-level PlayerBotAI intentions
- AzerothCore/Playerbots remains authoritative for movement, combat, spells, quest rules, loot and actual outcomes
- Zaku is bound to a physical Undead Warlock Playerbot when a suitable body exists; his plot-armor rule stays runtime-only and is never exposed to his character context
For an already-running realm, apply the living-world upgrade with:
bash deploy/playable/enable-autonomous-world.sh
The default target is 10 simultaneously active Playerbots. Override it before running the helper, for example:
AZEROTHAI_RANDOM_BOTS=20 bash deploy/playable/enable-autonomous-world.sh
The helper does not report success merely because configuration files changed. It waits for real Playerbot accounts, physically-online bot characters, authoritative ALE observations, and at least one adopted AzerothAI resident.
Useful commands
Check status:
bash deploy/playable/status.sh
Stop the lab while preserving all data:
bash deploy/playable/stop.sh
Restart later by running bootstrap again.
Worldserver logs:
cd ~/azerothai-playable/azerothcore
docker compose logs -f ac-worldserver
AzerothAI log:
tail -f ~/azerothai-playable/azerothai.log
Autonomous high-level decisions:
tail -f ~/azerothai-playable/autonomy.log
If your existing lab was created by the PC-lab helper, the scripts automatically detect ~/azerothai-pc-lab as well.
Storage
By default:
~/azerothai-playable/
├── azerothcore/
├── client-data/
├── etc/
├── logs/
├── runtime.env
├── azerothai.log
└── azerothai.pid
The project checkout keeps AzerothAI's local D1 state in .wrangler/state.
Do not delete these directories if you want the realm and character history to survive restarts.