Files
chanora/docs/references/teaspeak-offline-reference.md
T
Edison Jwa 328776622f docs(references): fix formatting issues (TODO-074,075,076,077,078,082)
Fix malformed MIFCOM badge table row, replace section numbering
placeholder, split respeak reference into Part I/II, add version
notes for teaspeak contradictions, fix truncated YaTQA error codes.
2026-06-11 09:40:03 +09:00

50 KiB

TeaSpeak Offline Reference Document

Compiled from GitHub repositories (TeaSpeak, TeaWeb, TeaMusic) and archived website (teaspeak.de).
Last updated: June 2026


Table of Contents

  1. Project Overview
  2. Architecture
  3. Feature Comparison
  4. Complete Feature List
  5. Protocol Implementation Details
  6. Audio/Codec Support
  7. Channel Types and Properties
  8. Permissions System
  9. Server Configuration
  10. Music Bot System
  11. Chat System
  12. Token System
  13. ServerQuery Notify System
  14. Ban System
  15. Web Client Architecture
  16. Music Bot Architecture (TeaMusic)
  17. Server Binary Distribution
  18. License Information
  19. Known Issues and Limitations
  20. Properties Reference
  21. Feature Support Commands

Project Overview

TeaSpeak is a free-to-use, community-driven VoIP (Voice over IP) communication platform consisting of a server and multiple client implementations. It is designed as an alternative to TeamSpeak with enhanced features, no license fees, and open-source components.

Components

Component Repository Language Description
TeaSpeak Server TeaSpeak/TeaSpeak C++ (proprietary binary) The server daemon (issue tracker + docs in repo)
TeaWeb TeaSpeak/TeaWeb TypeScript (84.1%), SCSS, HTML Web client (open source, MPL-2.0)
TeaMusic TeaSpeak/TeaMusic C++ (99.3%), CMake Music bot provider plugins (open source)
TeaClient Not open source Native Desktop client for Windows/Linux

Key Design Principles

  • Free to use (no license fees)
  • Community-driven development
  • Self-hostable server
  • Web client (installation-less)
  • Built-in music bots
  • Hidden/invisible channel system
  • Extended ServerQuery interface
  • Compatible with TeamSpeak 3 protocol

Architecture

Server Architecture

The TeaSpeak server is a single binary (TeaSpeakServer) written in C++ that handles:

  • Voice connections via UDP (native TeamSpeak protocol) and WebRTC (for web clients)
  • ServerQuery via TCP telnet-like interface (default port 10101)
  • File transfer via HTTP/HTTPS (default port 30303)
  • Web client hosting via built-in web server
  • Music bot management with provider plugin system
  • Database using SQLite (default) or MySQL
  • Instance management supporting multiple virtual servers

Network Architecture

┌─────────────────┐     ┌──────────────────┐
│  Native Clients │────▶│   UDP Voice      │
│  (TeaClient/TS3)│     │   (Port 9987)    │
└─────────────────┘     └──────────────────┘
                               │
┌─────────────────┐     ┌──────────────────┐
│  Web Clients    │────▶│   WebRTC Bridge  │
│  (Browser)      │     │   (via HTTPS)    │
└─────────────────┘     └──────────────────┘
                               │
┌─────────────────┐     ┌──────────────────┐
│  Query Clients  │────▶│   ServerQuery    │
│  (YaTQA, bots)  │     │   (Port 10101)   │
└─────────────────┘     └──────────────────┘
                               │
┌─────────────────┐     ┌──────────────────┐
│  File Transfer  │────▶│   HTTP/HTTPS     │
│                 │     │   (Port 30303)   │
└─────────────────┘     └──────────────────┘

Threading Model (1.5.4+)

As of version 1.5.4, the server merges the web, query, and voice client network event loops into fewer threads, reducing resource usage.


Feature Comparison

From the archived teaspeak.de website:

Feature TeaSpeak TeamSpeak Discord Skype
Community and non-commercial driven
Spam/Ad free
Web Client / Installation-less Client
Host your own private server
High quality video and screen sharing
Built in music bots
Ability to hide channels
Cross and permanent channel chat
Built in unlimited file transfer
High quality OPUS voice transmission
Offline / LAN functionality
Advanced permissions system
Easy to use chat box with markdown support
Open Source Partial
Direct Messaging

Complete Feature List

