This deck needs a modern browser

impress.js animates these slides with CSS 3D transforms, which this browser does not support. Open the deck in a current version of Chrome, Firefox, Safari, or Edge.

Part 1 · The Hooks What messaging protocols do apps use beyond plain HTTP REST?
Part 1 · The Hooks Learn a tool stack you can use for pure web applications and later scale into IoT, firmware, and hardware.
Part 1 · The Hooks Emulate deploying cloud environments by practicing first on a local Linux SSH server.
AWS Community Day Davao 2026 Build with Kiro CLI

MQTTon EC2

Deploying MQTT on EC2 (Equivalent)
in Lieu of HTTP REST for Web Messaging and IoT
A hands-on workshop for AWS Community Day Davao 2026
Kiro CLI Mosquitto Linux · SSH IoT
AWS Community Day Davao 2026 Who is running this

Facilitated by AWS UG Cebu

This session is run by AWS User Group Cebu community leads together with Student Builder Group leads from Cebu, as guest facilitators for AWS Community Day Davao 2026.

Follow along on your own device: open mqtt-slides.awsugcebu.org in a browser. Slides will stay online after the event.

Part 2 · Expectations

Real talk, and our goal

Core goal: kickstart your journey, help you build things with MQTT, and prepare you for future software, hardware, and IoT projects.

Part 2 · Ground rules

Ask. Honestly. Out loud.

If you are confused about something, you are almost certainly not the only one. Asking is the fastest tool you have, and it costs nothing.

Noticing you have a question, and going to find the answer, is the skill. It is the whole job. Socratic questioning and epistemic humility are named, studied practices, not a polite way of saying "no stupid questions."

Pre-Game · Start this now

Windows users: begin the download

Ubuntu is 1 to 3 GB. Start it now and it downloads while we talk. Do not wait for it.

Mac and Linux users: skip this, you already have a terminal.

Pre-Game · Finish the setup

Confirm your Linux shell works

Windows browses. Linux runs servers. WSL2 is a real Ubuntu kernel inside Windows, with its own filesystem, networking, and always-on services.

# verify you are on a Linux kernel
uname -a
Pre-Game · If the Store failed

The command line route

# right-click Start, choose Terminal (Admin)
# or PowerShell (Admin), then run:
wsl --install -d Ubuntu-24.04

# if it asks to restart, do it now

Same result as the Microsoft Store, just without the Store. Restart when prompted, then open Ubuntu from the Start menu.

Pre-Game · If it goes wrong

Two things that confuse everyone

Your password is invisible. Nothing appears as you type. No dots, no stars. That is Linux security, not a broken keyboard.

"Virtualization not enabled"? In Windows Features, enable Virtual Machine Platform and Windows Subsystem for Linux, then reboot.

Part 3 · Kiro

Kiro introduction and credits

What is Kiro? An agentic development environment that turns plain English specification into working code, tooling, and terminal workflows.

Action pause. Redeem your credits and confirm your tier now. Raise your hand for login or access errors and we fix it together.

Part 3 · Kiro

Kiro history and spec-driven value

Chat promptsloose
→
Agentic IDEtools
→
Spec-drivensteering

Steering via a single plain English file such as project.md beats unstructured chat prompts: the intent stays stable, reviewable, and repeatable across sessions.

Part 3 · Kiro

Kiro versus closed platforms

Under the hood, Kiro harnesses powerful models such as Claude or Sonnet. Raw model quality is the engine, not the whole vehicle.

What Kiro adds is a spec-driven workspace and orchestration harness that manages context, files, tools, and execution order.

Part 3 · Kiro

Keep strict control

Because the harness owns context and execution order, you stay in charge of what actually gets written. The spec steers, you approve.

Tip: use Kiro as your real-time learning assistant. Ask it to explain every command before you run it.

Part 4 · Foundations

History and reach of Linux and Unix

Interactive check. Who here uses Linux or Unix devices?

Reveal: Your iPhone runs iOS on Darwin, a direct descendant of Unix. Your Android phone runs the Linux kernel. Your pocket is full of Unix and Linux.

You have been using Unix and Linux for years without calling it that. Today we just give it a terminal.

Part 4 · Foundations

Linux and SSH terminal basics

# connect to your server
ssh user@host

# confirm who and where you are
whoami
hostname
uname -a

# packages need root
sudo apt update
Part 4 · Foundations

Install sshd on your own machine

Needed only when connecting to localhost. On a cloud instance it already runs.

# WSL2 / Ubuntu / Debian
sudo apt update
sudo apt install -y openssh-server
sudo service ssh start

# macOS -- ships with OpenSSH
sudo systemsetup -setremotelogin on

WSL2 has no systemd by default. sudo systemctl start ssh fails, so use sudo service ssh start.

Part 4 · Foundations

HTTP REST versus MQTT

PollingClient asks again and again, wasting requests and battery to discover nothing changed
HeadersEvery REST call carries kilobytes of text overhead before any payload
Real timeNeeds WebSockets or SSE bolted on just to fake a push
DevicesSensors on constrained networks cannot afford HTTP round trips
Part 4 · Foundations

What is MQTT?

Publishersends to topic
→
Brokertopic router
→
Subscriberreceives match

