macOS desktop
Use the signed macOS build if you want the full desktop feature set, background audio, direct room controls, and server management tools.
Use this guide to install VoiceLink, connect to a server, and join your first room.
VoiceLink opens into a server-focused layout. You choose a server first, then review its rooms, room details, and available actions. Main and Community can both appear in the app, and federation can show matching rooms across more than one server.
Use the signed macOS build if you want the full desktop feature set, background audio, direct room controls, and server management tools.
Use the current TestFlight build if you are testing room join, chat, audio monitoring, or server switching on iOS.
Use the browser client when you need quick access from a device without a local install or when testing a server deployment. Room audio in the browser goes through the server, the same way as the iPhone, iPad and Mac apps, so everyone in a room hears each other. Turn your microphone on or off with the Microphone switch or Control-Shift-M. See Live Microphone, Whisper and Intercom.
Use the server installer path only when you are setting up or managing a VoiceLink server and its related admin services. It runs entirely in your account folder and has its own service manager, so it does not need administrator access. Run it again to upgrade while keeping your data; use its explicit --uninstall --yes command to remove that one marked install. Docker is supported for VPS and container hosts that already manage reverse proxy and storage volumes.
For container hosts, create a persistent data directory and run VoiceLink behind your existing HTTPS reverse proxy. Build the image from the current server source, then replace https://your-server.example with the public URL you will register in VoiceLink.
git clone https://git.tappedin.fm/raywonder/voicelink.git
cd voicelink
docker build -t voicelink/server:local .
mkdir -p ~/voicelink-data
docker run -d \
--name voicelink-server \
--restart unless-stopped \
-p 3010:3010 \
-v "$HOME/voicelink-data:/app/data" \
-e VOICELINK_PUBLIC_URL="https://your-server.example" \
-e VOICELINK_HUB_URL="https://voicelink.dev" \
voicelink/server:local
The container keeps its data in ~/voicelink-data. To upgrade, build the new image, then recreate the container with the same data directory; do not remove that directory.
A new install creates only two rooms: Lobby and General. To add more, open Admin, then Modules, then Room templates. You can add one template or a whole pack, then edit the rooms as you like. See Room templates.
Existing servers keep all their rooms. Restarting the server never re-creates built-in rooms, and rooms you deleted stay deleted.
The old sample file server/data/rooms.json is no longer shipped with the server. Your own rooms file in your data directory is kept.
Your rooms are not shared with other servers until you allow it. To list them in the VoiceLink federated directory, open Admin, then Federation, and turn on "Listing enabled" under "Federated rooms listing". Then turn on "Show in federated rooms" for each room, or use "Show all public rooms in federated rooms". See Federated rooms listing.
When a server admin posts a maintenance, outage or information notice, the web app shows it as a popup you can dismiss; dismissing it is remembered on that device (or account, if you're signed in), so it won't pop up again. A Service notices button next to Sign In shows how many active notices you haven't dismissed yet, and opens a list of current and recently-ended notices. Screen readers announce a new notice when it appears. Server admins manage notices from Admin, Service Notices, on the main server; community and dev servers show the same notices automatically.
A notice with a start or end time shows a countdown next to it, such as "Starts in 1 day, 3 hours and 12 minutes" or "Ends in 2 hours and 5 minutes" (or, for a notice starting tomorrow, "Starts tomorrow at 9 AM your time"); it disappears once the notice ends. The countdown text updates quietly, at most once a minute, and doesn't interrupt your screen reader, but reading or tabbing to it always announces the exact current countdown. You'll also hear a one-time spoken heads-up 1 hour before, 10 minutes before, and when a notice starts or finishes, as long as desktop notifications are turned on.
Settings on iPhone and iPad work like the desktop VoiceLink app. The main Settings screen has no switches of its own: it is a list of categories, each with a short line saying what is inside. Double tap a category to open its screen. At the top of each screen, a row of tabs switches between groups of settings; VoiceOver reads it as, for example, "Security tabs", and says the tab name when you change it.
The last row of Settings belongs to the server you are connected to and changes when you switch servers, sign in or out, or your role changes. The footer says which server it is and your role there.
Use Preview when you want to hear a short sample of room media before joining. The preview ends on its own after the short preview window.
Open room details when you need the room description, server source, visibility, access level, or the list of available actions before joining. Room details also say when the room was last active and who was there, for example "Last active: 5 minutes ago by Dom", and list up to three people recently in the room. For private or password rooms, only members, room managers and server admins see the names; everyone else hears just the time. A room with no activity on record says "No recent activity".
When multiple organizations host servers, browse by owner button first. For example, the VoiceLink owner group can contain the Main and Community servers, while Devine Creations can contain its devine-creations.com and devinecreations.net servers. The number beside the owner tells you how many servers are currently listed for that owner. Open the owner button, then choose the server you want.
Join the room from the room row or details view. After joining, the room header and user list should update to reflect the active room.
Sign in once and VoiceLink keeps you signed in on that server. The apps renew your sign-in quietly in the background, including after the server restarts or updates, for both VoiceLink accounts and Client Portal accounts. On iPhone and iPad the sign-in is kept in the device Keychain.
An account from the main VoiceLink server is also recognised on the community and dev servers. Your role there (for example admin or moderator) is set separately on each server and never carries over.
If a sign-in really can't be renewed (for example after you signed out on another device), you are never stopped from joining: you join as a guest, VoiceOver tells you once that your sign-in expired, and a Sign in again button appears at the top of the app. Double tap it to sign in, or dismiss it.
You don't need to sign in to talk. After joining a room, the microphone switch works for guests too. The first time, the iPhone app explains why it needs the microphone, then iOS asks for permission. If microphone access is off, VoiceOver tells you how to turn it on: open the Settings app, choose VoiceLink, and turn on Microphone.
A room manager can set a room so that only signed-in people can talk (the room setting guestsCanTalk; it is on by default). Guests in that room can still listen and chat, and hear "In this room only signed-in people can talk". A moderator can also mute one person's microphone; that person can't unmute themselves.
After joining, move to the user list and message area to confirm users, bots, room chat, and system messages. If the room is configured to show chat, messages should appear above the message box. The room also shows how many people and bots are in it, for example "In this room: 3 people, 4 bots". These counts change by themselves as people and bots join or leave.
Room chat and direct messages can include a photo or a file sent from the VoiceLink apps. In the web client:
Uploading a photo or file needs you to be signed in to that server.
Use the room menu or user actions to show audio controls only when needed. Volume, mute, monitoring, and media choices should remain available without forcing you out of the room.
VO-Space activates the selected control.VoiceLink plays a short welcome chime once when it opens. In a web browser, the browser may hold the sound until your first key press or click; it plays then. To turn it off in the web app, open Settings and clear "Play the welcome chime when VoiceLink opens". On the Mac, it is "Play startup welcome sound" in Settings, Audio Controls.
VoiceLink plays a short sound for things like joining or leaving a room, someone else joining or leaving while you're in it, messages, mute and push-to-talk, whisper, and connecting, losing the connection or reconnecting to a server. On iPhone/iPad, these are in Settings, Notifications, Sound Notifications: "Play Sound for System Action Notifications" turns them on or off, "Play sounds when the silent switch is on" controls whether they respect the iPhone's silent switch (on by default, since you're actively using the app), and a Sound Volume slider sets how loud they play without affecting room audio.
Update and error reports. To help us fix problems quickly, VoiceLink tells our server when an update installs, fails or doesn't reopen, and when the app hits an error. A report contains a random install number (not linked to your account), the app version, your operating system version and a short error description. It never includes your messages, contacts, files, passwords, keys or user name. You can turn this off in Settings, under "Send update results and error reports". Diagnostic logs are only sent when you choose Help, Send diagnostic logs.
If your first room join does not match this guide, send a bug report from Settings and include the build number, server name, room name, and the last action you took before the problem started.