feat: Aurélio Embroidery — the first art of the Omniscient Replica

Initial commit with:
- README.md: vision, philosophy, roadmap — from artisans to AI
- AGENTS.md: agent guide for the embroidery subsystem
- vendor-registry/registry.yaml: 14 vendors, 40+ formats, universal bridge reference
- Submodules: FlashFloppy (hw/), pyembroidery (lib/), libembroidery (lib/)

The universal embroidery machine bridge. Open-source digitizing,
machine control, and the tools to set textile creation free.
This commit is contained in:
Fábio Coutada 2026-08-09 01:41:34 +01:00
commit eed5e3d468
7 changed files with 633 additions and 0 deletions

9
.gitmodules vendored Normal file
View file

@ -0,0 +1,9 @@
[submodule "hw/flashfloppy"]
path = hw/flashfloppy
url = https://github.com/keirf/flashfloppy.git
[submodule "lib/pyembroidery"]
path = lib/pyembroidery
url = https://github.com/EmbroidePy/pyembroidery.git
[submodule "lib/libembroidery"]
path = lib/libembroidery
url = https://github.com/Embroidermodder/libembroidery.git

87
AGENTS.md Normal file
View file

@ -0,0 +1,87 @@
# Aurélio Embroidery — Agent Guide
The embroidery subsystem of the Portugal Futurista platform. This repo holds the
universal vendor bridge, MCP server, IDE plugins, and all knowledge needed to
connect any embroidery machine to the Aurélio fleet.
## Repository layout
| Path | What | Language/Toolchain |
|------|------|-------------------|
| `README.md` | Vision, philosophy, roadmap | — |
| `AGENTS.md` | This file — agent instructions | — |
| `vendor-registry/` | Machine vendor database (formats, connectivity, hacks) | YAML |
| `mcp/` | Aurélio Embroidery MCP server | Python, FastMCP |
| `plugins/desktop/` | Aurélio Desktop IDE plugin | TypeScript |
| `plugins/web/` | Aurélio Web IDE plugin | TypeScript |
| `hardware/universal-bridge/` | ESP32/RPi bridge firmware | C, ESP-IDF |
| `hw/flashfloppy/` | FlashFloppy submodule | C |
| `lib/pyembroidery/` | Python embroidery library submodule | Python |
| `lib/libembroidery/` | C embroidery library submodule | C |
| `lib/inkstitch/` | Ink/Stitch Inkscape extension submodule | Python |
| `lib/embroidermodder/` | Embroidermodder 2 submodule | C++, Qt |
## Philosophy
Every submodule added to this repo must be accompanied by a clear statement of **why
it matters** — what philosophy or grand dream for society made us include it. The
README.md serves as that statement. When adding new submodules, update README.md with
the same pattern: one heading, one paragraph of context, one paragraph of why.
## Submodule management
Submodules are pinned to specific commits. To update:
```bash
# Update all submodules to latest remote
git submodule update --remote
# Update a specific submodule
cd lib/pyembroidery && git pull origin main && cd ../..
git add lib/pyembroidery && git commit -m "chore(submodule): update pyembroidery"
```
## Vendor registry
`vendor-registry/registry.yaml` is the single source of truth for all known
embroidery machines. Each entry declares:
- `vendor`: manufacturer name
- `models`: list of model names/patterns
- `format`: native stitch format(s)
- `media`: how designs get into the machine (floppy, card, usb, serial, network)
- `interface`: electrical interface type (ibmpc, shugart, custom)
- `jumpers`: Gotek jumper configuration for floppy emulation
- `hacks`: known community modifications
- `notes`: quirks, gotchas, references
## MCP server
The MCP server (`mcp/server.py`) exposes embroidery tools to the Aurélio fleet:
- `embroidery_convert` — convert between any supported formats
- `embroidery_machines` — list known machines from vendor registry
- `embroidery_preview` — generate stitch preview (PNG/SVG)
- `embroidery_send` — push design to a connected machine
- `embroidery_formats` — list supported formats with read/write capabilities
Built on FastMCP. Loads vendor registry at startup. Uses pyembroidery for all
format operations.
## Build & test
```bash
# MCP server
cd mcp
pip install -r requirements.txt
python server.py
# Vendor registry validation
python -c "import yaml; yaml.safe_load(open('vendor-registry/registry.yaml'))"
```
## Related repos in the fleet
- `replica-omnisciente/` — parent monorepo, contains this repo's context
- `aurelio-backend-native/` — C23/C++23 backend, may host native digitizing engine
- `infra/` — CDP bridge, lab gateway for hardware access