Server Features (Unique to TeaSpeak)

  1. Built-in Music Bots - High-quality, low bandwidth music bots with playlist management
  2. Invisible/Hidden Channels - Channels hidden based on i_channel_view_power
  3. Customizable Messages - Customize server stop messages, default descriptions, version display, license type, query MOTD, country flags
  4. Built-in Console - Stdout commands: end|shutdown, chat, permgrant, passwd
  5. VPN Detection - b_client_ignore_vpn permission to bypass
  6. Scheduled Shutdowns - serverprocessstop type=schedule time=60 msg=
  7. Increased Slot Count - Up to 1024 slots per virtual server (unlimited virtual servers)
  8. Per-Server Binding - Individual binding options per virtual server
  9. Global Ban System - Instance-wide bans with sid=0
  10. Ban Enforcement List - Log of all ban enforcements (bantriggerlist)
  11. Ban Editing - Direct ban editing (not delete+recreate)
  12. HWID Bans - Ban by hardware ID
  13. Encrypted Query - SSL/TLS encrypted ServerQuery connections
  14. Extended ServerQuery Notifies - Almost all events available to query clients
  15. Global Group Assignment - Instance-wide group assignment via use 0
  16. Channel Chat Conversations - Persistent cross-channel chat
  17. SNI Certificate Support - Different certificates for different server names
  18. WebRTC for Web Clients - Native WebRTC voice bridge
  19. Video Broadcasting - Camera and screen sharing via WebRTC
  20. Automatic Permission Updates - New permissions auto-applied via i_group_auto_update_type
  21. Channel Creation Limits - Per-client limits on temporary/semi/permanent channels
  22. Customizable Token System - Configurable token values and actions
  23. Multiple IP Bindings - IPv4 and IPv6 multi-binding support
  24. Compressed Snapshots - Server snapshot compression
  25. IP Range Whitelists/Blacklists - For query and file transfer

TeamSpeak Compatibility

TeaSpeak implements the TeamSpeak 3 Server Query protocol and voice protocol, making it compatible with:

  • TeamSpeak 3 clients (native voice)
  • YaTQA (query administration)
  • SinusBot (music bot)
  • Other TS3-compatible tools

Protocol Implementation Details

Voice Protocol

  • Transport: UDP for native clients, WebRTC for web clients
  • Codec: OPUS only (all non-OPUS codecs dropped in 1.5.0)
    • Speex 8/16/32kbps: Removed
    • CELT-Mono 48kbps: Removed
    • OPUS Voice: Default
    • OPUS Music: Available
  • Encryption: Configurable per channel (channel_codec_is_unencrypted) and server-wide (virtualserver_codec_encryption_mode)
  • Video Codecs: VP8 (default, better with packet loss), H264 available
  • Packet handling: Control commands separated from voice/keepalive (1.4.7+) for reliability
  • RTO: 200ms (matching Linux kernel TCP/IP RFC 6298)
  • WebRTC: Uses libnice for ICE/STUN, thread pool for bridges (not per-client threads)

ServerQuery Protocol

  • Transport: TCP (plain text) or TLS/SSL encrypted
  • Default port: 10101
  • Newline: \n (changed from \n\r in 1.4.14-beta6)
  • Max command length: Configurable via config.yml
  • Flood protection: Configurable commands/time/ban_time
  • Authentication: Server admin password, token-based, or name-based

File Transfer Protocol

  • Transport: HTTP/HTTPS
  • Default port: 30303
  • Commands: ftcreatedir, ftgetfilelist, ftgetfileinfo, ftdeletefile, ftinitupload, ftinitdownload, ftrenamefile, ftlist, ftstop
  • Bulk support: ftdeletefile and ftgetfileinfo support bulks
  • Bandwidth limits: Per-transfer and server-wide configurable

Audio/Codec Support

Voice Codecs (Server 1.5.0+)

Codec Status Notes
OPUS Voice Default Primary codec
OPUS Music Supported Higher quality for music
Speex 8/16/32kbps Removed Permissions removed
CELT-Mono 48kbps Removed Permission removed

Video Codecs

Codec Status Notes
VP8 Default Better with packet loss
H264 Available Poor performance with packet loss

Video Permissions

  • b_video_screen - Screen sharing permission
  • b_video_camera - Camera permission
  • i_video_max_kbps - Max video bitrate
  • i_video_max_streams - Max total video streams
  • i_video_max_screen_streams - Max screen share streams
  • i_video_max_camera_streams - Max camera streams

Audio Processing (Web Client)

  • Voice Activity Detection (VAD) - Default mode
  • Push-to-Talk (PTT) with configurable delay
  • Threshold-based audio filtering
  • Echo test support
  • Whisper support
  • Native audio encoding/decoding (Rust-based worker, replaced Emscripten)

Channel Types and Properties

Channel Types

Type Flag Description
Permanent channel_flag_permanent=1 Persists after all users leave
Semi-Permanent channel_flag_semi_permanent=1 Persists until deleted
Temporary Both flags 0 Auto-deleted when empty (with configurable delay)
Default channel_flag_default=1 Landing channel for new connections
Password-Protected channel_flag_password=1 Requires password to join
Private/Hidden channel_flag_private=1 Invisible to unauthorized users

Conversation Modes (1.4.22+)

Value Mode Description
0 None Shows channel description instead of conversation
1 Public Default conversation mode
2 Private Only accessible while in the channel

Sidebar Modes (1.5.0+)

Value Mode Description
0 Public Default sidebar mode

Channel Properties (Key)

Property Type Default Description
channel_name string - Channel name
channel_topic string empty Channel topic
channel_description string empty Channel description
channel_password string empty Channel password
channel_codec number 4 (OPUS) Audio codec
channel_codec_quality number 7 Codec quality (0-10)
channel_maxclients number -1 (-1=unlimited) Max clients
channel_maxfamilyclients number -1 Max clients including sub-channels
channel_needed_talk_power number 0 Required talk power
channel_forced_silence bool 0 Force silence in channel
channel_delete_delay number 0 Delay before temp channel deletion
channel_conversation_history_length number 1500 Chat history length (-1=none, 0=unlimited)
channel_conversation_mode number 1 Conversation mode
channel_sidebar_mode number 0 Sidebar mode
channel_created_at number - Creation timestamp
channel_created_by number - Creator database ID
channel_last_left number - Last time a user left