Scope note: everything here is classic MQTT, the v3.1.1 family. MQTT v5 landed in March 2019 and adds more features: shared subscriptions, message expiry, reason codes, user properties, and request/response patterns. We teach v3 because brokers and libraries default to it and it is what you will meet in the field. It is not the latest version.

Part 4 · Foundations

One publish, many subscribers

The publisher sends once and stops caring. The broker copies it to every client subscribed to that topic.

Publisher
Sensorhome/kitchen/temp
→
Brokermatches topics
→
Subscribers
Phonesubscribed
Browsersubscribed
Databasesubscribed

Add a subscriber and it receives immediately. Neither side knows how many clients are on the other end.

Part 4 · Foundations

Topics and wildcards

Topics are hierarchical paths separated by slashes. Matching is literal.

+One level. workshop/+/temp matches workshop/kitchen/temp, not workshop/a/b/temp
#Everything below. workshop/# matches all of workshop/. Last segment only
caseWorkshop/Chat and workshop/chat are different topics
leading //workshop is not workshop. It adds an empty level

Wildcards work when subscribing, never when publishing.

Part 5

Hands-On Build

Install the broker, test it in the terminal, then prompt Kiro for the web app.

Track A · Terminal

Install Mosquitto on Linux

# install the broker and clients
sudo apt update
sudo apt install -y mosquitto mosquitto-clients

# start it. WSL2 has no systemd, so use service
sudo service mosquitto start

# browsers need a WebSocket listener, 1883 is MQTT only
sudo tee /etc/mosquitto/conf.d/ws.conf >/dev/null <<'EOF'
listener 9001
protocol websockets
allow_anonymous true
EOF
sudo service mosquitto restart
Track A · Terminal

Test pub and sub by hand

# terminal 1: subscribe to the workshop broker
mosquitto_sub -h 159.223.45.148 -u workshop -P mqtt-davao-2026 -t workshop/chat

# terminal 2: publish
mosquitto_pub -h 159.223.45.148 -u workshop -P mqtt-davao-2026 -t workshop/chat -m "hello"

Two terminals is the whole lesson. One listens, one talks, the broker connects them. Swap 159.223.45.148 for localhost if you built your own broker.

Track B · Kiro

The project.md steering file

# Project: Minimal MQTT Chat WebApp and Linux Broker Setup

## Objective
Help the user learn how to set up an MQTT broker on a Linux SSH server,
test it using terminal commands, and build a barebones web application
to demonstrate real-time pub/sub messaging.

## Tech Stack
- Broker: Mosquitto MQTT Broker running on Linux via SSH
- Terminal Tools: `mosquitto_pub` and `mosquitto_sub`
- Web Frontend: Simple HTML, CSS, and JS using MQTT.js via CDN
Track B · Kiro

What the spec must demand

## Core Requirements
1. Linux and SSH Instructions: Provide clear terminal commands to
   install and start Mosquitto on Linux.
2. Terminal Testing: Show how to open two terminal windows to publish
   and subscribe to a test topic (`workshop/chat`).
3. Chat WebApp: Generate a single `index.html` file with a basic input
   field, send button, and raw message log box without complex styling.

Paste both halves into Kiro before you prompt it for anything else. This file is the steering context for the rest of the build.

Track B · Kiro

Prompting Kiro for the web app

Leverage the steering file to have Kiro generate a barebones web app tied to the broker. One file, no build step, no framework.

ConnectMQTT.js connects to the WebSocket port, 9001 locally or 8443 on the shared broker
SubscribeClient listens on workshop/chat and appends incoming text to the log
PublishSend button publishes the input value to the same topic
Part 5 · Live Showcase

Real-time messages across browsers

Browser Apublishes
→
Broker159.223.45.148
→
Browser Breceives
→
Browser Creceives

A shared broker is running for anyone whose local build did not work. Open the demo, connect, and talk to the room.

Slidesmqtt-slides.awsugcebu.org
Demo page159.223.45.148:8082
Broker159.223.45.148 · MQTT 1883 · WebSockets 8443
Usernameworkshop
Passwordmqtt-davao-2026
Closing

Wrap-up and Q&A

You have a broker running on Linux, a terminal-proven pub/sub path, and a browser client you built by describing it.

After the Workshop

You have the tools. Now use them.

You built a broker, proved pub and sub in a terminal, and shipped a browser client by describing it. That is a foundation, not a finish line.

After the Workshop

Join and contribute to communities

Contributing is the fastest way to learn, and every community needs more people who show up twice.

After the Workshop

Explore other tech and other advocacies

Technology is one lens. The same skills apply to problems that matter to you.

Your skills transfer. The domain is yours to choose.

Before you go

What we are actually selling you

Nothing. We have no product, no service, no subscription, and no interest in you needing us.

What we brought is an idea: that the path to learning and upskilling is far more attainable when you join a community and contribute to it.

You do not need permission, credentials, or a company paying for it. With what you have, and people around you, you can learn almost anything. Go teach the next person.

Closing

Thank you.

You showed up, you installed things that fought back, and you asked questions. That is the whole workshop working as intended.

One last ask: tell us how it went. Two minutes, and it is the only way we get better at this.

forms.gle/TpKhTi6wtoDnzBZH6

Scan or type it. It works from your phone.

Slides: mqtt-slides.awsugcebu.org Demo: 159.223.45.148:8082
MQTT on Linux with Kiro CLI · arrow keys, space, or swipe
1 / 37
START ↻