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.
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
Kiro CLI Mosquitto Linux · SSH IoT
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.

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
Part 4 · Foundations

One publish, many subscribers

The publisher sends one message and stops caring. The broker copies it to every client subscribed to that topic. There is no list of recipients to maintain.

Publishers
Sensorhome/kitchen/temp
Chat clientworkshop/chat
→
Brokermatches topics
→
Subscribers
Phonesubscribed
Browsersubscribed
Dashboardsubscribed
Databasesubscribed

Add a subscriber and it starts receiving immediately. Remove one and nothing else breaks. Neither side needs to know how many clients exist on the other end.

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 and check it
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
sudo systemctl status mosquitto
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 PASSWORD -t workshop/chat

# terminal 2: publish
mosquitto_pub -h 159.223.45.148 -u workshop -P PASSWORD -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 client points at the broker WebSocket port
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.

MQTT on Linux with Kiro CLI · arrow keys, space, or swipe
1 / 31
START ↻