GitHub - tvararu/tuicraft: Chat in WoW 3.3.5a from your terminal

GitHub

4 min read Original article ↗

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 | sh

Terminal showing tuicraft running

Features

🔐 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 | sh

Override 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_OBJECT to 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 ❌

✉️ Mail

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 .wowm format, 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

License

AGPLv3.