New Accessible TeamTalk Client for Mac – Looking for Beta Testers

By Mathieu, 18 March, 2026

Forum
macOS and Mac Apps

Hello everyone,

I've developed a native TeamTalk client for macOS that's fully accessible with VoiceOver. As you know, the official TeamTalk version on Mac is completely inaccessible, so I built an alternative from scratch.

What's included:

  • Full keyboard navigation β€” Cmd+1/2/3/4 for UI areas, F5 for nickname, F6 for status, etc.
  • VoiceOver announcements for all events (users joining/leaving, private messages, file transfers)
  • Native macOS interface (no ugly web wrapper)
  • Saved server management with quick access
  • Browse and join channels with optional password protection
  • Private messaging with full conversation history
  • File sharing with visual progress indicators
  • User administration (for server admins)
  • Advanced microphone settings:
    • Enable/disable audio processing
    • Noise suppression (Noise Gate) or Expander with fine-tuned controls over threshold, attack, hold, and release
    • Peak limiter with auto or manual mode
    • Multiple presets for different use cases
    • Professional-grade tools to eliminate feedback and control voice peaks

Current state:

The app is functional and ready to use. The interface is clean, accessible and looks good β€” because using VoiceOver doesn't mean the UI has to be ugly.

Important:

The app is unsigned (no budget for Apple Developer Program yet). You'll need to authorize it in macOS security settings.

Interested?

If anyone wants to test, I can set up a beta distribution system. Your feedback on features, keyboard shortcuts, or missing functionality is welcome!

Options

Comments

By Zach M on Sunday, May 3, 2026 - 20:13

hi all. I'm using tt accessible beta 10. it works incredibly for the most part. except, you can't actually upload files. or if it does, it doesn't show progress. hope this can get fixed in a future beta.

By Quinton Williams on Tuesday, May 5, 2026 - 19:53

Hi everyone.
I've made some of my own changes to ttaccessible, and will likely submit a pull request later today.
You can now use your own sounds packs and also delete the defaults.
Additionally, I added command shift I as an import command, as well as options for .tt files, .tt links and the default configuration file.
File uploads have also been fixed and work properly.

By Matthew Whitaker on Tuesday, May 5, 2026 - 22:41

Sweet. Please include that in a release

By Mathieu on Wednesday, May 6, 2026 - 09:50

Hi everyone,