Channel Name Spacers

TeaSpeak supports [spacerX] channel name spacers for visual organization in the channel tree.


Permissions System

Permission Calculation Flow

TeaSpeak uses a multi-layer permission system:

  1. Server Groups - Global permissions from server group membership
  2. Channel Groups - Channel-specific permissions
  3. Client Permissions - Per-client overrides
  4. Channel Client Permissions - Per-client per-channel overrides
  5. Playlist Permissions - Music bot playlist permissions

Each permission has:

  • Value - The granted power level
  • Negate - If set, the permission is denied regardless
  • Skip - If set, skips this permission in calculation

TeaSpeak-Specific Permissions

General Permissions

Permission Description
b_client_allow_invalid_badges Bypass server kick for invalid badges
b_client_allow_invalid_packet Bypass server kick for empty packets
b_client_even_textmessage_send Allow sending private messages to self
b_client_ignore_vpn Bypass VPN check
b_client_music_server_list List all music bots on server
b_client_music_channel_list List music bots in current channel
b_client_music_create Create music bots
b_client_music_delete_own Delete own music bots
i_client_music_delete_power Power to delete music bots
i_client_music_needed_delete_power Needed power to delete music bots
i_client_music_info Power for .mbot info
i_client_music_needed_info Needed info power for bot
i_client_music_play_power Power for .mbot play
i_client_music_needed_play_power Needed play power for bot
i_client_music_rename_power Power for .mbot rename
i_client_music_needed_rename_power Needed rename power for bot
i_client_music_limit Max music bots per client
i_client_max_clones_hwid Max clones with same HWID
i_client_max_clones_ip Max clones with same IP
b_virtualserver_modify_music_bot_limit Modify server music bot limit

Channel View Permissions

Permission Description
i_channel_view_power Channel view power
b_channel_ignore_view_power Bypass visibility check
i_channel_needed_view_power Required view power for channel

Group Management Permissions

Permission Description
i_channel_group_member_add_power Power to set channel group
i_channel_group_needed_member_add_power Needed power to add to channel group
i_channel_group_member_remove_power Power to remove channel group
i_channel_group_needed_member_remove_power Needed power to remove channel group
i_channel_group_modify_power Power to modify channel group
i_channel_group_needed_modify_power Needed power to modify channel group
i_server_group_self_add_power Power to add self to server group
i_server_group_self_remove_power Power to remove self from server group
i_channel_group_self_add_power Power to add self to channel group
i_channel_group_self_remove_power Power to remove self from channel group

Ban Permissions

Permission Description
b_client_ban_create_global Create global ban rules
b_client_ban_delete_global Delete any global ban rules
b_client_ban_delete_own_global Delete own global ban rules
b_client_ban_edit Edit local ban rules
b_client_ban_edit_global Edit global ban rules
b_client_ban_list_global List global ban rules

Channel Limit Permissions

Permission Description
i_client_max_channels Max channels per client
i_client_max_temporary_channels Max temporary channels
i_client_max_semi_channels Max semi-permanent channels
i_client_max_permanent_channels Max permanent channels

Chat/Conversation Permissions

Permission Description
b_channel_create_modify_conversation_private Modify conversation private flag
b_channel_create_modify_conversation_history_length Modify history length (value = max)
b_channel_create_modify_conversation_history_unlimited Set unlimited history
b_channel_create_modify_conversation_mode_private Create/modify private conversation mode
b_channel_create_modify_conversation_mode_public Create/modify public conversation mode
b_channel_create_modify_conversation_mode_none Create/modify none conversation mode

Other Permissions

Permission Description
b_channel_ignore_description_view_power Bypass description view power
b_channel_ignore_subscribe_power Bypass subscribe power
b_virtualserver_modify_country_code Edit server country code
b_virtualserver_select_godmode Query can select server without binding (removed 1.5.0+)
i_channel_subscribe_power (-1) Prevent channel subscription
b_channel_create_modify_sidebar_mode Modify channel sidebar mode
b_channel_modify_temp_delete_delay Modify temp delete delay
b_channel_create_modify_force_password Force password on channel creation

Removed Permissions (1.5.0+)

  • b_channel_create_modify_with_codec_speex8
  • b_channel_create_modify_with_codec_speex16
  • b_channel_create_modify_with_codec_speex32
  • b_channel_create_modify_with_codec_celtmono48
  • b_channel_create_private (replaced by conversation modes)
  • b_virtualserver_select_godmode (removed, queries always visible)

Server Configuration

config.yml Options

The server uses a YAML configuration file with the following key sections:

Instance Properties

Property Default Description
serverinstance_filetransfer_host 0.0.0.0,[::] File transfer bind address
serverinstance_filetransfer_port 30303 File transfer port
serverinstance_filetransfer_max_connections 100 Max file transfer connections
serverinstance_filetransfer_max_connections_per_ip 20 Max file transfer connections per IP
serverinstance_query_host 0.0.0.0,[::] Query bind address
serverinstance_query_port 10101 Query port
serverinstance_query_max_connections 100 Max query connections
serverinstance_query_max_connections_per_ip 3 Max query connections per IP
serverinstance_serverquery_flood_commands 3 Flood protection commands
serverinstance_serverquery_flood_time 1 Flood protection time (seconds)
serverinstance_serverquery_ban_time 600 Query ban time (seconds)
serverinstance_virtual_server_id_index 1 Starting virtual server ID

