Launching today
Modo

Modo

Turn a hardware idea into a buildable prototype

80 followers

Modo turns a text description into a buildable hardware prototype with validated parts, printable enclosures, firmware scaffolding, and step-by-step assembly instructions.
Modo gallery image
Modo gallery image
Modo gallery image
Modo gallery image
Free
Launch Team / Built With
AssemblyAI
AssemblyAI
Build voice AI apps with a single API
Promoted

What do you think? …

Ethan Steininger
I’ve built hardware projects for years, and the slowest part was always translating an idea into parts, enclosure dimensions, and something I could actually assemble. Modo started as a way to compress that gap—by constraining generation to real components and using datasheet dimensions to drive enclosure geometry instead of guessing. It’s early, opinionated, and definitely not perfect yet. I’d love feedback on what you’d try building with it, and where it breaks down.
Zolani Matebese

@ethans100 This is brilliant Ethan, congrats on the launch. How far does it go component architecture and diagrams? Component suggestions?

Ethan Steininger

@zolani_matebese It looks up the datasheet of each of the components and determines, based off the measurements, the appropriate CAD design to create. Then, it gives you the pricing for everything, including the CAD design.

The version 2 of this is to actually go through the checkout experience where it purchases all of the parts and sends the CAD for 3D printing for you.

Zeiki Yu

Congrats on the launch — turning plain text into a fully buildable hardware prototype with real parts and enclosures is such a wild unlock for indie makers and hardware-curious software devs.​

Alexandr Goncharov

Congrats on the launch! It's really impressive, I like the idea. I've experienced some bugs (wasn't able to write some followups, the Send button doesn't work), however I'm really impressed with how easy and straightforward the process was. Good luck!

Ethan Steininger

@mrfullset appreciate it - not easy, even with LLMs to ensure all the parts fit, cad renders, etc.

Ethan Steininger

@mrfullset Fixed it. The issue was when you're not logged in and in its anonymous build, you couldn't modify the chat, but now you can.

Ryan Thill

Constraining generation to real components + driving enclosure geometry off datasheet dimensions (vs “vibes”) is the right way to make AI hardware actually buildable 🔥 The scale pain is tolerance stacks + connector/thermal/EMI realities that aren’t in the BOM; best practice is parametric CAD (Replicad) with clearance rules, fast-fit test prints, and constraint checks (USB/headers/screw bosses) baked into the generator. How are you modeling tolerances/keepouts per part, and will you add an export to KiCad + a “vendor-available BOM” check (LCSC/DigiKey) next?

Daniele Packard

Wow - super cool! Do you then link your users with relevant hardware builders/providers? Help on the supply chain side

Ethan Steininger

@daniele_packard always open for support - this is a side project since for my main gig i needed to build a hardware project and i found myself doing all these steps manually.

Samet Sezer

the firmware scaffolding is a nice touch. does it write the actual pin definitions for the specific components I pick, or is it just generic boilerplate?

Ethan Steininger

@samet_sezer Yes, it writes actual pin definitions for your specific components!

The system reads your wiring diagram and generates real code. For example, if you're building a temperature monitor with a BME280 sensor and OLED display:

// Pin definitions from YOUR wiring diagram
#define SDA_PIN 21
#define SCL_PIN 22

// I2C addresses from YOUR selected parts
#define BME280_ADDRESS 0x76
#define SSD1306_ADDRESS 0x3C

// Component-specific libraries (not generic!)
#include <Adafruit_BME280.h>
#include <Adafruit_SSD1306.h>

Adafruit_BME280 bme;
Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  Wire.begin(SDA_PIN, SCL_PIN);
  bme.begin(BME280_ADDRESS);
  display.begin(SSD1306_SWITCHCAPVCC, SSD1306_ADDRESS);
}

void loop() {
  float temp = bme.readTemperature();
  display.printf("%.1f°C", temp);
  display.display();
  delay(2000);
}

It maps BOM parts → wiring pins → working code with the correct libraries and initialization for each component. You could actually flash this and it would work.