Alexa OctoPrint is an OctoPrint plugin that simulates local smart devices for selected printer actions. It does not require an Alexa skill, an account on an external integration platform, or a cloud backend.
Install the plugin, enable the actions you want, and ask:
Alexa, search for new devices.
Discovery and control traffic stay on the local network.
This project is an alpha release. Test every enabled action from the OctoPrint settings page before using it by voice.
- OctoPrint 1.6.0 or newer
- Python 3.7 or newer
- A genuine Echo device on the same LAN as OctoPrint
- TCP port 80 routing for the local smart-device endpoints
- Optional: OctoPrint-Enclosure for printer power and light outputs
Open Settings > Plugin Manager, select Install from URL, and use the release
archive:
https://github.com/RICLAMER/AlexaOctoPrint/releases/latest/download/OctoPrint-AlexaOctoPrint.zip
The latest tested upload package is also kept at
plugin/OctoPrint-AlexaOctoPrint.zip.
Restart OctoPrint after installation.
~/oprint/bin/pip install \
https://github.com/RICLAMER/AlexaOctoPrint/releases/latest/download/OctoPrint-AlexaOctoPrint.zip
sudo service octoprint restartAlexa local discovery expects the smart-device description and control routes at the root of TCP port 80. HAProxy is not mandatory when another existing reverse proxy already exposes the required routes correctly.
Common cases:
- Existing HAProxy with Alexa OctoPrint routes: no additional proxy is needed.
- Existing Nginx, Caddy, or another proxy with equivalent routes: keep it.
- Port 80 free while OctoPrint uses an internal port: a port 80 proxy is still required; the Easy Setup can install HAProxy.
- OctoPrint directly using port 80: move OctoPrint to an internal port such as 5000 before placing a reverse proxy on port 80.
- Another process using port 80: the Easy Setup reports it and makes no change.
The managed rules accept only:
GET /description.xmlPOST /apiGET /api/<40-hex-character-installation-key>- the matching
/lightsread and state routes
Normal OctoPrint endpoints such as /api/job and /api/files never match these
rules.
The helper is documented in
Easy_setup_HAProxy/README.md. It can:
- inspect the current port 80 listener;
- preserve existing HAProxy routes;
- replace legacy Alexa OctoPrint rules;
- validate the full configuration before restart;
- save rollback state under
/var/lib/alexaoctoprint-haproxy/; - restore the exact saved configuration when it is safe to do so.
For interactive SSH setup:
git clone https://github.com/RICLAMER/AlexaOctoPrint.git
cd AlexaOctoPrint
sudo python3 Easy_setup_HAProxy/easy_setup_haproxy.pyThe settings page also provides Inspect, Install / update routes, and Restore previous configuration controls. Systems that require a sudo password need the one-time, restricted web helper described in the Easy Setup guide.
- Open
Settings > Alexa OctoPrint. - Select Portuguese, English, or Spanish.
- Enable only the actions you intend to use.
- Configure temperatures, movement, G-code, files, and Enclosure Labels.
- Test actions with the Run, On, and Off buttons.
- Select Refresh and confirm that SSDP is running.
- Ask Alexa to search for new devices.
The action list changes immediately when a different language is selected. Save the settings before Alexa discovery. Alexa may retain names from devices that were already discovered, so remove those devices before discovering them again in another language.
When upgrading from 0.1.x, remove the old Octo ... devices from Alexa before
discovery. Version 0.2.0 replaces the shared legacy username with a unique
installation username and uses the new device names below.
Each table shows the default action names and voice examples for the selected plugin language. Custom device names remain available in settings and are not translated automatically.
| Action | Voice command |
|---|---|
| Impressora 3D | "Alexa, ligar impressora 3D" / "Alexa, desligar impressora 3D" |
| Luz da Impressora | "Alexa, ligar luz da impressora" / "Alexa, desligar luz da impressora" |
| Pausar Impressão | "Alexa, pausar impressão" |
| Retomar Impressão | "Alexa, retomar impressão" |
| Cancelar Impressão | "Alexa, cancelar impressão" |
| Levar Impressora para Home | "Alexa, levar impressora para Home" |
| Nivelar Mesa | "Alexa, nivelar mesa" |
| Subir Eixo Z | "Alexa, subir eixo Z" |
| Baixar Eixo Z | "Alexa, baixar eixo Z" |
| Extrudar Filamento | "Alexa, extrudar filamento" |
| Recolher Filamento | "Alexa, recolher filamento" |
| Aquecer Mesa | "Alexa, aquecer mesa" / "Alexa, ligar aquecimento da mesa" |
| Desligar Mesa | "Alexa, desligar mesa" / "Alexa, desligar aquecimento da mesa" |
| Aquecer Bico para PLA | "Alexa, aquecer bico para PLA" |
| Aquecer Bico para ABS | "Alexa, aquecer bico para ABS" |
| Aquecer Bico para PETG | "Alexa, aquecer bico para PETG" |
| Desligar Aquecimento do Bico | "Alexa, desligar aquecimento do bico" / "Alexa, desligar bico" |
| Motores da Impressora | "Alexa, ligar motores da impressora" / "Alexa, desligar motores da impressora" |
| Imprimir Último Arquivo | "Alexa, imprimir último arquivo" |
| Imprimir Peça Um | "Alexa, imprimir peça um" |
| Imprimir Peça Dois | "Alexa, imprimir peça dois" |
| Imprimir Peça Três | "Alexa, imprimir peça três" |
| Emergência da Impressora | "Alexa, emergência da impressora" / "Alexa, parar impressora imediatamente" |
| Action | Voice command |
|---|---|
| 3D Printer | "Alexa, turn on 3D printer" / "Alexa, turn off 3D printer" |
| Printer Light | "Alexa, turn on printer light" / "Alexa, turn off printer light" |
| Pause Print | "Alexa, pause print" |
| Resume Print | "Alexa, resume print" |
| Cancel Print | "Alexa, cancel print" |
| Home Printer | "Alexa, home printer" |
| Level Bed | "Alexa, level bed" |
| Raise Z Axis | "Alexa, raise Z axis" |
| Lower Z Axis | "Alexa, lower Z axis" |
| Extrude Filament | "Alexa, extrude filament" |
| Retract Filament | "Alexa, retract filament" |
| Heat Bed | "Alexa, heat bed" / "Alexa, turn on bed heating" |
| Turn Off Bed | "Alexa, turn off bed" / "Alexa, turn off bed heating" |
| Heat Nozzle for PLA | "Alexa, heat nozzle for PLA" |
| Heat Nozzle for ABS | "Alexa, heat nozzle for ABS" |
| Heat Nozzle for PETG | "Alexa, heat nozzle for PETG" |
| Turn Off Nozzle Heating | "Alexa, turn off nozzle heating" / "Alexa, turn off nozzle" |
| Printer Motors | "Alexa, turn on printer motors" / "Alexa, turn off printer motors" |
| Print Last File | "Alexa, print last file" |
| Print Part One | "Alexa, print part one" |
| Print Part Two | "Alexa, print part two" |
| Print Part Three | "Alexa, print part three" |
| Printer Emergency | "Alexa, printer emergency" / "Alexa, stop printer immediately" |
| Action | Voice command |
|---|---|
| Impresora 3D | "Alexa, enciende impresora 3D" / "Alexa, apaga impresora 3D" |
| Luz de la Impresora | "Alexa, enciende luz de la impresora" / "Alexa, apaga luz de la impresora" |
| Pausar Impresión | "Alexa, pausa impresión" |
| Reanudar Impresión | "Alexa, reanuda impresión" |
| Cancelar Impresión | "Alexa, cancela impresión" |
| Llevar Impresora a Inicio | "Alexa, lleva impresora a inicio" |
| Nivelar Cama | "Alexa, nivela cama" |
| Subir Eje Z | "Alexa, sube eje Z" |
| Bajar Eje Z | "Alexa, baja eje Z" |
| Extruir Filamento | "Alexa, extruye filamento" |
| Retraer Filamento | "Alexa, retrae filamento" |
| Calentar Cama | "Alexa, calienta cama" / "Alexa, enciende calentamiento de cama" |
| Apagar Cama | "Alexa, apaga cama" / "Alexa, apaga calentamiento de cama" |
| Calentar Boquilla para PLA | "Alexa, calienta boquilla para PLA" |
| Calentar Boquilla para ABS | "Alexa, calienta boquilla para ABS" |
| Calentar Boquilla para PETG | "Alexa, calienta boquilla para PETG" |
| Apagar Calentamiento de la Boquilla | "Alexa, apaga calentamiento de la boquilla" / "Alexa, apaga boquilla" |
| Motores de la Impresora | "Alexa, enciende motores de la impresora" / "Alexa, apaga motores de la impresora" |
| Imprimir Último Archivo | "Alexa, imprime último archivo" |
| Imprimir Pieza Uno | "Alexa, imprime pieza uno" |
| Imprimir Pieza Dos | "Alexa, imprime pieza dos" |
| Imprimir Pieza Tres | "Alexa, imprime pieza tres" |
| Emergencia de la Impresora | "Alexa, emergencia de la impresora" / "Alexa, detén impresora inmediatamente" |
Alexa language behavior can vary by Echo model and account locale. A custom device name can be used when a default phrase is not recognized reliably.
- Bed temperature: 100 C by default
- PLA nozzle temperature: 200 C
- ABS nozzle temperature: 240 C
- PETG nozzle temperature: 235 C
- Z movement: 2 mm at 600 mm/min
- Extrusion: 5 mm at 300 mm/min
- Retraction: 5 mm at 1800 mm/min
- Homing, leveling, motor, shutdown, and emergency G-code
- Three selectable OctoPrint file slots
- Enclosure output Labels for printer power and light
Printer power and light actions are optional. When OctoPrint-Enclosure is loaded, Alexa OctoPrint reads its current output Labels and presents them in dropdowns. Label matching ignores capitalization and extra whitespace.
If OctoPrint-Enclosure is missing, disabled, or does not contain the selected Label:
- Alexa OctoPrint continues running;
- unrelated actions remain available;
- the settings page shows the detected condition;
- power or light commands return a controlled error in Debug.
- Print Last File, the three file slots, and Printer Emergency are disabled by default.
- Cancel Print always requires the command twice within 15 seconds.
- Motion, extrusion, motor, printing, and power actions are blocked while the printer is printing or paused unless explicitly allowed.
- Printer power off is blocked while printing by default.
- Momentary actions reset their reported smart-device state automatically.
- Emergency uses
M112,M104 S0, andM140 S0by default.
The settings page includes:
- SSDP state, discovery counter, and last Echo address;
- description URL and Hue HTTP request counters;
- enabled device IDs and current states;
- Enclosure availability and discovered Labels;
- recent actions and controlled errors;
- manual action execution;
- port 80 routing inspection.
Local diagnostic endpoints:
/plugin/alexaoctoprint/description.xml/plugin/alexaoctoprint/espalexa/plugin/alexaoctoprint/debug/status
The per-installation smart-device username is never displayed or written to Debug logs; only a short suffix is shown for diagnostics.
Alexa OctoPrint uses OctoPrint's
octoprint.plugin.softwareupdate.check_config hook with the
github_release check type. Releases are tagged with the plugin version, and
OctoPrint installs the matching GitHub tag archive:
https://github.com/RICLAMER/AlexaOctoPrint/archive/{target_version}.zip
Every stable Release also includes an installable asset named exactly
OctoPrint-AlexaOctoPrint.zip. The OctoPrint Plugin Repository uses the
permanent releases/latest/download URL for that asset.
This follows the release and update pattern used by OctoPrint-BLTouch.
- No external integration account, skill, telemetry, or cloud relay is used.
- A random 40-character local username is generated for each installation.
- Requests with another username receive a local unauthorized response.
- Reverse-proxy rules validate both HTTP method and exact path shape.
- Normal OctoPrint API traffic is not routed to the plugin.
The local username is an emulated device credential, not an Amazon, Philips, or OctoPrint account key.
Local discovery behavior was informed by Aircoookie/Espalexa, an MIT-licensed Arduino library for local Alexa device control. Alexa, Echo, Philips, and Hue are trademarks of their respective owners. This project is not affiliated with or endorsed by Amazon or Signify.
Copyright 2026 RICLAMER.
Alexa OctoPrint is free software licensed under the
GNU Affero General Public License v3.0 or later
(AGPL-3.0-or-later).