Customizable Messages (config.yml)

Config Key Description
Server stop/crash message Message shown when server stops
Default channel/client description Fallback descriptions
Idle kick message Message for idle timeout kicks
Server version/platform Displayed version info
License type display No Licence, ATHP, LAN, NPL, or auto modes
Query MOTD Message of the day for query clients
Query newline character \n (default) or \n\r
Default country flag Flag when no valid country detected

Other Notable Config Options

Option Description
allow_session_reinitialize Allow session re-initialization
suppress_myts_warnings Suppress MyTeamSpeak warnings
notifymute Notify on mute
connect_limit Connection limit
client_connect_limit Per-client connection limit
strict_ut8_mode Strict UTF-8 mode
show_invisible_clients Show invisible clients
default_music_bot Default music bot settings
virtualserver_max_channels Max channels per virtual server

Runtime Terminal Commands

Command Description
end|shutdown <now|time> <reason> Stop the server
chat <serverId> <mode> <targetId> <message> Send chat message
permgrant <ServerId> <GroupId> <PermName> <Grant> Fix permissions
passwd <new_password> <repeated> Change admin password
reload config Reload config.yml

Music Bot System

Quick Setup

  1. Grant yourself music-related permissions
  2. Type .mbot in channel chat
  3. Use query commands for advanced control

Music Bot Query Commands

Command Description
musicbotcreate [cid=<channel>] Create a music bot
musicbotdelete bot_id=<id> Delete a music bot
musicbotsetsubscription bot_id=<id> Subscribe to bot events
musicbotplayerinfo bot_id=<id> Get player info
musicbotplayeraction bot_id=<id> action=<n> Control playback
musicbotqueueadd bot_id=<id> type=<n> url=<url> Add song to queue
musicbotqueueadd bot_id=<id> type=2 url=cid=<n>\sname=<file>\spath Add file from channel
musicbotqueuelist bot_id=<id> [-bulk] List queue entries
musicbotqueueremove bot_id=<id> song_id=<id> [-skip_error] Remove queue entry
musicbotqueuereorder bot_id=<id> song_id=<id> index=<n> Reorder queue

Player Actions

Value Action Description
0 Stop Stop the player
1 Play Play current song
2 Pause Pause current song
3 Forward Skip to next song
4 Rewind Jump to last song (limited support)

Player States

Value State Description
0 Sleeping Waiting for new song
1 Loading Loading current song
2 Playing Playing current song
3 Paused Playback paused
4 Stopped Playback stopped

Song Loader Types

Value Type Description
0 YouTube-DL Resolve URL via youtube-dl
1 FFMPEG Direct FFMPEG playback
2 Channel File Play from channel file system

Playlist System

Command Description
playlistcreate Create playlist
playlistdelete Delete playlist
playlistlist List playlists
playlistinfo Get playlist info
playlistedit Edit playlist properties
playlistsonglist List songs in playlist
playlistsongadd Add song to playlist
playlistsongremove Remove song from playlist
playlistsongreorder Reorder songs
playlistsongsetcurrent Set current song
musicbotplaylistassign Assign playlist to bot
playlistclientlist List client playlists
playlistclientpermlist List client permissions
playlistclientaddperm Add client permission
playlistclientdelperm Remove client permission

Playlist Properties

Property Type Description
playlist_id number Playlist identifier
playlist_title string Playlist title
playlist_description string Playlist description
playlist_type number 0=bot-bound, 1=global
playlist_owner_dbid number Owner database ID
playlist_max_songs number Max songs (-1=unlimited)
playlist_flag_delete_played bool Delete played songs
playlist_flag_finished bool Playlist finished flag
playlist_replay_mode number 0=normal, 1=loop, 2=loop-single, 3=shuffle
playlist_current_song_id number Current song ID

Music Bot Permissions

Permission Description
i_max_playlists Max playlists per client
i_max_playlist_size Max songs per playlist
i_playlist_view_power / i_playlist_needed_view_power View power
i_playlist_modify_power / i_playlist_needed_modify_power Modify power
i_playlist_delete_power / i_playlist_needed_delete_power Delete power
i_playlist_song_add_power / i_playlist_song_needed_add_power Add song power
i_playlist_song_remove_power / i_playlist_song_needed_remove_power Remove song power
i_playlist_song_move_power / i_playlist_song_needed_move_power Move song power

Music Bot Chat Commands

Type in channel chat:

  • .mbot - Show help
  • .mbot play - Start playback
  • .mbot info - Show bot info
  • .mbot rename <name> - Rename bot

Music Bot Events

Event Description
notifymusicqueueadd Song added to queue
notifymusicqueueremove Song removed from queue
notifymusicqueueorderchange Queue order changed
notifymusicplayersongchange Current song changed
notifymusicstatusupdate Player status update (every second when subscribed)

Chat System

Overview

