Chat in WoW 3.3.5a from your terminal. Targets AzerothCore private servers and is designed to be both human and LLM friendly.
curl -fsSL tuicraft.vararu.org/install.sh | shFeatures
🔐 Authentication - Secure login, realm selection, and character select
💬 Chat - Say, yell, whisper, guild, party, raid, and channel messages with
/r reply support
👥 Party Management - Invite, kick, leave, leader transfer, accept/decline invitations, live group roster with member stats
👫 Friends List - View online/offline friends, add/remove friends, real-time online status notifications
🚫 Ignore List - Server-side ignore list, messages from ignored players filtered from chat
🔍 Who Search - Query online players with filters, human and JSON output
🖥️ Interactive TUI - Full terminal UI with slash commands and channel switching
🤖 CLI & Daemon - Background daemon, pipe mode, and JSONL output for scripting
📝 Session Logging - Persistent session log with tuicraft logs playback
⚡ Zero Dependencies - Pure TypeScript on Bun, compiles to a single binary
Install
curl -fsSL tuicraft.vararu.org/install.sh | shOverride the install directory (default: /usr/local/bin):
TUICRAFT_INSTALL_DIR=~/.local/bin curl -fsSL tuicraft.vararu.org/install.sh | sh
Pre-built binaries are available on the releases page.
Compatibility
| Platform | Architecture | Status |
|---|---|---|
| Linux | x64, ARM64 | Supported |
| macOS | Apple Silicon, Intel | Supported |
| Windows | WSL2 | Supported (uses Linux binary) |
Development
Requires mise, automatically installs bun:
mise trust -y
mise bundle
mise build
Testing
To run live integration tests against a real server, copy the example config and fill in your credentials:
cp mise.local.toml.example mise.local.toml
# edit mise.local.toml with your account details
mise test:live
Usage
tuicraft help # show help
tuicraft setup
tuicraft # interactive TUI
tuicraft send "Hello" # send a say message (auto-starts daemon)
tuicraft send -w Hemet "x" # whisper
tuicraft send -g "lfm" # guild chat
tuicraft who # who query
tuicraft read --wait 5 # read events, wait up to 5s
tuicraft tail # continuous event stream
tuicraft status # daemon status
tuicraft stop # stop daemon
tuicraft skill # print SKILL.md for AI agents
Roadmap
- 🔐 0.1 - Auth & Connect: SRP-6 auth, Arc4-encrypted world session, character select, keepalive
- 💬 0.2 - Chat: Send/receive whispers, say, guild chat. TUI with interactive and pipe modes
- 👥 0.3 - Party Management: Invite, kick, leave, leader transfer, group roster, member stats
- 🌍 0.4 - World State: Parse
SMSG_UPDATE_OBJECTto track nearby entities - 🏃 0.5 - Movement: Send
CMSG_MOVE_*opcodes, pathfinding via mmaps - 🤖 0.6 - Automation: Scriptable command sequences and event subscriptions
Feature coverage
Based on the list of all possible opcodes. Might still be missing some things that the official game client does.
🔐 Authentication
| Feature | Status |
|---|---|
| SRP-6 login | ✅ |
| Reconnect proof | ✅ |
| Realm selection | ✅ |
| Character select | ✅ |
| Arc4 encryption | ✅ |
| Keepalive / time sync | ✅ |
| Warden anticheat | ❌ |
💬 Chat
| Feature | Status |
|---|---|
| Say, yell | ✅ |
Whisper (/w, /r) |
✅ |
| Guild, officer | ✅ |
| Party, raid | ✅ |
Channels (/1, /2, …) |
✅ |
| MOTD | ✅ |
| Server broadcast messages | ✅ |
| Chat restricted / wrong faction notices | ✅ |
Text emotes (/e, /emote) |
✅ |
| DND / AFK status | ✅ |
👥 Social
| Feature | Status |
|---|---|
| Who search | ✅ |
| Party invite / kick / leave / leader | ✅ |
| Group roster + member stats | ✅ |
| Friends list | ✅ |
| Ignore list | ✅ |
| Channel join / leave | ✅ |
| Duel accept / decline | ✅ |
🏰 Guild
| Feature | Status |
|---|---|
| Guild chat | ✅ |
| Guild roster | ✅ |
| Guild events | ✅ |
| Guild invite / kick / leave / promote | ✅ |
| Guild bank | ❌ |
| Feature | Status |
|---|---|
| Send / receive mail | ❌ |
| Mail notifications | ✅ |
🏪 Economy
| Feature | Status |
|---|---|
| Auction house | ❌ |
| Vendors | ❌ |
| Trade | ❌ |
🌍 World
| Feature | Status |
|---|---|
| Object updates | ✅ |
| Movement | ❌ |
| Spells / auras | ❌ |
| Combat log | ❌ |
| Loot | ❌ |
| Items / inventory | ❌ |
📜 PvE
| Feature | Status |
|---|---|
| Quests | ❌ |
| NPC gossip | ❌ |
| Trainers | ❌ |
| Taxi | ❌ |
| Instances / dungeons | ❌ |
⚔️ PvP
| Feature | Status |
|---|---|
| Battlegrounds | ❌ |
| Arena | ❌ |
Random roll (/roll) |
✅ |
📊 Progression
| Feature | Status |
|---|---|
| Achievements | ❌ |
| Talents | ❌ |
| LFG / dungeon finder | ❌ |
| Calendar | ❌ |
Prior art
- swiftmatt/wow-chat-client - Node.js WoW 3.3.5a chat client, primary reference for packet formats and SRP-6 auth flow
- azerothcore/azerothcore-wotlk - open-source WoW 3.3.5a server emulator, used as the canonical reference for handler implementations and update field definitions
- mod-playerbots/mod-playerbots - AzerothCore playerbot module, the target server environment for tuicraft
- wowserhq/wowser - browser-based WoW 3.3.5a client in JS/React/WebGL, useful for cross-referencing opcodes, auth error codes, and realm parsing
- gtker/wow_messages - auto-generated
WoW protocol definitions in
.wowmformat, machine-readable spec for every opcode across Vanilla/TBC/WotLK - namreeb/namigator - C++ pathfinding and line-of-sight library for WoW, reads MPQ files and generates navmesh via Recast/Detour
- gtker/namigator-rs - Rust FFI bindings for namigator, API reference for the pathfinding integration
