The official website for the OpenECU Spec - an open specification for standardizing ECU log data formats and CAN broadcast protocols across the automotive tuning community, with a public REST API for programmatic access.
Live site: oecua.org
The OpenECU Alliance is an open community that publishes and maintains:
- The OpenECU Spec - A YAML-based specification for describing ECU log file formats, CAN broadcast protocols, and channel mappings
- Canonical Channel Registry - 466 canonical channel IDs across 20 categories (
specs/channels.yaml), the shared vocabulary every adapter and protocol maps onto - Public API - REST endpoints for fetching adapter and protocol specs programmatically
- Adapter Library - Community-contributed adapters that map vendor-specific channels to canonical IDs
- Protocol Library - CAN broadcast definitions (message IDs, signal bit layouts, scaling)
- 3D Model Library - Community-contributed printable ECU mounts, enclosures, brackets, and accessories
- Ecosystem - Applications and tools that integrate with the OpenECU API, like UltraLog
This is the Nuxt 4 website that serves as the public face of the OpenECU Alliance. It provides:
- Public API - REST endpoints to fetch specs programmatically (parsed JSON and raw YAML)
- Adapter & Protocol Browsers - Search and explore specs with fuzzy channel/signal search
- Specification & Docs - The full spec reference at
/specand guides at/docs - 3D Model Sharing - Upload models or link them from Printables, Thingiverse, MakerWorld, and Cults3D, with comments, likes, and ratings
- Ecosystem Showcase - Applications that integrate with the API
- Contribution Guide - How to create and submit new adapters and protocols
The specs themselves live in this repository under specs/ and are validated on every deploy.
# List all adapters / protocols (summary info)
GET /api/adapters
GET /api/protocols
# Full detail (channels, signals, sourceNames; supports ?version=X.Y.Z)
GET /api/adapters/:vendor/:id
GET /api/protocols/:vendor/:id# Lists with download URLs
GET /api/specs/adapters
GET /api/specs/protocols
# Download the raw YAML file (supports ?version=X.Y.Z)
GET /api/specs/adapters/:vendor/:id/raw
GET /api/specs/protocols/:vendor/:id/raw// Fetch all adapters
const response = await fetch('https://oecua.org/api/adapters');
const adapters = await response.json();
// Fetch specific adapter
const adapter = await fetch('https://oecua.org/api/adapters/haltech/haltech-nsp');
const haltechSpec = await adapter.json();See the full API documentation for details.
| Repository | Description | Status |
|---|---|---|
| OECUASpecs | Former home of the adapter YAML files | Archived |
| OpenECUAlliance | This website, public API, and all specs | Active |
Note: As of January 2026, all specs live in this repository. The OECUASpecs repository is archived; contribute directly here.
- Haltech (NSP CSV)
- Link ECU (LLG binary)
- AiM (XRK/DRK binary)
- ECUMaster EMU (CSV)
- Speeduino (MLG binary)
- rusEFI (MLG binary)
- RomRaider / Subaru (CSV)
- MegaSquirt (TunerStudio CSV)
- Emerald K6/M3D (binary)
- BMW Siemens MS4x (RomRaider CSV)
- Haltech Elite
- AEM Infinity
- ECUMaster EMU
- Emtron
- MaxxECU
- MegaSquirt
- rusEFI
- Speeduino
- Syvecs S7
- BMW Siemens MS42 DME (E46)
- BMW Siemens MS43 DME (E46)
- BMW E8x / E9x powertrain
Planned log adapters: MoTeC, AEM, Holley, FuelTech — see specs/protocols/PROTOCOL_ROADMAP.md for the protocol roadmap.
- Bun runtime
git clone https://github.com/ClassicMiniDIY/OpenECUAlliance.git
cd OpenECUAlliance
bun installbun devOpen http://localhost:3000 in your browser.
Production runs on Cloudflare Workers:
# Cloudflare Workers bundle (what production runs)
bun run build:cf
# Run the worker locally on workerd
bun run build:cf && bunx wrangler dev
# Node build — local preview only, NOT deployable to Workers
bun run build
bun previewDeploys happen automatically from main via GitHub Actions.
# Validate every adapter and protocol against the canonical registry
bun run validate:specs
# Regenerate specs/SPECIFICATION.md from specs/channels.yaml
bun run generate:spec-docvalidate:specs gates the deploy workflow — it checks channel IDs, categories, unit conversions, CAN IDs, signal overlaps, and frame overflows.
- Framework: Nuxt 4
- Runtime: Bun
- UI: Nuxt UI v4 + Tailwind CSS
- Icons: Heroicons, Lucide, Simple Icons
- Auth & Community Data: Supabase (magic-link auth, models, comments, likes, ratings)
- Hosting: Cloudflare Workers
When you contribute adapters or protocols, they become available via the public API shortly after merge:
- Fork this repository
- Add your YAML file to
specs/adapters/[vendor]/orspecs/protocols/[vendor]/ - Run
bun run validate:specsand fix anything it flags - Submit a pull request
See the Contribution Guide for detailed instructions.
- Fork this repository
- Create a feature branch
- Make your changes
- Submit a pull request