TeaSpeak's chat system is channel-based, using voice channel tree channels as chat rooms. Features:

  • Each voice channel can be used as a chat room
  • Conversations are persistent (saved to database)
  • Offline users can read missed messages
  • Cross-channel messaging (if you have join permission)
  • Password-protected channels require active channel membership for chat

Chat Properties

Property Range Description
channel_conversation_history_length -1 to 65535 -1=no history, 0=unlimited, N=max messages
channel_flag_conversation_private bool Private = only accessible while in channel

Chat Commands (ServerQuery)

Command Description
sendtextmessage target=<id> targetmode=<mode> msg=<text> [cid=<channel>] Send message
conversationhistory cid=<channel> Get conversation history
conversationfetch cid=<channel> Fetch conversation
conversationmessagedelete Delete message
conversationsetsubscription Set subscription

Supported Chat Features

  • BBCode formatting
  • Markdown support
  • Emoji support
  • Image preview
  • YouTube video embeds
  • URL detection and linking
  • Tables, headings, lists, horizontal rules
  • Code blocks
  • Blockquotes

Token System

Overview

Tokens are long, random-generated keys that trigger actions when used. Their main purpose is granting extra permissions.

Token Properties

Property Description
token_max_uses Maximum uses (-1 = unlimited)
token_expired Expiration timestamp (seconds since epoch)
token Custom token value (optional, auto-generated if not set)

Token Actions

Action ID ID1 ID2 Text
Add server group 0x01 Server group ID unused unused
Remove server group 0x02 Server group ID unused unused
Set channel group 0x03 Channel group ID Channel ID unused
Allow channel join 0x04 unused Channel ID Channel password

Token Commands

Command Description
tokenadd Create token
tokendelete Delete token
tokenlist [-new] List tokens
tokenuse Use a token
tokenedit Edit token (new system)
tokenactionlist List token actions (new system)

New Token System (1.5.1+)

  • Token length increased from 20 to 32 characters
  • -new switch for new token system
  • tokenuse no longer requires permissions
  • tokendelete no longer requires permissions for own tokens
  • Tokens given on join are taken into account

ServerQuery Notify System

Registration

servernotifyregister event=all specifier=all           # All events
servernotifyregister event=server specifier={edit}     # Server edit
servernotifyregister event=client specifier={poke|update|command|join|switch|leave|add|remove|change}
servernotifyregister event=chat specifier={composing|receive_server|receive_channel|receive_private|close}
servernotifyregister event=channel specifier={create|edit|desc|move|delete}
servernotifyregister event=music specifier={queue|player}

Server Events

Event Command Description
Server Edit notifyserverupdated Server settings changed

Client Events

Event Command Description
Client Poke notifyclientpoke Received a poke
Client Updated notifyclientupdated Client property changed
Client Command notifyplugincmd Plugin message received
Client Join notifycliententerview Client entered view
Client Switch notifyclientmoved Client moved channels
Client Leave notifyclientleftview Client left/kicked/banned
Group Add notifyservergroupclientadded Added to server group
Group Remove notifyservergroupclientdeleted Removed from server group
Channel Group Change notifyclientchannelgroupchanged Channel group changed

Chat Events

Event Command Description
Composing notifyclientchatcomposing Client is typing
Receive notifytextmessage Message received
Close notifyclientchatclosed Chat closed

Channel Events

Event Command Description
Create notifychannelcreated Channel created
Edit notifychanneledited Channel edited
Description Changed notifychanneldescriptionchanged Description changed
Password Changed notifychannelpasswordchanged Password changed
Moved notifychannelmoved Channel moved
Deleted notifychanneldeleted Channel deleted

Ban System

Standard Ban Commands

Command Description
banadd Add ban rule
bandel Delete ban rule
banedit Edit ban rule (TeaSpeak-specific)
banlist List ban rules
banclient Ban client (supports database ID)
bantriggerlist List ban enforcements

Global Bans

Use sid=0 for instance-wide bans:

banadd sid=0 ip=8.8.8.8 reason=Global\sban

HWID Bans

banadd hwid=<hardware_id_1>,<hardware_id_2>
banadd hwid=  # Ban empty HWIDs

Ban Properties

  • IP-based bans
  • Name-based bans
  • HWID-based bans
  • Configurable auto-ban on complain threshold
  • Ban time in seconds
  • Global (instance-wide) or local (per-server)

Web Client Architecture

Technology Stack

Technology Version Purpose
TypeScript 4.2+ Primary language (84.1%)
React 16.x UI framework
SCSS - Styling (10.8%)
Webpack 5.x Build system
Rust/WASM - Audio processing worker
WebRTC - Voice/video communication

Key Dependencies

Package Purpose
react / react-dom UI rendering
react-grid-layout Drag-and-drop layouts
react-player Media playback
remarkable Markdown rendering
emoji-mart Emoji picker
twemoji Twitter emoji support
highlight.js Code syntax highlighting
sdp-transform SDP parsing for WebRTC
webrtc-adapter WebRTC cross-browser support
dompurify HTML sanitization
crypto-js / webcrypto-liner Cryptography
jquery Legacy DOM manipulation
moment Date/time handling
detect-browser Browser detection

Project Structure