167
README.md Normal file
View file

@ -0,0 +1,167 @@
# Aurélio Embroidery
> *"From artisans to AI. The first art of the Omniscient Replica."*
**Aurélio Embroidery** is the embroidery digitizing, machine control, and universal
vendor bridge for the Portugal Futurista platform. It plugs into Aurélio Web IDE and
Aurélio Desktop IDE, giving every artisan the power to draw, digitize, and "print"
embroidery designs — as easily as 3D printing.
---
## The Grand Dream
My family has a long history of textile creation. I grew up surrounded by fabrics,
threads, sewing machines, and the slow, beautiful craft of turning raw material into
adorned cloth. This project is a love letter to that heritage.
The dream is simple: **small embroidery machines that work like a CNC for thread**.
You draw or create something, press "print," and the machine stitches it out. No
$2,000 software. No proprietary dongles. No vendor lock-in. Just art → thread → fabric.
But the dream is bigger than convenience. It's about **preserving and teaching the
old ways** — the *ofícios* — while giving them new life through technology. Imagine
Guitar Hero, but for learning embroidery. A platform that guides your hands through
the motions of satin stitch, chain stitch, cross stitch, until muscle memory takes
over and you're no longer following lights on a screen — you're creating.
This is the start of the **Omniscient Replica**: the first real art, for artists and
from artisans.
---
## What This Repo Contains
| Path | What |
|------|------|
| `README.md` | You are here — vision, philosophy, roadmap |
| `AGENTS.md` | Agent guide — how AI agents should work in this repo |
| `vendor-registry/` | Universal machine database — every vendor, every format, every hack |
| `mcp/` | MCP server — Aurélio's embroidery bridge (FastMCP) |
| `plugins/desktop/` | Aurélio Desktop IDE embroidery plugin |
| `plugins/web/` | Aurélio Web IDE embroidery plugin |
| `hardware/universal-bridge/` | ESP32/RPi universal floppy emulator design |
| `hw/flashfloppy/` | [FlashFloppy](https://github.com/keirf/flashfloppy) — the #1 floppy emulator firmware |
| `lib/pyembroidery/` | [pyembroidery](https://github.com/EmbroidePy/pyembroidery) — Python lib: 46 read, 20 write formats |
| `lib/libembroidery/` | [libembroidery](https://github.com/Embroidermodder/libembroidery) — C library: 45+ formats, CLI tool |
| `lib/inkstitch/` | [Ink/Stitch](https://github.com/inkstitch/inkstitch) — full Inkscape-based digitizing platform |
| `lib/embroidermodder/` | [Embroidermodder 2](https://github.com/Embroidermodder/Embroidermodder) — Qt GUI for editing embroidery files |
---
## Why These Projects Matter
### FlashFloppy — the universal key
Embroidery machines from the 1990s-2010s read designs from floppy disks. FlashFloppy
lets you replace that floppy drive with a USB stick. Drop a Gotek ($25) into any
Tajima, Barudan, Brother, Melco, or Toyota machine, flash this firmware, and you
have a modern machine that reads designs from USB. **This is the hardware hack that
unlocks the entire ecosystem.**
### pyembroidery — the universal translator
Reads 46 embroidery formats, writes 20. Every brand, every variant. This is the
Rosetta Stone that lets Aurélio speak to any machine ever made. If a format exists,
pyembroidery can read it, convert it, and write it.
### libembroidery — the embedded engine
A single C file you drop into any project. 45+ formats, command-line tool (`sew`),
permissive license. This is what runs on the ESP32 inside the universal bridge.
### Ink/Stitch — the free digitizer
The ONLY open-source alternative to Wilcom EmbroideryStudio. Full Inkscape
integration: draw in SVG, export to PES/DST/EXP/JEF/VP3. Satin stitch, fill
stitch, lettering, auto-column. This is the design tool every artisan deserves.
### Embroidermodder 2 — the free editor
A Qt-based GUI for viewing, editing, and converting embroidery files. Still in
alpha, but the vision is complete: a free, cross-platform embroidery editor.
---
## The Universal Bridge
The missing piece — the thing we're building here — is the **Universal Embroidery
Machine Bridge**: a $15 ESP32-S3 that emulates a floppy drive, serves designs over
WiFi, and speaks every embroidery format through libembroidery.
```
┌──────────────────────────────────────────────────────────┐
│ Aurélio IDE / MCP │
│ (draw → digitize → convert → send) │
└──────────────────────┬───────────────────────────────────┘
┌──────────────────────┴───────────────────────────────────┐
│ Universal Embroidery Bridge │
│ ┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ Gotek + FF │ │ FlashAir SD │ │ ESP32 Bridge │ │
│ │ (floppy bay) │ │ (card slot) │ │ (direct GPIO) │ │
│ └─────────────┘ └──────────────┘ └─────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Machine Vendor Registry │ │
│ │ tajima → dst, floppy, ibmpc, jc-s1 │ │
│ │ brother → pes, floppy_or_card, cf-adapter │ │
│ │ barudan → dst, floppy, ibmpc, jc-s1 │ │
│ │ janome → jef, floppy_or_cf, usb-cable │ │
│ │ bernina → art, usb_stick, wifi_sd │ │
│ │ pfaff → vp3, floppy, ibmpc, jc-s1 │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
```
---
## Roadmap
### Phase 1 — Foundation (now)
- [x] Repository created, vision documented
- [x] Key submodules added (FlashFloppy, pyembroidery, libembroidery, Ink/Stitch)
- [ ] Vendor registry populated with all known machines
- [ ] MCP server skeleton (FastMCP): convert formats, list machines, preview stitches
### Phase 2 — The Bridge
- [ ] ESP32 universal floppy emulator firmware (based on FlashFloppy logic)
- [ ] WiFi design upload (drag & drop PES/DST → machine)
- [ ] Aurélio Desktop IDE plugin: embroidery panel with live preview
- [ ] Aurélio Web IDE plugin: same, in the browser
### Phase 3 — The Art
- [ ] Auto-digitizing pipeline (GPU-accelerated: raster/vector → stitches)
- [ ] 4× 8GB VRAM GPU cluster for batch digitizing
- [ ] "Guitar Hero for embroidery" — interactive learning mode
- [ ] Integration with the full Omniscient Replica fleet
### Phase 4 — The Movement
- [ ] Open hardware reference design published
- [ ] Community-contributed machine profiles
- [ ] Teaching curriculum (traditional Portuguese embroidery techniques)
---
## Philosophy
This project exists because **the tools of creation should belong to the creators**.
Wilcom costs $2,000+. Pulse costs $3,000+. The machines are locked to Windows 95
floppy drives and proprietary dongles. The artisans who keep textile traditions alive
are locked out by software they can't afford and hardware they can't connect to.
We're breaking that open.
Every line of code in this repo is free. Every machine profile is community-owned.
Every design you make is yours. The GPUs in our lab (4× 8GB when the fleet is back
online) will accelerate the hard parts — auto-digitizing, stitch simulation, preview
rendering — so your laptop doesn't have to.
This is Portugal Futurista's contribution to the world's textile heritage:
**the tools, the knowledge, and the bridge between tradition and tomorrow.**
---
## Related Repos
- [FlashFloppy](https://github.com/keirf/flashfloppy) — floppy emulator firmware
- [pyembroidery](https://github.com/EmbroidePy/pyembroidery) — Python embroidery library
- [libembroidery](https://github.com/Embroidermodder/libembroidery) — C embroidery library
- [Ink/Stitch](https://github.com/inkstitch/inkstitch) — Inkscape digitizing extension
- [Embroidermodder](https://github.com/Embroidermodder/Embroidermodder) — Qt embroidery editor
- [GreaseWeazle](https://github.com/keirf/greaseweazle) — USB floppy imager

1
hw/flashfloppy Submodule

@ -0,0 +1 @@
Subproject commit 483077a26651a9b8a19959e84900577ff5b0c2c6

1
lib/libembroidery Submodule

@ -0,0 +1 @@
Subproject commit 1138e043b811f891d2bf88fce5b2e414dac92391

1
lib/pyembroidery Submodule

@ -0,0 +1 @@
Subproject commit c16d1b46390a1632ee36ff98eb8b3ec01934a8e9

View file

@ -0,0 +1,367 @@
# Aurélio Embroidery — Universal Machine Vendor Registry
#
# Single source of truth for every embroidery machine known to the fleet.
# Used by the MCP server, IDE plugins, and the universal bridge firmware.
#
# Schema per entry:
# vendor: Manufacturer name
# models: List of model names/patterns (can use wildcards for families)
# formats: Native stitch format(s) — what the machine reads
# media: Physical interface for design transfer
# floppy: Floppy drive specs (if applicable)
# jumpers: Gotek/FlashFloppy jumper configuration
# hacks: Known community hardware modifications
# notes: Quirks, gotchas, references
# connectivity: Modern connectivity options beyond floppy
#
# File formats key:
# dst — Tajima stitch (de facto universal, no color info)
# pes — Brother/Baby Lock/Bernina Deco (most common consumer format)
# exp — Melco expanded
# jef — Janome
# hus — Husqvarna Viking
# shv — Husqvarna Viking (alternate)
# vip — Husqvarna Viking/Pfaff (alternate)
# vp3 — Pfaff/Husqvarna Viking
# art — Bernina Artista
# emb — Wilcom native (full design data, NOT stitch-level)
# pec — Brother/Baby Lock (card format)
# pcs — Pfaff (card format)
# xxx — Singer/Compucon
# sew — Elna/Janome/Kenmore
# jef+ — Janome (extended)
# dsb — Tajima/Barudan stitch
# dsz — Tajima ZSK
# tbf — Tajima
# u01 — Barudan
# 10o — Toyota
# ksm — Pfaff
# max — Pfaff
# phb/phc — Baby Lock/Bernina/Brother
# cnd — Melco condensed
# ofm — Melco
# fdr — Barudan
# fmc — Barudan
# dat — Barudan/Sunstar
# stx — Stitchmax/Toyota
# sst — Sunstar
vendors:
- vendor: Tajima
models:
- "TME*" # TME series (multi-head electronic)
- "TMB*" # TMB series (bridge type)
- "TMEX*" # TMEX series
- "TF*" # TF series
formats: [dst, dsb, dsz, tbf]
media: floppy
floppy:
interface: ibmpc
density: hd # 1.44MB
sectors: 18
tracks: 80
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy # Drop-in Gotek + FlashFloppy (JC+S1)
- tajima_dgml_network # Official Tajima LAN adapter (expensive)
notes: |
The industry standard. DST is the universal format — every machine reads it.
Most Tajima machines use IBM PC floppy interface. Some older models (pre-1995)
use Shugart (jumper S0 only). DST has no color information — color sequence
must be managed separately.
- vendor: Barudan
models:
- "BE*" # BE series
- "BEX*" # BEX series
- "BES*" # BES series
formats: [dst, dsb, u01, fdr, fmc, dat]
media: floppy
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- barudan_ethernet
notes: |
Barudan machines are workhorses. Same interface as Tajima for floppy.
The U01 format is Barudan-specific. FDR/FMC are older Barudan formats.
- vendor: Brother
models:
- "PR*" # PR series (professional)
- "PE*" # PE series (home/consumer)
- "NV*" # Innov-is series
- "LB*" # Labelle / limited edition
- "BES*" # BES series
- "HE*" # HE series
formats: [pes, pec, phb, phc]
media: [floppy, card, usb]
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- brother_card_writer # USB card reader/writer
- flashair_wifi_sd # WiFi SD in card slot
- usb_direct # USB port on newer models (PR1050X+)
notes: |
PES is the most common consumer embroidery format. Brother machines from the
2000s used proprietary memory cards; later models added USB. The Brother
card writer is a commercial product but expensive. FlashAir WiFi SD in a
card adapter is the popular hack.
- vendor: Melco
models:
- "EMT*" # EMT series
- "EP*" # EP series
- "Amaya*"
- "Bravo*"
formats: [exp, cnd, ofm]
media: [floppy, serial, network]
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- melco_actifeed # Melco network adapter
- melco_usb_interface
notes: |
Melco created the first embroidery sample head (1980). EXP is Melco's
format. The Amaya/Bravo lines have networking built-in but older EMT/EP
machines are floppy-only or RS-232 serial.
- vendor: Janome
models:
- "MC*" # Memory Craft series
- "MB*" # MB series
formats: [jef, jef+, sew]
media: [floppy, compactflash, usb]
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- cf_to_sd_adapter # CompactFlash → SD adapter
- janome_usb_cable # Janome USB cable (commercial)
- clothset # Janome Clothset USB
notes: |
JEF is Janome's format. Machines from the MC series used floppy, then CF.
CF-to-SD adapters work for newer machines. Older MC models require the
proprietary USB cable.
- vendor: "Husqvarna Viking"
models:
- "Designer*"
- "Ruby*"
- "Diamond*"
- "Topaz*"
- "Sapphire*"
- "Opal*"
formats: [hus, shv, vip, vp3]
media: [floppy, card, usb]
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- viking_usb_stick # Viking USB embroidery stick
notes: |
HUS/SHV/VIP/VP3 are all Viking/Pfaff formats. VP3 is the most modern.
Viking machines use a proprietary USB stick (not a standard USB port).
- vendor: Pfaff
models:
- "Creative*"
- "Performance*"
formats: [vp3, pcs, ksm, max]
media: [floppy, card, usb]
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- pfaff_usb_stick
notes: |
Pfaff and Viking share formats (both owned by SVP Worldwide). VP3 is the
modern format. PCS is the older card format.
- vendor: Bernina
models:
- "Artista*"
- "880*"
- "790*"
- "770*"
- "570*"
formats: [art, exp]
media: [usb_stick, card]
connectivity:
- bernina_usb_stick # Bernina-branded USB stick
- flashair_wifi_sd # WiFi SD in card slot
notes: |
ART is Bernina's proprietary format — it's encrypted/DRM'd. Third-party
software can write ART but Bernina machines may reject files not signed
by Bernina software. The USB stick must be Bernina-branded (or hacked).
EXP (Melco) is also supported on some models.
- vendor: Toyota
models:
- "ES*" # ES series
- "ESP*" # ESP series
- "8600*"
formats: ["10o", stx]
media: floppy
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
notes: |
Toyota uses the .10o format. Less common but Gotek + FlashFloppy works.
- vendor: Happy
models:
- "HCS*"
- "HCD*"
formats: [dst]
media: floppy
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
notes: |
Happy machines read standard Tajima DST. IBM PC floppy interface.
- vendor: SWF
models:
- "SWF/E*"
- "SWF/S*"
- "SWF/M*"
formats: [dst]
media: floppy
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
notes: |
SWF (SunStar) machines read DST. Standard IBM PC floppy.
- vendor: ZSK
models:
- "ZSK*"
- "Sprint*"
formats: [dst, dsz]
media: floppy
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
notes: |
ZSK is a German manufacturer. DSZ is the ZSK-specific variant of DST.
Both work with IBM PC floppy interface.
- vendor: Singer
models:
- "Futura*"
- "CE*"
- "XL*"
formats: [xxx, pes]
media: [floppy, usb]
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- usb_direct # Newer Futura models
notes: |
Singer Futura machines use .XXX format (which is essentially Compucon
format). Most also read PES. Newer models have USB.
- vendor: Elna
models:
- "eXperience*"
- "eXpressive*"
- "8300*"
formats: [sew, jef, emd]
media: [floppy, usb]
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- usb_direct
notes: |
Elna is closely related to Janome. SEW and JEF are the main formats.
EMD is Elna-specific.
- vendor: Babylock
models:
- "Enterprise*"
- "Destiny*"
- "Meridian*"
- "Spirit*"
formats: [pes, pec, phb, phc]
media: [floppy, usb, card]
floppy:
interface: ibmpc
density: hd
jumpers: [JC, S1]
connectivity:
- gotek_flashfloppy
- usb_direct
notes: |
Babylock machines are essentially re-badged Brother machines. Same
formats, same interfaces.
# ─── Gotek / FlashFloppy Reference ──────────────────────────────────────
#
# Universal floppy emulator configuration:
#
# Standard IBM PC (95% of embroidery machines):
# Jumpers: JC + S1
# FF.CFG: interface = ibmpc
# Image: FAT32 USB, 1.44MB IMG files
#
# Shugart (older machines, pre-1995):
# Jumpers: S0 only
# FF.CFG: interface = shugart
# Image: FAT32 USB, 720KB or 1.44MB IMG files
#
# Other interface modes available in FlashFloppy:
# ibmpc-hdout, akai-s950, amiga, jc, shugart, ibmpc, pc98, ensoniq
#
# USB stick preparation:
# 1. Format USB stick as FAT32
# 2. Copy blank IMG files (created with dd or HxCFloppyEmulator)
# 3. Rename to DSKA0000.IMG, DSKA0001.IMG, etc.
# 4. On the machine, format each "disk" before use
# 5. Use pyembroidery or Embird to write designs to the IMG files on PC
#
# FlashAir WiFi SD hack:
# 1. Get Toshiba FlashAir W-04 (or ezShare WiFi SD)
# 2. Configure as AP or station mode
# 3. Map the SD card as a network drive on PC
# 4. Insert into machine's SD/PCMCIA card slot via adapter
# 5. Designs dropped into the network folder appear on the machine
#
# ESP32 Universal Bridge (TO BE BUILT):
# - ESP32-S3 bitbangs floppy signals on GPIO
# - SD card slot for local storage
# - WiFi for network design upload
# - pyembroidery running on-device for format conversion
# - Web interface at http://embroidery.local