Production-ready AWS IoT infrastructure in three commands.
Building an IoT backend on AWS means wiring together 15+ services — IoT Core, X.509 certificates, IoT policies, Device Shadows, Rules, Lambda, S3, DynamoDB, CloudWatch — and getting the security right on every one of them.
ThingFlash compresses that into a declarative workflow:
pipx install thingflash
thingflash init
thingflash plan
thingflash applyFrom an empty AWS account to a secure MQTT-connected device with telemetry flowing into a database — in under 15 minutes.
ThingFlash is an open-source, opinionated CLI for provisioning and operating AWS IoT infrastructure. You describe your device fleet in a single version-controlled YAML manifest — ThingFlash safely creates and manages everything else.
It is not a Terraform replacement. It's a specialized layer for connected products that knows how IoT should be built:
- Secure by default — one certificate per device, least-privilege IoT policies, topic access scoped by Thing name
- Plan before apply — every change is previewed with security warnings; nothing touches your infrastructure silently
- Batteries included — device registry, certificate lifecycle, MQTT topics, telemetry pipelines, image upload, monitoring
- Automation-first — every command is idempotent, non-interactive, and supports
--output jsonfor CI/CD and AI agents
Developers and teams building connected products — from ESP32 microcontrollers to Raspberry Pi gateways, sensors, cameras, and robot fleets — who need a real cloud backend without becoming AWS IoT experts first.
# thingflash.yaml — your entire IoT backend in one file
fleet:
thingType: camera
policies:
mode: least-privilege
telemetry:
rules:
- name: telemetry-to-dynamodb
source: devices/+/telemetry
destination:
type: dynamodb- ⭐ Star the main repository to follow progress
- 💬 Open an issue — feedback from real IoT teams shapes the roadmap
- 📖 Read the documentation
Contributions are welcome! To get started:
# 1. Create and activate a virtual environment
python3 -m venv .venv
source .venv/bin/activate
# 2. Install the package in editable mode with dev dependencies
pip install -e ".[dev]"
# 3. Verify the CLI works
thingflash --help
# 4. Run the tests and linter
python3 -m pytest # Run tests
python3 -m ruff check . # LintSee CONTRIBUTING.md for the full workflow.
Apache 2.0 — open source.