TeaWeb/
├── client-api/          # PHP API endpoint (legacy)
├── client/              # Native client wrapper code
├── documentation/       # i18n documentation
├── loader/              # Initial loader (ES5 compatible)
├── scripts/             # Build/install scripts
├── shared/              # Shared code between web/client
├── tools/               # Development tools
├── vendor/              # Vendor dependencies
├── web/                 # Main web application
│   ├── css/             # SCSS styles
│   ├── html/            # HTML templates
│   └── ts/              # TypeScript source
│       ├── client/      # Client-side code
│       ├── connection/  # Server connection
│       ├── ui/          # UI components (React)
│       └── voice/       # Voice/audio handling
├── webpack/             # Webpack configurations
├── webpack-web.config.ts
├── webpack-client.config.ts
├── package.json
└── tsconfig.json

Build Commands

npm install                    # Install dependencies
./scripts/install_dependencies.sh  # Install rustup, wasm-pack
npm start web                  # Start dev server (http://localhost:8081)
npm run build-web              # Build for production
npm run build-client           # Build native client
./scripts/web_package.sh rel   # Package into .zip

Browser Support

Browser Supported
Chrome Yes
Firefox Yes
Opera Yes
Safari Yes
MS Edge (Chromium) Yes
MS Edge (Legacy) ⚠️ Partial
Internet Explorer No

Key Web Client Features

  • Multi-server tabs (connect to multiple servers)
  • Popoutable modals (detached windows)
  • CSS variable editor for theming
  • Dark theme
  • Responsive design (font-size based)
  • Bookmark system with import/export
  • Auto-connect on startup
  • Channel tree with React rendering
  • Video spotlight mode (multiple simultaneous videos)
  • Screen sharing
  • Watch-together mode
  • Image preview in chat
  • Drag-and-drop for clients
  • Context menus
  • Hotkey system
  • Volume controls (master + per-client)
  • Identity management with auto-generation
  • Auto-reconnect system

Music Bot Architecture (TeaMusic)

Technology

  • Language: C++ (99.3%), CMake (0.7%)
  • Standard: C++17
  • Build: CMake with shared library providers

Provider System

TeaMusic uses a plugin-based provider architecture:

TeaMusic/
├── include/teaspeak/    # Headers (MusicPlayer.h)
├── providers/
│   ├── ffmpeg/          # FFMPEG provider (000 prefix = load first)
│   │   ├── FFMpegProvider.cpp
│   │   ├── FFMpegMusicPlayer.cpp
│   │   ├── FFMpegMusicProcess.cpp
│   │   └── FFMpegStream.cpp
│   ├── yt/              # YouTube-DL provider (001 prefix = load second)
│   │   ├── YTProvider.cpp
│   │   ├── YTVManager.cpp
│   │   ├── YoutubeMusicPlayer.cpp
│   │   └── YTRegex.cpp
│   └── shared/          # Shared utilities
│       ├── libevent.cpp
│       └── CommandWrapper.cpp
├── helpers/             # Development helpers
└── CMakeLists.txt

Provider Details

Provider Prefix Dependencies Description
FFMPEG 000 libevent, threadpool, StringVariables Direct audio playback via FFMPEG
YouTube-DL 001 FFMPEG provider, jsoncpp, threadpool, StringVariables YouTube/video URL resolution + playback

Build Options

BUILD_PROVIDER_YT=ON      # Build YouTube-DL provider
BUILD_PROVIDER_FFMPEG=ON  # Build FFMPEG provider
BUILD_HELPERS=ON          # Build development helpers

Music Provider Features

  • Automatic reconnect (3 attempts) on stream disconnect
  • Shuffle mode
  • Song change notifications
  • Configurable announce messages
  • Volume control per bot
  • Playlist persistence across restarts
  • YouTube URL resolution via youtube-dl
  • FFMPEG direct stream playback
  • Channel file system playback

Server Binary Distribution

Download Sources (Archived)

Platform URL Pattern
Linux x64 (stable) https://repo.teaspeak.de/server/linux/amd64_stable/TeaSpeak-.tar.gz
Linux x64 (nightly) https://repo.teaspeak.de/server/linux/amd64_nightly/
Docker (TeaWeb) https://hub.docker.com/r/teaspeak/web
Web Client Releases https://github.com/TeaSpeak/TeaWeb/releases
TeaClient Releases https://clientapi.teaspeak.de/files/release/

TeaClient Versions (Archived)

Platform Format Version
Linux x64 .deb installer 1.5.3-2
Linux x64 .tar.gz 1.5.3-2
Windows x64 .exe installer 1.5.3-2
Windows x64 .tar.gz 1.5.3-2

Installation

Server:

# Download
wget https://repo.teaspeak.de/server/linux/amd64_stable/TeaSpeak-.tar.gz
# Extract
tar -xzf TeaSpeak-*.tar.gz
# Run
./teastart.sh start

Docker (Web Client):

docker pull teaspeak/web

teastart.sh Commands

./teastart.sh start     # Start server
./teastart.sh stop      # Stop server
./teastart.sh status    # Returns 0 if running, 1 if not
./teastart.sh reload    # Reload config
./teastart.sh execute   # Execute command

Supported Architectures

  • x86_64 (primary)
  • armv32v7 (since 1.4.5, with web client since 1.4.6)

