diff --git a/modular_doppler/loadout_categories/categories/inhands.dm b/modular_doppler/loadout_categories/categories/inhands.dm
index e6bb65a69c4f1..071c98ebc907d 100644
--- a/modular_doppler/loadout_categories/categories/inhands.dm
+++ b/modular_doppler/loadout_categories/categories/inhands.dm
@@ -30,3 +30,7 @@
/datum/loadout_item/inhand/slimpack
name = "Custom Flatpack"
item_path = /obj/item/storage/backpack/satchel/flat/empty/custom
+
+/datum/loadout_item/inhand/aac_device
+ name = "AAC Device"
+ item_path = /obj/item/aac_device
diff --git a/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_objects.dm b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_objects.dm
new file mode 100644
index 0000000000000..34fb49ffb5aa5
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/GAGS/greyscale_configs_objects.dm
@@ -0,0 +1,17 @@
+/*
+
+ /> フ meow! this dm file contains greyscale configs for non-clothing items.
+ | _ _| /
+ /` ミ_xノ
+ / |
+ / ヽ ノ
+ │ | | |
+/ ̄| | | |
+( ̄ヽ__ヽ_)__)_)
+\二)
+*/
+
+/datum/greyscale_config/aac_device
+ name = "AAC Device"
+ icon_file = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/devices.dmi'
+ json_config = 'modular_doppler/modular_cosmetics/GAGS/json_configs/objects/aac_device.json'
diff --git a/modular_doppler/modular_cosmetics/GAGS/icons/obj/devices.dmi b/modular_doppler/modular_cosmetics/GAGS/icons/obj/devices.dmi
new file mode 100644
index 0000000000000..d081c92b2a504
Binary files /dev/null and b/modular_doppler/modular_cosmetics/GAGS/icons/obj/devices.dmi differ
diff --git a/modular_doppler/modular_cosmetics/GAGS/json_configs/objects/aac_device.json b/modular_doppler/modular_cosmetics/GAGS/json_configs/objects/aac_device.json
new file mode 100644
index 0000000000000..293bf1c36aa37
--- /dev/null
+++ b/modular_doppler/modular_cosmetics/GAGS/json_configs/objects/aac_device.json
@@ -0,0 +1,16 @@
+{
+ "aac_device": [
+ {
+ "type": "icon_state",
+ "icon_state": "aac_device_body",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "aac_device_screen",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+}
diff --git a/modular_doppler/modular_items/aac_device.dm b/modular_doppler/modular_items/aac_device.dm
new file mode 100644
index 0000000000000..1f069d852f383
--- /dev/null
+++ b/modular_doppler/modular_items/aac_device.dm
@@ -0,0 +1,30 @@
+/obj/item/aac_device
+ name = "AAC Device"
+ desc = "An Augmented and Alternative Communication device designed to facilitate oral communication \
+ for people with communicative disabilities."
+ icon = 'modular_doppler/modular_cosmetics/GAGS/icons/obj/devices.dmi'
+ icon_state = "aac_device"
+ w_class = WEIGHT_CLASS_SMALL
+ obj_flags = UNIQUE_RENAME
+ slot_flags = ITEM_SLOT_BELT
+ flags_1 = IS_PLAYER_COLORABLE_1
+ greyscale_config = /datum/greyscale_config/aac_device
+ greyscale_colors = "#FFFFFF#FFFFFF"
+
+/obj/item/aac_device/attack_self(mob/user)
+ user.balloon_alert_to_viewers("typing...", "started typing...")
+ playsound(src, 'modular_doppler/modular_items/sounds/aac_started_type.ogg', 50, TRUE)
+ var/str = tgui_input_text(user, "What would you like the device to say?", "Say Text", "", MAX_MESSAGE_LEN, encode = FALSE)
+ if(!str)
+ user.balloon_alert_to_viewers("stops typing", "stopped typing")
+ playsound(src, 'modular_doppler/modular_items/sounds/aac_stopped_type.ogg', 50, TRUE)
+ return
+ src.say(str)
+ str = null
+
+/obj/item/aac_device/item_ctrl_click(mob/user)
+ var/new_name = reject_bad_name(tgui_input_text(user, "Name your Text-to-Speech device. This matters for displaying it in the chat bar.", "Set TTS Device Name", "", MAX_NAME_LEN))
+ if(new_name)
+ name = "[new_name]'s [initial(name)]"
+ else
+ name = initial(name)
diff --git a/modular_doppler/modular_items/icons/devices.dmi b/modular_doppler/modular_items/icons/devices.dmi
index 07146ded925ed..fde2c9e311e39 100644
Binary files a/modular_doppler/modular_items/icons/devices.dmi and b/modular_doppler/modular_items/icons/devices.dmi differ
diff --git a/modular_doppler/modular_items/sounds/aac_started_type.ogg b/modular_doppler/modular_items/sounds/aac_started_type.ogg
new file mode 100644
index 0000000000000..3c17e95904421
Binary files /dev/null and b/modular_doppler/modular_items/sounds/aac_started_type.ogg differ
diff --git a/modular_doppler/modular_items/sounds/aac_stopped_type.ogg b/modular_doppler/modular_items/sounds/aac_stopped_type.ogg
new file mode 100644
index 0000000000000..3a6f66579cd15
Binary files /dev/null and b/modular_doppler/modular_items/sounds/aac_stopped_type.ogg differ
diff --git a/modular_doppler/modular_items/tts_device.dm b/modular_doppler/modular_items/tts_device.dm
deleted file mode 100644
index b2fbbca04edb0..0000000000000
--- a/modular_doppler/modular_items/tts_device.dm
+++ /dev/null
@@ -1,36 +0,0 @@
-/obj/item/ttsdevice
- name = "TTS Device"
- desc = "A small device with a keyboard attached. Anything entered on the keyboard is played out the speaker. \nAlt-click the device to make it beep. \nCtrl-click to name the device."
- icon = 'icons/obj/device.dmi'
- icon_state = "gangtool-purple"
- lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
- w_class = WEIGHT_CLASS_SMALL
- obj_flags = UNIQUE_RENAME
- slot_flags = ITEM_SLOT_BELT
-
-/obj/item/ttsdevice/attack_self(mob/user)
- var/input = stripped_input(user,"What would you like the device to say?", ,"", 500)
- if(QDELETED(src) || !user.canUseTopic(src, BE_CLOSE))
- return
- if(input)
- src.say(input)
- input = null
-
-/obj/item/ttsdevice/AltClick(mob/living/user)
- var/noisechoice = input(user, "What noise would you like to make?", "Robot Noises") as null|anything in list("Beep","Buzz","Ping")
- if(noisechoice == "Beep")
- user.visible_message("[user] has made their TTS beep!", "You make your TTS beep!")
- playsound(user, 'sound/machines/twobeep.ogg', 50, 1, -1)
- if(noisechoice == "Buzz")
- user.visible_message("[user] has made their TTS buzz!", "You make your TTS buzz!")
- playsound(user, 'sound/machines/buzz-sigh.ogg', 50, 1, -1)
- if(noisechoice == "Ping")
- user.visible_message("[user] has made their TTS ping!", "You make your TTS ping!")
- playsound(user, 'sound/machines/ping.ogg', 50, 1, -1)
-
-/obj/item/ttsdevice/CtrlClick(mob/living/user)
- var/new_name = input(user, "Name your Text-to-Speech device: \nThis matters for displaying it in the chat bar:", "TTS Device") as text|null
- if(new_name)
- new_name = reject_bad_name(new_name)
- name = "[new_name]'s [initial(name)]"
diff --git a/modular_doppler/modular_vending/code/tg_vendors/medical.dm b/modular_doppler/modular_vending/code/tg_vendors/medical.dm
new file mode 100644
index 0000000000000..24fd85e015aff
--- /dev/null
+++ b/modular_doppler/modular_vending/code/tg_vendors/medical.dm
@@ -0,0 +1,4 @@
+/obj/machinery/vending/medical
+ products_doppler = list(
+ /obj/item/aac_device = 5,
+ )
diff --git a/tgstation.dme b/tgstation.dme
index be2a2635135e8..440850f647d56 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -6753,6 +6753,7 @@
#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_face.dm"
#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_head.dm"
#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_neck.dm"
+#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_objects.dm"
#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_sets.dm"
#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_storage.dm"
#include "modular_doppler\modular_cosmetics\GAGS\greyscale_configs_suit.dm"
@@ -6868,6 +6869,7 @@
#include "modular_doppler\modular_food_drinks_and_chems\food_and_drinks\datums\crafting\hemophage_recipes.dm"
#include "modular_doppler\modular_hydroponics\code\honeysuckle.dm"
#include "modular_doppler\modular_hydroponics\code\tea_coffee.dm"
+#include "modular_doppler\modular_items\aac_device.dm"
#include "modular_doppler\modular_items\bettermed_overrides.dm"
#include "modular_doppler\modular_items\conversion_kits.dm"
#include "modular_doppler\modular_items\invisible_gear.dm"
@@ -6990,6 +6992,7 @@
#include "modular_doppler\modular_vending\code\tg_vendors\clothesmate.dm"
#include "modular_doppler\modular_vending\code\tg_vendors\engivend.dm"
#include "modular_doppler\modular_vending\code\tg_vendors\games.dm"
+#include "modular_doppler\modular_vending\code\tg_vendors\medical.dm"
#include "modular_doppler\modular_vending\code\tg_vendors\megaseed.dm"
#include "modular_doppler\modular_vending\code\tg_vendors\wardrobes.dm"
#include "modular_doppler\modular_weapons\code\gunsets.dm"