SBAzeroth is a desktop control center for monitoring and safely operating a local AzerothCore deployment.
It combines a Wails desktop shell with a Go backend and a React/TypeScript frontend. The current desktop target is macOS; the frontend can also run as a browser preview with mock data.
Version: 1.1.0
The dashboard summarizes server health, realm activity, resource usage, service state, and active dungeon runs.
The services view exposes the managed authserver and worldserver processes, their readiness state, ports, uptime, and lifecycle actions.
Diagnostics collects actionable health checks and provides a safe support bundle without configuration files, environment variables, secrets, or absolute deployment paths.
Monitoring presents CPU, memory, disk, process, port, and readiness telemetry for the local deployment.
- Start services in the safe order:
authserver, readiness check,worldserver, readiness check. - Stop gracefully with
saveall,server shutdown 10, andSIGINTforauthserver. - Restart as a strict Stop/Start sequence.
- Show step-by-step progress, failures, and rollback information.
- Prevent concurrent lifecycle operations.
- Protect external or read-only processes from destructive actions.
- Block ordinary window closing while managed processes are active, so the world can be saved first.
SBAzeroth only controls processes started by the current application session. Processes found after a restart are treated as external/read-only; a PID alone does not grant permission to send commands.
- Server hero with operational status, realm type, XP rates, and deployment identity.
- Current server status and service readiness.
- Online character count, faction balance, groups, raids, average latency, and realm activity.
- Active dungeon-run summary and links to investigation screens.
- Dedicated views for services, diagnostics, monitoring, logs, console, and players.
- Live bounded tail for
authserverandworldserveroutput. - Pause and autoscroll controls.
- Search and filters by source and severity.
- Copy visible log lines.
- Managed worldserver console with safety-oriented command handling.
- Runtime logs stored under
.sbazeroth/runtime/with0600permissions. - Log rotation limited to a 16 MiB active file and one
.1backup.
Dungeon Runner is the main workflow for preparing and observing automated dungeon parties.
- Build parties from eligible online characters.
- Filter by dungeon, level, class, faction, and role.
- Respect faction locks and ignored players.
- Balance automatic party selection across available characters.
- Start and monitor dungeon runs.
- Show active runs, results, party composition, bot levels, and run history.
- Repeat a previous party and run multiple parties as a batch.
Raid Runner prepares and monitors raid-sized bot groups through the Raid Runner
integration built into mod-dungeon-clear.
- Open an active raid automatically when the application starts.
- Select eligible RND/addclass bots in the application from their active talent builds and pass explicit
mt,ot, andhealroles to the module. - Create named local premades, arrange up to eight five-player groups, and add, replace, or remove saved player characters through paginated Character DB search.
- Keep explicit
MT,OT,Heal, andDPSassignments with class icon, level, current item level, and active specialization details. - Reuse a saved premade from New raid after faction, talents, availability, composition, and raid capacity are revalidated.
- Track provisioning, boss progress, party health/mana, combat state, loot, and recent events.
- Start, watch, stop, and inspect raid runs without restarting the desktop application.
- Hand the provisioned raid to Dungeon Clear while Raid Runner owns raid-specific roster and lifecycle policy.
Settings keeps local application preferences and deployment paths in one place.
- Switch the interface language between English and Russian.
- Configure the deployment root and authserver/worldserver binary paths.
- Show when a change requires a server restart before it takes effect.
Core Config is a metadata-aware editor for the deployment’s AzerothCore settings. It supports safe, reviewed changes to non-sensitive parameters.
- Read
worldserver.confandauthserver.conffrom the configured deployment root. - Group settings by functional area.
- Show descriptions, types, defaults, and current values from the metadata catalog.
- Wrap long values so paths and multi-line settings remain readable.
- Keep configuration access inside
SBAZEROTH_SERVER_ROOT. - Validate parameter names, value types, duplicate keys, and newline constraints before writing.
- Protect sensitive parameters from editing and redact them in the UI.
- Review a before/after diff and explicitly confirm each change.
- Create a
.bakbackup before replacing the configuration file. - Write through a temporary file and atomically replace the original configuration.
Modules provides a read-only overview of the server’s installed or discovered modules.
- List module directories detected in the deployment.
- Show module identity and available metadata.
- Keep module discovery separate from lifecycle controls.
- Surface missing or unreadable module data without modifying the deployment.
- Read-only character and realm discovery from the configured deployment.
- Metadata-aware Core Config presentation and editing.
- Long values are wrapped for safe inspection and editing.
- Configuration remains inside the selected deployment root.
- No automatic
SIGKILLfor managed lifecycle operations. - External processes are never treated as owned processes.
- Diagnostic ZIPs exclude
.conffiles, environment variables, secrets, and absolute deployment paths. - Runtime file access is restricted to the configured deployment root.
- Native macOS application icon and a dark Azeroth-inspired visual theme.
- Desktop shell: Wails 2
- Backend: Go 1.25+
- Frontend: React 19, TypeScript, Vite 8
- UI icons: Lucide React
- Unit tests: Go test and Vitest
- End-to-end tests: Playwright
The Go backend owns deployment discovery, process lifecycle, monitoring, logs, player data, and dungeon-runner services. The React frontend renders the control center and communicates with the backend through the Wails gateway. Browser preview mode uses deterministic mock data and does not operate a real deployment.
- macOS ARM64 for the current desktop build.
- Go 1.25 or newer.
- Node.js 24 LTS or newer.
- pnpm 11.
- Wails CLI v2.15.0 for desktop development and production builds.
SBAzeroth uses the deployment root as the source for configuration, logs, data, and runtime resources:
export SBAZEROTH_SERVER_ROOT=/path/to/azerothcoreThe default root is $HOME/Documents/server. Binary locations can be configured independently:
export SBAZEROTH_AUTHSERVER_BINARY=/path/to/authserver
export SBAZEROTH_WORLDSERVER_BINARY=/path/to/worldserverBy default, configuration is read from stable/etc/worldserver.conf and stable/etc/authserver.conf inside the deployment root.
SBAzeroth stores its own settings in a local SQLite database:
<UserConfigDir>/SBAzeroth/sbazeroth.db
The database contains runtime paths, the interface language, Dungeon Runner preferences, and Raid Runner premades scoped to the selected deployment. It does not replace the AzerothCore MySQL databases and must not be used for passwords or other secrets. On the first launch after upgrading, the application imports the previous settings.json and WebView localStorage preferences automatically.
Close SBAzeroth before copying the database manually. SQLite WAL mode may create sbazeroth.db-wal and sbazeroth.db-shm next to the main file; include these files in a raw file backup, or create the backup while the application is stopped.
Raid Runner использует raid-контракт mod-dungeon-clear. SBAzeroth сам читает активные таланты RND/addclass-ботов уровня 60+, собирает autofill-состав одной фракции и передаёт его как party=Main:mt,Offtank:ot,Healer:heal,Dps. В таком explicit-составе имя без суффикса роли эквивалентно :dps. Обычные персонажи игроков не используются в autofill, но могут быть явно добавлены в сохранённый premade через paginated Character DB API. Ограничение RaidRunner.AutoRoster.Faction (auto, alliance или horde) применяется и при выборе на стороне приложения.
Именованные premade-составы сохраняются в локальной SQLite по GUID персонажей, позиции 0..39 и назначенной пользователем роли. Изменяемые данные — имя персонажа, level, active spec, current ilvl и availability — перечитываются из Character DB; сбой расчёта отображаемого current ilvl не делает валидного бота недоступным. Перед запуском применяются лимиты конкретного рейда: ZG/AQ20 до 20 участников, Naxxramas до 25, остальные поддержанные рейды до 40.
Текущая версия mod-dungeon-clear сортирует explicit roster по ролям перед распределением по raid subgroups. SBAzeroth сохраняет и передаёт пользовательский порядок, но для точного воспроизведения этих групп внутри игры модулю нужен отдельный контракт position/subgroup и размещение участников по нему в provisioning.
Для выборки используются CharacterDatabaseInfo из stable/etc/worldserver.conf и PlayerbotsDatabaseInfo из stable/etc/modules/playerbots.conf. Если DBC талантов или одна из этих БД недоступны, запуск отклоняется до отправки команды с явной ошибкой.
Встроенный module-side fallback с командой size= по-прежнему настраивается параметрами Raid Runner:
# stable/etc/modules/mod_dungeon_clear.conf
RaidRunner.AutoRoster.Enabled = 1
RaidRunner.AutoRoster.RequireRndOrAddclass = 1
RaidRunner.AutoRoster.GenerateMissingBots = 0
RaidRunner.AutoRoster.AllowPlayerCharacters = 0
RaidRunner.AutoRoster.MinMembers = 10
RaidRunner.AutoRoster.MaxMembers = 40
RaidRunner.AutoRoster.MinLevel = 60
RaidRunner.AutoRoster.Faction = auto
RaidRunner.Recovery.MaxAttempts = 1
Параметры отвечают за следующее:
| Параметр | Назначение |
|---|---|
Enabled |
Включает обработку Raid Runner и module-side auto-roster. |
RequireRndOrAddclass |
Требует, чтобы каждый автоматически выбранный участник был RND/addclass-ботом. Рекомендуется 1. |
GenerateMissingBots |
Должен оставаться 0: поддерживаемый mod-playerbots не предоставляет ограниченный runtime API генерации ботов. При нехватке пула запуск отклоняется с диагностикой. |
AllowPlayerCharacters |
Разрешает обычных персонажей игроков. Для безопасного режима должно быть 0. |
MinMembers / MaxMembers |
Минимальный и максимальный размер автоматически создаваемого рейда. |
MinLevel |
Минимальный уровень RND-ботов, доступных для выбора. |
Faction |
Ограничение фракции: auto, alliance или horde. При auto используется фракция подходящего состава. |
Recovery.MaxAttempts |
Число автоматических попыток восстановить остановленный Dungeon Clear; после превышения рейд получает состояние failed. |
Безопасный режим только для ботов — RequireRndOrAddclass = 1, GenerateMissingBots = 0 и AllowPlayerCharacters = 0. Для запуска premade с обычными сохранёнными персонажами требуется явно включить AllowPlayerCharacters = 1; на autofill это не влияет. SBAzeroth фильтрует autofill по playerbots_account_type (RND и addclass) до отправки команды и сообщает, какой роли не хватает.
После изменения файла конфигурации перезапустите worldserver или выполните штатную перезагрузку конфигурации модуля. При ошибке конфигурации Raid Runner должен остановить запуск с объяснением проблемы, а не переходить в менее безопасный режим.
Install frontend dependencies:
pnpm installRun the browser preview with mock data:
pnpm devRun the Wails desktop development application:
go run github.com/wailsapp/wails/v2/cmd/wails@v2.15.0 devpnpm buildThe static bundle is written to dist/.
Build the production Wails application:
go run github.com/wailsapp/wails/v2/cmd/wails@v2.15.0 buildThe application bundle is generated at build/bin/sbazeroth.app.
For the project’s macOS packaging flow, use:
pnpm build:macAfter a successful build, the script can offer to install the application at /Applications/SBAzeroth.app.
The frontend is platform-independent, but native Wails packaging requires the target operating system’s toolchain and WebView dependencies. Run the build on the target platform:
go run github.com/wailsapp/wails/v2/cmd/wails@v2.15.0 buildFor Windows, use a Windows environment with Go, Node.js, pnpm, WebView2, and the Wails CLI installed. For Linux, use a Linux environment with Go, Node.js, pnpm, GTK/WebKit development packages, and the Wails CLI installed. The generated bundle is placed under build/bin/ according to the target platform.
Cross-compiling the complete desktop application from macOS is not currently supported by the repository packaging script because Wails depends on native WebView and platform toolchains.
Run Go tests:
go test ./...Run frontend unit tests:
pnpm testRun the Playwright end-to-end suite:
pnpm test:e2eCapture the preview screenshots:
pnpm exec playwright test e2e/preview-screenshots.spec.ts --project=desktop-chromeLifecycle tests use a fake runtime. Do not run Start, Stop, or Restart smoke tests against a production deployment.
Version 1.1.0 adds the Raid Runner workspace with automatic and manual rosters, saved premades backed by paginated Character DB lookup, live encounter monitoring, battle logs, and persisted raid history. It also improves Dungeon Runner candidate management and the managed worldserver console.
No license has been declared yet.