License Information

TeaWeb (Web Client)

License: Mozilla Public License 2.0 (MPL-2.0)

Key terms:

  • Source code modifications must remain under MPL-2.0
  • Can be combined with other code under different licenses
  • Must provide source for MPL-covered portions
  • No warranty, no liability

TeaMusic (Music Bot Providers)

License: Not explicitly stated in repository (likely open source based on public GitHub presence)

TeaSpeak Server

License: Proprietary / Not open source

The server binary is distributed freely but is not open source. The issue tracker and documentation are public.

TeaClient (Desktop Client)

License: Not open source (distributed as binary)


Known Issues and Limitations

Open Issues (as of compilation)

From the GitHub issue tracker (61 open issues on TeaSpeak/TeaSpeak):

Issue Title Status
#723 Arch Linux core dump Open
#722 Screen share not working, project unmaintained Open
#721 Server crashes Open
#720 Video sharing erratic and crashing Open
#719 Can't start server on Windows WSL2 Open
#718 Failed to parse VP8 header, screen share failed Open
#717 Raspberry Pi setup Open
#716 Can't download Open
#715 None of available versions working Open
#714 Server binary for Raspberry Pi (ARM) Open
#713 Packet resend failed Open
#712 Feature discussion Open

Web Client Issues (TeaWeb, 15 open)

The TeaWeb repository is archived (read-only since Jul 9, 2025).

Known Limitations

  1. Non-OPUS codecs removed - All Speex and CELT codecs dropped in 1.5.0
  2. VP8 parsing issues - Screen sharing can fail with VP8 header parsing errors
  3. ARM support limited - Raspberry Pi builds not consistently available
  4. WebRTC stability - Some video streaming instability reported
  5. Project maintenance - Appears unmaintained since ~2022
  6. Video performance - H264 performs poorly with packet loss
  7. Windows WSL2 - Server startup issues on WSL2
  8. Music bot queue - Some features marked as "unimplemented" in documentation
  9. YouTube-DL dependency - Requires separate youtube-dl installation
  10. Snapshot version - Version 2 introduced breaking changes for music bot data

Critical Fixes (Historical)

  • 1.4.12-beta4: Fixed critical server crash due to malformed packets
  • 1.4.12-beta4: Fixed crash from missing "providers" directory
  • 1.3.26b: Fixed out-of-order packet sending ("invalid clientID disconnect")
  • 1.3.17b: Fixed deeply rooted protocol bug (generation ID miscalculation)
  • 1.3.14b: Fixed voice encryption issue

Properties Reference

Instance Properties

Property Type Default Description
serverinstance_database_version uint 0 Database version
serverinstance_permissions_version uint 0 Permissions version
serverinstance_filetransfer_host string 0.0.0.0,[::] File transfer host
serverinstance_filetransfer_port uint 30303 File transfer port
serverinstance_filetransfer_max_connections uint 100 Max connections
serverinstance_filetransfer_max_connections_per_ip uint 20 Max per IP
serverinstance_query_host string 0.0.0.0,[::] Query host
serverinstance_query_port uint 10101 Query port
serverinstance_query_max_connections uint 100 Max query connections
serverinstance_query_max_connections_per_ip uint 3 Max per IP
serverinstance_max_download_total_bandwidth int -1 Download bandwidth limit
serverinstance_max_upload_total_bandwidth int -1 Upload bandwidth limit
serverinstance_serverquery_flood_commands uint 3 Flood commands
serverinstance_serverquery_flood_time uint 1 Flood time
serverinstance_serverquery_ban_time uint 600 Ban time
serverinstance_virtual_server_id_index uint 1 Server ID start index

Virtual Server Properties

Property Type Default Description
virtualserver_unique_identifier string - Server UID
virtualserver_name string "Another TeaSpeak server..." Server name
virtualserver_welcomemessage string "Welcome on another..." Welcome message
virtualserver_maxclients uint 120 Max clients
virtualserver_password string empty Server password
virtualserver_port uint 9987 Voice port
virtualserver_host string 0.0.0.0,:: Bind address
virtualserver_codec_encryption_mode uint 0 Encryption mode
virtualserver_hostmessage string "Welcome" Host message
virtualserver_hostbanner_url string empty Banner URL
virtualserver_hostbanner_gfx_url string empty Banner image URL
virtualserver_hostbanner_gfx_interval uint 0 Banner rotation interval
virtualserver_complain_autoban_count uint 5 Auto-ban threshold
virtualserver_complain_autoban_time uint 5 Auto-ban time
virtualserver_complain_remove_time uint 5 Complain expiry
virtualserver_priority_speaker_dimm_modificator float -18 Priority speaker volume reduction
virtualserver_antiflood_points_tick_reduce uint 25 Anti-flood point reduction
virtualserver_antiflood_points_needed_command_block uint 150 Command block threshold
virtualserver_antiflood_points_needed_ip_block uint 300 IP block threshold
virtualserver_needed_identity_security_level uint 8 Required security level
virtualserver_channel_temp_delete_delay_default uint 60 Temp channel delete delay
virtualserver_max_channels uint 1000 Max channels
virtualserver_web_host string 0.0.0.0 Web client host
virtualserver_web_port uint 0 Web client port
virtualserver_default_client_description string empty Default client description
virtualserver_default_channel_description string empty Default channel description
virtualserver_default_channel_topic string empty Default channel topic
virtualserver_music_bot_limit int -1 Music bot limit
virtualserver_country_code string XX Server country code
virtualserver_reserved_slots uint 0 Reserved slots

