This is the full walkthrough of everyday ts-cli usage: navigating channels, messaging, voice, audio devices, per-user controls, and the complete command reference. For a five-minute quick start, see the main README; for the underlying audio and configuration models, see Audio and voice and Configuration and identity.
Typing text without a leading slash sends it to the current channel.
Use /list to inspect channels and users.
/list
Example:
Lobby
├── Alice
├── Bob
└── MusicBot
Gaming
├── Charlie
└── Dave
AFK
└── Eve
You can also inspect a specific channel:
/list Gaming
This is useful when you want to check who is around before moving.
/join Gaming
If a channel name contains spaces, quote it where required:
/join "Late Night Gaming"
Once joined, normal text is sent to that channel:
anyone still playing?
Use either /pm or /message:
/message Alice are you joining voice?
or:
/pm Alice are you joining voice?
Reply to the last private message with:
/r yep, give me a minute
This is especially convenient when you are already talking to someone and do not want to keep retyping their name.
/nick frAgZ-laptop
The change applies to the current running client and is reflected on the server.
ts-cli can automatically open and close transmission based on microphone level.
/audio threshold -45
The threshold is expressed in dBFS. A lower value is more sensitive, a higher value requires louder input. A practical starting point for many microphones is -45.
Your microphone remains logically unmuted while voice activation decides when actual voice packets should be transmitted — that prevents the client from appearing to transmit continuously during silence. See Audio and voice for the full model.
If ts-cli was compiled with RNNoise support, microphone noise filtering can be enabled with:
/audio filter rnnoise
Disable it again with:
/audio filter none
Check the current audio state with:
/audio status
RNNoise is applied before voice-activity detection and Opus encoding.
List available devices (PipeWire on Linux, WASAPI on Windows):
/audio devices
Select the default input:
/audio input default
Or choose a specific device by id or name:
/audio input <id>
/audio input "USB Microphone"
Select an output device the same way:
/audio output default
/audio output "USB Headset"
A common setup might look like:
/audio input "USB Microphone"
/audio output "HD Audio Controller"
/audio filter rnnoise
/audio threshold -42
/unmute
See Audio and voice for the full audio model and platform notes.
One of the more useful features of ts-cli is the ability to adjust remote users locally. These settings affect only your client.
/user Alice volume -8
Or use a percentage:
/user Alice volume 70%
Restore the default:
/user Alice volume reset
Example:
> /user MusicBot volume -14
MusicBot volume: -14.0 dB
This is particularly useful for music bots, users with unusually loud microphones, or anyone whose level does not match the rest of the channel.
/user MusicBot mute
/user MusicBot unmute
This does not change their server permissions or mute state for anybody else.
/user Alice
When nicknames are ambiguous, use the TeamSpeak client ID:
/user #42
/user #42 volume -10
Persistent settings are stored using the user's stable TeamSpeak identity rather than their nickname or temporary client ID, so a saved volume adjustment continues to apply even if that person reconnects with another client ID or changes their nickname. See Configuration and identity for the file layout.
A terminal-native voice client fits naturally beside shells, editors, build output, logs, and monitoring tools:
┌───────────────────────────────┬──────────────────────┐
│ │ │
│ nvim │ build logs │
│ │ │
├───────────────────────────────┼──────────────────────┤
│ │ │
│ shell │ ts-cli │
│ │ │
└───────────────────────────────┴──────────────────────┘
No extra desktop window is required just to stay in voice.
Sometimes you do not need to talk at all:
build/linux/client/ts-cli voice.example.net:9987/list
You can quickly check whether people are online, what channels are active, and whether it is worth joining.
Suppose a music bot joins every evening and is consistently too loud. Set it once:
/user MusicBot volume -12
The preference is persisted using its TeamSpeak identity, so the next time that same user connects, the adjustment remains available without relying on its current client ID.
You can change playback devices without restarting the client:
/audio devices
/audio output "USB Headset"
/audio input "USB Headset Microphone"
/audio status
Start with:
/audio threshold -45
If keyboard noise triggers transmission, raise it (-38); if your voice is being cut off, lower it (-50). If RNNoise is available, combine both:
/audio filter rnnoise
/audio threshold -45
/pm <client> <text>
/message <client> <text>
/r <text>
Examples:
/message Alice ping me when you're ready
/pm Bob check your microphone
/r yep, works now
/join <channel>
/list [channel]
Examples:
/join Lobby
/join "Late Night Gaming"
/list
/list Lobby
/nick <new name>
Example:
/nick frAgZ-workstation
/user <client>
/user <client> volume <dB|percent|reset>
/user <client> mute
/user <client> unmute
Examples:
/user Alice
/user Alice volume -6
/user Bob volume 80%
/user MusicBot mute
/user #42 volume reset
/mute
/unmute
/audio status
/audio devices
/audio input <default|id|name>
/audio output <default|id|name>
/audio filter
/audio filter rnnoise
/audio filter none
/audio threshold <dBFS>
/help
/quit
Outside a session, ts-cli --security-level <level> raises the security level of your identity and exits; see Raising the security level.