Augmented Communications Link — ACK
A Modern Approach to AAC, with a twist
Situational mutism isn't about not knowing what to say. It's the gap between knowing exactly what you mean and being able to get it out loud, on command, right when someone's waiting on a reply. It shows up in ordinary moments — starting a conversation about something you'd already planned to bring up, replying when a direct answer is expected right now, or wanting to say something warmer than a nod when someone's done something kind. It can also show up as needing a beat to figure out what to do next when a place gets overwhelming — a grocery store, a string of errands — where having a few ready, grouped replies makes that next step easier instead of harder. And sometimes it's smaller and more urgent than any of that: needing to ask a quick, time-sensitive question and not being able to afford a freeze. None of this is about vocabulary, intelligence, or not caring about the conversation — it's a bottleneck between the sentence forming and the sentence leaving your mouth. ACK exists to give that sentence another way out.
Compose statements, build out context-based replies, utilize variables to speed up construction of statements. Use tap based controls to start playback or use the companion Wear OS app to unlock gesture based initiation. Created primarily to assist myself with situational mutism concerns. This covers the many moments throughout my day where communicating with others via non-verbal means is significantly easier. This tool is a fair bit more advanced than what you'd normally call AAC. The depth of statement construction, the ability to bridge statements, establish replies around specific contexts. You should not assume this is meant for someone with heavily limited communication and cognitive ability.
Built by one person, primarily to work around situational mutism — the moments where speaking out loud is much harder than it should be. I am not a speech-language pathologist, a mental health professional, or anyone with formal training in AAC design. Created entirely by myself to help address this gap. Do not use as a substitute for appropriate care and support from a qualified professional.
How it works
Multimodal Output
Tap controls
This is the path that never fails: press a button, the phrase plays. Everything else on this page — gestures, variables, the different deck types — is a faster or more flexible way to reach this same moment, not a replacement for it. If you only ever use tap controls, ACK still works exactly as intended.
Like any AAC app or device there are easy to access tap shortcuts that can be used to initiate playback. This interface is where you will compose your replies and statements, use variable construction to make rapid edits to more formal communication, and build response and reply profiles around various forms of context.
Gesture playback
You never have to use the watch — tapping through the app on your phone always works, and for a lot of moments that's exactly right. But sometimes reaching for your phone, unlocking it, and finding the right screen costs more than you have to spend right then — mid-task, hands busy, or just not wanting to break what you're doing to dig a phone out. The watch lets you fire a prepared phrase, out loud, with your phone still locked in your pocket — just your arm. It's a focused feature, not the whole app: one more way in, not a replacement for tapping.
The Wear OS companion handles gestures using a simple state machine — ARM → LOCK POSE → MODIFY → FIRE — giving you the ability to trigger a configured prompt using your wrist. this works with the phone locked and the screen off.
Full-screen output
Holding up a silent screen can land as a demand, and it leaves the other person guessing — is that the whole message? How are they supposed to respond? Playing the phrase out loud alongside the visual gives them the same context a spoken sentence would, so they can react naturally instead of interpreting a picture. Audio isn't always appropriate, though — a quiet office, a library, a moment you'd rather keep private — so Silent Mode exists for exactly those times, without losing the visual half.
Prompts play back full-screen with visual and audible output together, with audio routing to either the phone speaker or a connected Bluetooth speaker.
Relying on being heard isn't always possible, or even permissible. Sometimes you want communications to be silent while offering a visual prompt for communication. If you want to prevent all voice output toggle 'Silent Mode' under PROTOCOL from any deck.
Decks
Organization with a focus on utility
Think of a deck as a tab full of your most-used phrases for one part of your life or one kind of moment — work, errands, emergencies, feelings. Instead of scrolling through everything you might ever want to say, you switch to the deck built for where you are and what's likely coming up next, so the right phrase is one or two taps away instead of buried in a long list.
A deck offers one specific form of organization of communication profiles on screen at any time, to make working with the greater context system easier with continuous use. MATRIX decks support the use of profiles which gives decks additional flexibility. Configure a deck around work related activities, along with a few profiles for more detailed work related tasks.
Decks aren't fixed. Tap the DECK label to create a new Quick Actions, Emergency, Emoji, or GIF deck — pick a type, name it, choose a color, done. MANAGE handles renaming, recoloring, or removing anything you've created.
MATRIX Deck
This is the main, do-everything deck. Three broad categories cover most day-to-day replies, with four ready phrases in each — enough breadth that you're rarely stuck, but small enough to actually remember where things live. Profiles let those same three categories hold different phrasing for different parts of your life (work vs. home, say) without rebuilding the whole layout each time.
This is the core ACK deck and experience. Build around rapid statement creation and recall. Tap to initiate playback, edit a prompt, use variables to speed up construction. Prompts can be bound to one of the three poses used by the Wear OS experience, with up to four commands issuable per pose. Additional context poses can be added inside a MATRIX deck, allowing for hot-swapping of all replies under a pose with a single tap.
Switching profiles remaps what the same gesture produces — useful for reach, but it trades away the "one motor plan, one meaning, always" consistency that core-vocabulary AAC systems (PODD, LAMP Words for Life) deliberately protect, on the theory that automaticity needs a fixed mapping to build on. The on-screen and on-watch profile indicator exists to offset that ambiguity. If a specific gesture needs to mean the exact same thing no matter what, a Quick Actions deck keeps that guarantee instead of a MATRIX deck's profiles.
Quick Actions Deck
A stripped-down deck for the phrases you want to be unmistakable no matter what — greetings, sign-offs, a fixed set of references. Twelve total slots, no profile-switching, so a given gesture always means the same thing here — the guaranteed-consistency option next to MATRIX's more flexible one.
A more slimmed down experience that offers the user the ability to bind up to four phrases to a pose under a single form of context. Used for greetings, closures, quick references. Edit all three poses then initiate playback using the watch or with a tap.
Emergency Deck
Stress can make your body do things you didn't choose — for me, that's clenching. A clenched hand brushing the screen used to be enough to accidentally clear a message before anyone had even read it. The Emergency deck is built so that can't happen: once a message from here is on screen, it stays until you deliberately clear it — a stray touch, a tremor, hands that aren't quite in your control can't make it disappear early. I haven't had to lean on this deck for a genuine emergency yet — but I built it to the standard I'd want if I ever do.
Your high priority communications deck. If you need help, if you have a response script for when things become extra difficult, if you don't want your prompt to disapear due to a stray tap or clench, this is where you access these prompts. Prompts issued from here can include a beaconing tone that plays before a prompt is issued, increasing the likelihood of reception by others.
Never worry about an Emergency deck response leaving your screen without your intention. All Emergency deck prompts now remain on the screen until explicitly cleared with a long tap-and-hold interaction.
This follows a principle common in AAC design for high-priority messaging: an urgent message's visibility needs to be as reliable as the trigger that produced it. Motor noise — tremor, involuntary movement, incidental contact — is exactly the kind of interference an emergency channel has to be immune to, because it's most likely to occur under the same stress that made the message necessary in the first place. Forcing speaker output and playing a beaconing tone ahead of the phrase further reduces reliance on a first attempt being received — lowering the cost of a communication breakdown at the moment repair is hardest.
Emoji Deck
Not every reply needs to be a full sentence. Sometimes an emoji says exactly the right amount — enough to show you're following along or reacting, without needing (or wanting) to build a whole statement for it. The built-in library is grouped into things like feelings, needs, and boundaries, not just a generic emoji keyboard.
Emotional context can be difficult to deliver sometimes. This deck covers this a bit. Pick from a suite of emoji from the built-in library or use any emoji you have access to on your device. Group them by category, add text to the displayed prompt, make the emoji prompt more sticky.
GIF Deck
If you already communicate through GIFs and memes online, this lets you do the same thing face-to-face — pull up the exact reaction instead of trying to describe it in words to someone who'd get it instantly if they could just see it.
Memes. A powerful communication medium online, now ready to use in real space. Store and organize GIFs that you'd like to play at any time here. Modifiers for GIF prompts enable better display of different aspect ratio content. Add in text to your GIF prompt to reduce load on the recipient.
Manual Override
A plain text box for anything that doesn't fit a pre-built deck — type it once, then either save it for later or just say it now and let it go. The escape hatch for whatever the other decks didn't anticipate.
A standard textbox input that can be used to store phrases and prompts to a category of your choosing. These can be played with a quick tap. You can also use this to issue an ephemeral reply, if the message isn't worth saving.
Target Computer
Rather than rewriting "Thanks, [name]" or "Meet me at [place]" from scratch every time, save the name or place once as a Target, then tap it into whatever phrase you're about to send — the sentence stays put, only the specific detail changes.
Eight "targets" for any prompt you issue using ACK. These can be configured to prepend or append any simple prompt issued via a MATRIX or Quick Actions deck. Add a quick name, place, identity, or callout with a quick tap before issuing a prompt to see it added to your statement.
Audio Architect
This is where the voice that speaks for you gets shaped until it actually feels like yours — not just picking a robotic default, but adjusting pitch, speed, and texture until the output matches how you'd want to sound saying it.
Audio Architect splits into two layers. Global Output settings shape ACK's speech no matter which voice is active — Master Gain for volume, Global Cadence for dynamic pacing (letting output speed up and slow down through a phrase rather than reading at one flat rate), Force Speaker for routing, and Guide Vox to toggle spoken tutorial guidance on or off.
Voice itself comes from either a locked factory preset for a ready-to-use, consistent sound, or one of three fully editable custom slots. Each custom slot has its own DSP chain: pick a base voice from any TTS engine installed on your device, then shape it with pitch, a constant per-voice speed, an optional robotic overlay, and a bitcrush texture — save it, and it becomes a reusable voice of your own.
Variables & Root Overrides
If the same detail — a name, a place, today's date — shows up across a bunch of your saved phrases, a variable means you fill it in once instead of hunting down and editing every phrase that mentions it.
Any phrase can hold a variable — write {VAR} in the Live Save Editor and ACK prompts for that value, or tag it {VAR:A}, {VAR:B}, or {VAR:C} to make it targeted instead of just local. A targeted variable can be bridged: turn on that tag's Root Override for a category, set one value, and it replaces that variable across every phrase in the category — no editing each one by hand. Think of a routine work task: tag the parts that actually change, like a name or a location, and one Root Override update carries across the whole deck. Root Override is entirely opt-in — every phrase already works on its own local value without it.
Training & confidence-building
Practice the gestures before you need them.
Training Ground
A practice space that doesn't count — nothing here actually plays out loud or sends anywhere. It's just you and the watch, building the muscle memory for a gesture before you're relying on it in a real moment.
Free-form gesture practice with live telemetry and normal pacing — nothing you do here actually plays back or sends output. A safe space to get the arm/lock/modify/fire cycle into muscle memory.
This follows a well-established idea in AAC motor-planning instruction: automaticity comes from repetition under safe, low-stakes conditions, not from getting a gesture right the first time it actually matters.
Deck Trainer
Same practice idea as Training Ground, but scored against your actual deck — so you're rehearsing the layout you'll really use, not a generic example that won't match your real phrases.
Scored practice against your own real Matrix or Quick Actions deck, so you're rehearsing the actual layout you'll use — not a generic demo.
The companion
A Wear OS app that does the physical half.
Pairing & Sync
Set up once, then forget about it. There's no separate ACK-specific pairing step — as long as the watch is already paired to your phone through Wear OS, that's all this needs, and it keeps listening in the background without the watch screen needing to stay on.
The watch side is deliberately small: it's what senses the pose, watches for a wake gesture (by default, a triple wrist twist so commands can't fire by accident), and pushes that event to the phone. The phone stays in charge of decks, profiles, and playback. A background sensor service on the watch keeps this working without needing the watch screen to stay open the entire time you're wearing it.
There's no separate pairing step — install ACK on your watch and phone, and as long as the two are already paired through Wear OS, commands start firing the moment the watch app is running. Under the hood it rides Google's Wearable Data Layer for that phone ↔ watch link.
Safety & Recovery
Fail-safes for stray taps, shaky hands, and messages that clear too soon.
Having the ability to recover from a misfire or accidental tap, interruptions, and moments where accuracy takes a hit are what make an assistive tool truly useful. A graceful method to play back a previously issued statement, a phone gesture to cancel playback of any prompt, and an additional way to cancel a prompt before it even leaves your watch.
These features help build confidence knowing there are ways to stop a statement you didn't want to say from being received, allowing playback from historical statements, and the ability to replay any visual prompt indefinitely.
Shake Kill Switch
A shake of the phone immediately stops whatever's currently playing or on screen — the fastest way to cut something off if a gesture misfires or you tapped the wrong thing.
You need multiple ways to stop a bad tap, gesture recognition, or statement from leaving your device or completing. One of these methods is a 'Shake to cancel' service that cancels any queued prompt or state traversal on the watch by shaking the phone. Configure sensitivity and test the configuration under PROTOCOL from any deck.
Shaky-Hands Mode
For the days your hands aren't as steady or precise as usual — stress, fatigue, whatever the reason — this gives the watch more time and more tolerance before it decides a gesture is finished, so you're not fighting the tool on top of everything else.
There are moments throughout a day that accuracy might take a hit. You might struggle to continuously trigger the poses you've practiced, you shouldn't be denied access to your tool when this happens. A new 'Shaky hands' mode increases the time needed to navigate through the ACK Wear state machine, with enhancements to addressing a set of noisy sensors due to a glitch in coordination. These options can be configured from any deck under PROTOCOL.
Enable 'Shaky Hands' mode anywhere in ACK Wear with a tap-and-hold interaction. This does increase the amount of time needed to confirm a pose command, you can always test this method out in the Training Grounds.
A way out before it fires
If a gesture starts locking in but you didn't actually mean it, a single tap anywhere on the watch cancels it before anything plays — a mistake doesn't have to finish just because it started.
Misfires happen. Sometimes a pose isn't recognized properly for a host of reasons. You can always halt playback of these erroneous replies by tapping anywhere within ACK Wear to clear the current progression through the state machine, preventing the error from leaking through.
REPLAY: bring back what you missed
If someone missed what you just said — didn't hear it, wasn't looking, got distracted — you don't have to redo the whole gesture or dig back through decks. A quick replay button sits on screen for twenty seconds, and everything you've said is still sitting in the Terminal log if you need it later than that.
Issuing a prompt doesn't always land on first play. Things can prevent others from reading or hearing them, distractions happen, the situation at work can evolve at a rapid pace. You should have a little security here when it comes to managing this type of interaction. For a prompt that you just issued a 'replay' button will remain on your screen for twenty seconds after a visual prompt is cleared. Any prompt issued using 'replay' is sticky, they retain their presence on your screen until you tap to clear them.
The Terminal (logs) screen can be used to reissue any previously played prompt from any deck as well.
Help, onboarding & transparency
A tutorial system that only advances when you actually do the thing.
Instead of reading a manual up front, ACK teaches by having you actually do the thing — tap the button, feel the gesture — and only moves on once you've genuinely done it. You can't accidentally "finish" a tutorial without having tried the real feature.
ACK's in-app help isn't a slideshow. Each module only steps forward when a real event fires from the real UI — a specific tap, a committed text field, a cleared overlay, an actual watch gesture broadcast — so finishing a walkthrough means you've genuinely done it once, not just read about it.
Your Data, Your Rules
Everything you've built — every deck, every phrase, every saved voice — lives on your device. Exporting a backup means you have a copy that survives a lost phone, a factory reset, or switching devices; without one, that copy only ever exists in one place.
Backup and restore live under Settings. Your decks, profiles, configurations, personification, and variables are yours — the Data Port exists so you can move them, keep copies, and never be locked into a single install.
Terminal
A running, timestamped record of everything ACK has said or received this session — useful for double-checking what actually went out, or replaying something from a few minutes ago. It clears when you close the app, so it's not a permanent history.
Every system, output, and watch event gets a timestamped, color-coded line in the Terminal — what ACK received, resolved, and sent. Any line that's an actual spoken phrase gets a replay control, and replaying an Emergency message keeps its safety behavior intact: forced speaker output, no auto-clear. The log lives in memory only — closing and reopening ACK clears it.
Under the hood
For anyone who wants to build it themselves.
ACK is Kotlin + Jetpack Compose, split into a phone module and a Wear OS module. Maps are rendered fully offline with Mapsforge/vtm — no tile server, no network dependency, matching the rest of the app's local-first design.
Build requirements
- Android Studio
No region map ships with the app or the build — Geo-Protocol works by coordinate with
no map data at all. Import your own Mapsforge-compatible .map file from inside
the app (Geo-Protocol → Map Data → Import Map File) any time after install, no
rebuild required. A personal build can still drop a splice into
app/src/main/assets/tactical_grid.map as a build-time default if you'd rather
bundle one.
Full contribution workflow — branch naming, commit conventions, and the day-to-day git flow — is documented in docs/GIT_WORKFLOW.md.
| Component | License |
|---|---|
| Mapsforge / vtm (offline maps) | LGPLv3, with a static-linking waiver |
| AndroidX / Jetpack Compose | Apache-2.0 |
| ACK itself | GPLv3 |
Status & disclaimers
Where this actually stands.
This section gets updated by hand against docs/HELP_TUTORIAL_GUIDE.md — it's
a snapshot, not a live feed, so treat it as "true as of the last update," not real-time.
Known gaps
- No known issues at this time.
Not a substitute for professional AAC evaluation or speech-language therapy. Built by one person as a personal tool, shared as-is.
Source & license
Get ACK
ACK is licensed under the GNU General Public License v3.0. Source, issues, and the full build plan for this page live in the repository.
Releases
Most recent first, pulled from GitHub Releases.
-
v1.0-beta.3 2026-09-13
Target Computer Overhaul
-
v1.0-beta.2 2026-09-10
Recovery, motor accountability, stability update
-
v1.0-beta.1 2026-09-09
See every build, including older betas, on GitHub Releases.
Try it in the browser
ACK Deck Simulator
A faithful, local-only reproduction of the real app's deck logic — edit prompts, use variables and shared root overrides, and play a prompt to a full-screen overlay. Nothing here reaches your phone or a server; everything is saved only in this browser.
This is a live, in-browser stand-in for the MATRIX deck described above — build a phrase, fill in a variable, hit play, and see the exact full-screen visual the real app would show. It just can't speak it out loud, since a browser tab isn't your phone's speaker.