Client Properties (Key)

Property Type Default Description
client_unique_identifier string - Client UID
client_nickname string - Nickname
client_version string "unknown" Client version
client_platform string "unknown" Client platform
client_input_muted bool 0 Input muted
client_output_muted bool 0 Output muted
client_is_recording bool 0 Recording flag
client_database_id uint 0 Database ID
client_away bool 0 Away status
client_away_message string empty Away message
client_type uint 0 0=normal, 1=query
client_type_exact uint 0 Exact type
client_talk_power uint 0 Talk power
client_is_talker bool 0 Talker flag
client_is_priority_speaker bool 0 Priority speaker
client_is_channel_commander bool 0 Channel commander
client_badges string empty Client badges
client_total_online_time uint 0 Total online time
client_month_online_time uint 0 Monthly online time
client_meta_data string empty Metadata
client_description string empty Description
client_country string "TS" Country code
client_teaforo_id uint 0 TeaForum ID
client_teaforo_name string empty TeaForum name
client_owner uint 0 Owner (for music bots)
client_bot_type uint 0 Bot type
player_state uint 0 Music player state
player_volume float 1 Music player volume
client_playlist_id uint 0 Assigned playlist

Feature Support Commands

listfeaturesupport

The server exposes feature support via listfeaturesupport:

Feature Name Version Description
error-bulks 1 Bulked command responses
advanced-channel-chat 1 Cross-channel persistent chat
log-query 1 Instance log querying
sidebar-mode 1 Channel sidebar modes

Bulked Command Responses

Supported commands for individual error results:

  • servergroupaddperm, servergroupdelperm, servergroupautoaddperm, servergroupautodelperm
  • channeladdperm, channeldelperm
  • clientaddperm, clientdelperm
  • channelclientaddperm, channelclientdelperm
  • channelgroupaddperm, channelgroupdelperm
  • playlistaddperm, playlistdelperm, playlistclientaddperm, playlistclientdelperm
  • ftdeletefile, ftgetfileinfo

Additional Command Extensions

Extended Command Parameters

Command Extra Parameters
channellist / channelinfo created_by, created_at
clientdblist -details / clientdbfind -details / clientdbinfo client_badges, client_version, client_platform, client_hwid
notifyplugincmd / notifyconnectioninforequest invokerid
sendtextmessage cid (target channel)
tokenadd token (custom value)
banclient Accepts database ID

New Commands

Command Description
propertylist List all properties
listfeaturesupport List supported features
logquery Query server log
logadd Add log entry
permoverview Permission overview
ftrenamefile Rename file
ftlist List file transfers
ftstop Stop file transfer
conversationhistory Chat history
conversationfetch Fetch conversation
conversationmessagedelete Delete chat message
conversationsetsubscription Set chat subscription
tokenactionlist List token actions
tokenedit Edit token

Removed Commands

Command Replacement
logview logquery
musicbotqueuelist Playlist system (removed 1.5.4+)
musicbotqueueadd Playlist system (removed 1.5.4+)
musicbotqueuereorder Playlist system (removed 1.5.4+)
musicbotqueueremove Playlist system (removed 1.5.4+)

Version History Highlights

Major Versions

Version Key Changes
1.5.6 Latest known version, IP2Location update, config reload fix
1.5.5 Video viewer tracking, native client counting
1.5.4 Channel admin fix, bulked commands, query group improvements
1.5.2 WebRTC STUN enabled by default
1.5.1 Token system redesign, web list removal
1.5.0 Video broadcasting, OPUS-only, WebRTC improvements, sidebar modes
1.4.22 Conversation modes (none/public/private)
1.4.21 File transfer crash fix, logging properties
1.4.20 Web client whisper support, echo tests
1.4.19 Raw command support for web client, whisper API
1.4.18 Database improvements, compressed snapshots, snapshot deploy improvements
1.4.17 YT-DL improvements, file transfer changes
1.4.16 Server logging system, logadd/logquery commands
1.4.15 File transfer restructure, bulked responses, ftrenamefile
1.4.14 Permission checking rework, bulk operations, query newline change
1.4.13 Statistics improvements, packet loss calculation, RTO adjustment
1.4.12 Connection statistics, UDP packet loss, RTO RFC 6298
1.4.11 WebRTC thread pool, automated rlimit check
1.4.10 License renewal system, music bot fixes
1.4.8 Playlist client commands, skip/negate fix
1.4.7 Packet handling restructure (voice separation)
1.4.6 Command API rework, permission system overhaul
1.4.5 ARM support, join flood protection
1.4.4 Config reload, default certificates
1.4.3 libnice bundled, music bot slot counting
1.4.1 Music bot properties, country code, IP2Location
1.4.0 Server snapshots, conversation system, new permissions
1.3.26b Critical packet ordering fix
1.3.22b Permission system performance improvements
1.3b Music bot overhaul, playlist system introduction

References