Quick note on what's happening behind the scenes:

  • Waiting on Quinton's pull request β€” it already includes the file upload fix and the new features he announced. I'll review and merge as soon as it lands.
  • Casey's refactor branch is in progress on his side. I'll keep merging small fixes on main in the meantime so his work and Quinton's don't block each other.
  • All the feature requests from the thread are noted (auto-reconnect, recording formats, media streaming, tt:// link save). They'll come in due time.

Thanks everyone for the reports, suggestions and contributions.

By Quinton Williams on Wednesday, May 6, 2026 - 09:57

Hi all.
I didn't forget, I promise.
I just want to make sure everything works properly as it should before submitting it since there were a couple of other things I found as well.

By Mathieu on Wednesday, May 6, 2026 - 10:01

Hey, no need to justify yourself at all! Contributing to a project like this is already incredibly generous of you β€” please take all the time you need. There's no deadline, and a PR with extra fixes bundled in will be even more valuable. Really appreciate the work, whenever it lands.

By Quinton Williams on Thursday, May 7, 2026 - 00:05

So, I was able to run some tests with my own server, and will for sure be submitting the request. I think everyone will be pleased with these changes.

By Matthew Whitaker on Thursday, May 7, 2026 - 17:23

Hi. Just so everyone knows, on the latest version of the client, I always have to enter my computer password twice for some reason. Can that be fixed?

By Quinton Williams on Thursday, May 7, 2026 - 17:25

I thought about looking into this, but wanted to make this past commit before doing so.
Yes, I do hope this can somehow be looked into.
I did submit the pull request last night.

By Mathieu on Thursday, May 7, 2026 - 20:06

TTAccessible beta 11 is out

Big release this time, mostly thanks to a generous contribution from Quinton Williams.

Download ttaccessible-1.0.0-beta.11-2.zip (release page)

Import & export servers
  • Import server .tt files and pasted tt:// links from a single import picker. Imported entries preserve server name, auth info, join channel, and channel password.
  • Duplicate detection on .tt import (prompts to replace).
  • Export saved or connected servers to a .tt file or copy as a tt:// link. For connected servers, you can optionally include the current channel and password.
  • When you connect via a temporary .tt/tt:// link, the app prompts to save it before disconnect or quit.
Custom sound packs
  • Import any folder of .wav files as a custom sound pack β€” Preferences > Sounds > New Pack.
  • Per-sound replace/reset, reveal pack folder in Finder, and delete custom packs.
  • New "Required Files" dialog listing the expected filenames and what each sound is for.
Per-user voice & media controls
  • Separate voice and media-file volume sliders per user (Cmd+U).
  • New media-file mute alongside voice mute.
  • Media-file volumes are persisted per username, just like voice.
User accounts (admin)
  • Right-click on a user account to export it as a .tt file, copy as tt://, or delete it.
  • Same actions exposed as VoiceOver custom actions and via VO+Shift+M.
  • The accounts list refreshes immediately after create/update/delete.
File transfers
  • Upload/download/delete completions are tracked properly.
  • Transfer progress is announced when TeamTalk reports it active.
  • Upload quota errors surface clearly; channel files refresh after relevant events.
Audio UI
  • Gain sliders now show 0–100% with stable VoiceOver values that don't jump while sliding.
Keychain prompts (build 2)

Matthew and Quinton both reported the double macOS password prompt on connect. The release zip has been refreshed with a fix that stores both server and channel passwords in a single keychain item, so future betas should only ever ask once per saved server. Existing saved servers migrate transparently on the first connect after upgrading. If you already downloaded beta 11, grab the build 2 zip from the link above.

Thanks

Big thanks to Quinton for the contribution, and to everyone testing the betas and sending feedback. Keep it coming.

By techluver on Tuesday, May 12, 2026 - 00:41

Hello.
I recently found need of joining teamtalk servers again and am glad this is an option because using the IOS app on the mac is only a half solution.
Question: Can I play .mp3 files through a channel like on the windows tt client?

By Matthew Whitaker on Tuesday, May 12, 2026 - 00:46

Solid beta so far. I was able to import a sound pack and it worked great.
Can you make it so home and end will put sliders to the top and bottom respectively, and page up and down can adjust by 5 or 10 percent? Let the user decide.

By Quinton Williams on Tuesday, May 12, 2026 - 00:51

Hi all.
I suppose I or anyone else can do this, but I do think there should be a toolbar on the left side of the screen containing a transmit, "go to settings" and maybe something else to make it easier for those who don't know to use f2 to disconnect.
ALso, a global speech option so you don't need to individually set every event to use apple script, system speech or macos announcement would be nice.
It really is a shame the dev wants $1000+ to obtain a proper license in order to distribute this properly.

By techluver on Tuesday, May 12, 2026 - 03:15

Is there a way we could have push to talk access? I don’t like voice activation because it can activate the worst times. Also, the server that I use uses a transmit queue system so I don’t know when it’s my turn to talk because I don’t get a beep like I would with the normal app

By Matthew Whitaker on Wednesday, May 13, 2026 - 16:06

Can you add a setting to sort channels so the ones that have the most people are at the top, then the second largest, third, etc? Also, I had to restart my computer cause folks couldn't hear me on the server. Turns out the app was changing my input device. After restarting my computer things are acting normal.

By Mathieu on Monday, May 18, 2026 - 16:43

What's new in beta 12

Stream an audio file to a channel

A new option in the Shortcuts menu (or Cmd+Option+S) lets you stream an MP3 or other audio file into the current channel. A dedicated player window opens with playback position, play/pause, stop, and a broadcast volume slider. Keyboard shortcuts inside the window: Space toggles play/pause, Escape stops, left/right arrow seeks by 5 seconds, up/down arrow adjusts the broadcast volume.

Fewer keychain prompts on saved servers

The store now prefers the modern data-protection keychain and remembers which saved servers have already had their legacy entries migrated, so it does not keep re-asking on every launch. A few prompts may still appear once during the transition, then they stop.

Accessible slider navigation

Every slider in the app now responds to Home (jump to minimum), End (jump to maximum), and Page Up / Page Down (move by 10% of the range, or 10 seconds on the media player's position slider). Left and right arrow keep their usual single-step behavior.

Sort channels by user count

Preferences > Connection has a new "Sort channels by" picker: either alphabetically (default) or by total user count, with the most populated channels listed first.

Other fixes
  • Imported sound pack names are sanitized.
  • A duplicate divider in Preferences > Sounds is gone.

Download

ttaccessible-1.0.0-beta.12-1.zip

Full release page: https://github.com/math65/ttaccessible/releases/tag/v1.0.0-beta.12

By Casey Reeves on Tuesday, May 19, 2026 - 10:22

Holy damn,
once again, amazing stuff. I love it!
Particularly the part about streaming media files to channels. You even managed to do two things better than the official client: seeking in media files is possible, and streaming a media file that is literally 3 gb actually worked. The official client struggles the minute the file is about 200 mbytes, if that, on top of causing nasty amounts of lag for no good reason, if it manages playback at all, rather than freezing beyond fixing and needing a good ol' kick to the backside.

By Mathieu on Tuesday, May 19, 2026 - 17:06

After months of beta and a ton of priceless feedback from this community, TTAccessible 1.0.0 is out β€” and it's the first release notarized by Apple. No more "Open Anyway" dance, no more workaround on first launch. Just download, drag, double-click.

Download ttaccessible-1.0.0-13.zip (release page)

What's new since beta 12

  • Notarized by Apple β€” first release signed with a real Developer ID and validated by Apple. No Gatekeeper friction on install.
  • Reconnection rescue β€” if the server rejects your password or username, a dialog now lets you edit your credentials and retries the connection automatically once they're fixed.
  • Stream submenu β€” stream a local audio file or a remote URL straight into the current channel.
  • Update checker β€” the app detects new versions on GitHub and offers to download them.
  • Custom app icon β€” yes, finally.

How to install

  1. Download the zip above.
  2. Unzip and drag ttaccessible.app into your /Applications folder.
  3. Double-click β€” no warning, no extra confirmation.

Thank you

This release would not exist without all of you. Special thanks to Johann, Casey, Quinton, Matthew, Dan, Herbie, Joseph, John, Dominique, Zach, crayton, kaillewaille, Nut β€” and everyone who tested, reported bugs, suggested features, or just dropped a kind word. Keep the feedback coming, 1.0 is only the start of the post-beta journey.

By Casey Reeves on Tuesday, May 19, 2026 - 17:55

Hi,
first off, thank you once again for develping this. This client is simply amazing. I wish it would be on iOS too, but I'm not sure if apple will allow that given the licensing of the stupid sdk and the official teamtalk client... Anyway.

I ran the latest binary here, got a few warnings like, that was downloaded from the internet and so on, which are fine. But then TTAccessible first complained about my login being invalid somehow so I filled in the password field again. It then connected. I quite the app though, to see if launching it again would then give me access without this error, just to be sure.
And I got, this. Nasty piece of work, and the worst is, I'm not sure how good the report will be given this was on a release and not a debug binary, and I seemingly cannot reproduce it again. But here you go anyway:
https://paste.xogium.me/4N.txt
Mean sigsegv.

By Matthew Whitaker on Wednesday, May 20, 2026 - 00:16

This might be a stretch, but could there be an option to have it so everyone can sound like they are in a 3d space? I like using those types of settings so I can focus easier on who's speaking instead of everyone generally coming straight down the middle.

By Mathieu on Wednesday, May 20, 2026 - 09:13

Quick update: 1.0.1 is out on GitHub.

What's fixed

  • Quit crash β€” a race condition in the TeamTalk SDK could crash the app on quit while a session was still active. The app now waits briefly for the SDK's threads to finish before exiting.
  • Microphone transmit on the system default device β€” voice was not being sent when the macOS default input was the selected microphone. Big thanks to Casey Reeves (@xogium) for the fix.

Direct download (.zip)

Future releases

The in-app updater is now in place, so you'll be notified directly inside the app when a new version is available. From now on, I won't be posting per-release announcements here on AppleVis β€” the changelog will live on the GitHub releases page.

I'll still post here for bigger news (major versions, new features, calls for feedback, etc.).

Thanks again to everyone testing!

By Joseph King on Wednesday, May 20, 2026 - 12:54

Amazing stuff! I just got version 1.0.1 of this app released. One minor thing I noticed was that the stream file shortcut, command+option+s, no longer works, and was also not present in the shortcuts/stream menu. Streaming a URL works though. If I knoew howto add this back locally I would do so, but unfortunately I've no idea how to add hotkeys to menu items that are nested inside submenus.

By Mathieu on Wednesday, May 20, 2026 - 15:13

Thanks for the precise report β€” you pinpointed the cause exactly. SwiftUI does not register keyboardShortcut accelerators on items nested inside a Menu(...) within a CommandMenu: the submenu is built lazily, so AppKit can't find the items on key-down and doesn't render the shortcut hint next to them either. I flattened the Stream submenu back into the top level of the Shortcuts menu in 1.0.2 β€” βŒ₯⌘S streams a file, βŒ₯⌘U streams a URL, and βŒ₯⌘. stops streaming.

The in-app updater should also pick it up automatically since the X.Y.Z bumped.

Download ttaccessible-1.0.2-16.zip (release page)

By Joseph King on Wednesday, May 20, 2026 - 15:38

Thank you so much for the quick fix! I'll grab the latest version post haist.

By Mathieu on Wednesday, May 20, 2026 - 19:04

Sorry for the release spam β€” and good news

A barrage of releases just landed this afternoon: 1.1.0, 1.1.1, 1.1.2, 1.1.3 in the span of a few hours. Apologies for the noise in your update checks.

Short story: I migrated ttaccessible to Sparkle so it can update itself from now on. Sparkle is the standard auto-updater for Mac apps, but wiring it up cleanly inside a sandboxed app is genuinely tricky β€” especially the parts that only show their problems when you sign + notarize + actually ship a real release. Each iteration was "ship β†’ find what's still not quite right β†’ ship the fix." I'll spare you the internals.

The good news: as of 1.1.3, the full Sparkle path is verified end-to-end in production. From here on, new versions install themselves on a click β€” no more drag-into-Applications dance.

What's actually new

  • Auto updates (now properly working). Background check at launch and every 24 hours. Click Install Update, the app quits, swaps itself, and relaunches in under 10 seconds.
  • Auto-Away no longer flips off after a few seconds. Thanks to Casey Reeves (@xogium) for the fix (PR #6). Status reliably restores to Available when you actually touch the keyboard or click.
  • Two new toggles in Preferences β†’ General β†’ Updates β€” auto-check (on by default) and include beta versions (off by default).

If you're on 1.1.0, 1.1.1, or 1.1.2

Install 1.1.3 manually this one last time β€” Sparkle in those versions can't pull this update down for you (that's exactly the bug 1.1.2 fixes, so 1.1.0/1.1.1 are stuck, and 1.1.2 β†’ 1.1.3 is the first run where it actually works). After this manual install, you're done with manual updates forever.

If you're on 1.0.2 or earlier, the old in-app updater will offer 1.1.3 β€” install it manually the same way you always have.

Download

ttaccessible-1.1.3-20.zip (release page)

Thanks for your patience β€” and to Casey for the auto-away patch.

By Mathieu on Thursday, May 21, 2026 - 08:16

What's new in 1.2.0

Push-to-talk is here. Pick any global hotkey in Preferences > Audio > Push-to-Talk, hold it to transmit, release to stop. It works from any app β€” Safari, Mail, whatever β€” without granting Accessibility access, because it uses the same low-level hotkey API as the system menu shortcuts. Big thanks to techluver for the original request on this forum.

An optional sound on press/release is on by default (you can turn it off in the same panel).

How to get it

If you're on 1.1.3, the in-app updater (Sparkle) will offer 1.2.0 within a day. To grab it now: ttaccessible > Check for updates…

If you're on an older build, download manually:

ttaccessible-1.2.0-21.zip (release page)

As always β€” signed and notarized, no Gatekeeper warning. Feedback welcome here.

By techluver on Thursday, May 21, 2026 - 15:46

Thank you so much for designing this. I miss my old Chat sites and I haven’t really been able to participate. But I can now.