Skip to content
View emdzej's full-sized avatar

Highlights

  • Pro

Block or report emdzej

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
emdzej/README.md

Hey, I'm MichaΕ‚ πŸ‘‹

I've been building software for over 20 years. At this point, I'm not sure if I chose this career or it chose me while I was distracted debugging something.

I like making things that actually work. Code, furniture, electronics, welded contraptions β€” if it solves a problem and doesn't catch fire, I'm happy. Usually it doesn't catch fire.

Based in ŁódΕΊ, Poland πŸ‡΅πŸ‡± β€” yes, that's pronounced "Woodge." No, I can't explain why.

What I'm Currently Breaking

Complete Solutions

Bimmerz Suite

Project What it does Why it exists
bimmerz-box Bimmerz Suite ina Box Plug it in connect via phone or tablet and enjoy
ediabasx BMW diagnostic interface β€” TypeScript port 🚧 The VM runs. Everything else is "coming soon."
ediabasx-embedded BMW diagnostic interface β€” TypeScript port 🚧 The VM runs. Everything else is "coming soon."
inpax INPA scripting β€” cross-platform 🚧 Not everyone likes Windows. Even in the garage.
ncsx BMW NCS Expert in the browser Factory coding tool ported to TypeScript β€” no installer, no Wine needed
nfsx NFS / WinKFP + JMG Flasher + MS4x Flasher in one tool Flash what you need on any platform you want
wdsx BMW Wiring Diagram System β€” web port The original Java applet stopped working. My car didn't stop needing repairs.
etkx BMW Electronic Parts Catalogue β€” reverse engineered Because PDF parts lists are for quitters
tunex ECU firmware editor with TunerPro's XDF support in your browser For a comlete flashing experience
xbusx BMW I-Bus / K-Bus protocol + tools Reference implementation for in-vehicle comms (E31–E87)
dashx BMW CAN Dashboard What you really need is just your phone (and BimmerzBox)
tisx BMW TIS reimplementation Workshop manuals without dusting off Windows XP
bimmerz-core Shared workspace for the suite β€” Svelte components, theme tokens, loggers, utilities Seven apps, one look. Copy-paste stopped scaling around app three.
ncsx-community-patches Community coding patches for ncsx β€” FSW/PSW changes as small YAML files Retrofits and tweaks someone already figured out, shared instead of rediscovered
ipo-community-patches Community patches for INPA .IPO scripts β€” translations, labels, thresholds German-only diagnostics are a feature only for Germans

Other Marques

Project What it does Why it exists
ddtx Renault / Dacia / Nissan ECU diagnostics in the browser β€” ddtx.emdzej.pl A DDT4All port that reads a real vehicle over K-line. Turns out browser latency is noise next to an ECU.
dialogysx Renault / Dacia parts catalogue and repair documentation β€” dialogysx.emdzej.pl Dialogys 7.5.6, reverse engineered. 576,034 index keys, 0 failures, no backend.
eperx Fiat, Lancia, Alfa Romeo, Abarth, Chrysler parts catalogue β€” eperx.emdzej.pl ePER 8.3 without the Java installer. VIN in, exact factory build out.
masax Mitsubishi After Sales parts catalogue β€” masax.emdzej.pl 9,495,097 records decoded exactly and all 17,977 drawings de-obfuscated. The discs still work; the application doesn't.
mitsudocs Mitsubishi service manual viewer + AI-powered indexing Local vision models doing OCR on scanned wiring diagrams

Tools

Project What it does Why it exists
swsrs Self-hostable WebSocket relay for peers behind NAT/firewalls + OIDC-protected admin plane Because "just open a port" stops being funny behind CGNAT
npvm Monorepo versioning CLI Semantic versioning across 47 packages shouldn't require a PhD
stm Serial Terminal & Monitor on the web My way, anywhere
bass Self hosted service + library for synchronising backendless web apps Not every app needs backend, and I like switching devices
avrdudeui UI for avrdude CLI Because AVRDUDESS was not updated in a while
bleach macOS cleanup that explains itself β€” bleach.emdzej.pl 128 GB of ~/Library belonged to apps I uninstalled years ago. Nothing on disk says which.
airlock Raspberry Pi network card-reader appliance β€” SMB, web UI, and a macOS menubar companion Someone else's thumb drive plugs into a $50 Pi mounted noexec, not into the machine you actually work on
spinup Cloud-functions platform for Spin WebAssembly components on Kubernetes β€” spinup.emdzej.pl Write Go / Rust / TS in the browser, hit Build & Deploy, get an HTTP endpoint. Lambda without the vendor.
gasm Portable games on WebAssembly: one .wasm, native and browser runners, WebGPU, lockstep netplay. gasm.emdzej.pl A NES emulator and a 3D sumo game run bit-identically on a Mac, in a browser and on Windows. Write the game once, port the runner instead.
notesmyway Apple Notes on the outside, a folder of Markdown on the inside β€” Mac, iPhone, iPad β€” notesmyway.emdzej.pl My notes should outlive the app I write them in
visextract Unpacks MindVision Installer VISE archives β€” no installer, no Wine, every file CRC-checked The game was on the CD. Inside an installer nothing else could open.
kcctl Keycloak admin CLI in one binary β€” names instead of UUIDs, browser sign-in, live completion, Keycloak 26.6.3+ kcadm needs a JVM and a 166 MB download, and my admin account has no password to give it
beigebox A 1996 PC on a desk in the browser β€” v86 on the monitor's glass, floppies from the box, hard drives from the drawer β€” beigebox.emdzej.pl A browser emulator should have a power button you can actually press
opencluster Open-source car instrument cluster on ESP32 and LVGL β€” skinnable gauges, CAN native The cluster is just a screen that reads CAN. So is a $10 ESP32.
anycard iOS app for adding any loyalty card to Apple Wallet My wallet was thicker than my phone

Games

Project What it does Why it exists
openrf Return Fire (1996) reimplemented natively from the original executable β€” openrf.emdzej.pl The CD still reads. Windows 95 doesn't. Bring the disc; the game, its movies and the orchestral score come from it.
openballance Ballance (2004): the original Virtools scripts on a new runtime, with a port of its Ipion physics engine β€” openballance.emdzej.pl The game is the ball's feel, so the physics engine was read out of physics_RT.dll instead of guessed. Bring the CD; it runs in a browser too.
opengta Grand Theft Auto (1997) reimplemented from the original Windows executable β€” opengta.emdzej.pl Point it at the unzipped 2002 installer; it doesn't even need to run. 23.33 frames a second, because that's what the sound timer says.
opensheep Sheep (2000) reimplemented from the original Windows executable β€” opensheep.emdzej.pl You don't lead the flock, you stand in the right place. DirectDraw, on the other hand, just stopped standing.
openbv Babo Violent 2 on gasm β€” the original GPL source, native and in the browser β€” openbv.emdzej.pl Little balls with guns. The source was published in 2012; it deserved a runtime that still exists.
opennfspu Need for Speed: Porsche Unleashed (2000) reimplemented in C11 for gasm 🚧 Single player is back from the menus through the races. Bring your own copy.
opencmr2 Colin McRae Rally 2.0 (2000) reimplemented from CMR2.exe for gasm 🚧 β€” opencmr2.emdzej.pl Every asset on the disc decodes. Driving comes later.
openoni Oni (2001) reimplemented for gasm 🚧 Early days: the files are off the CD, the engine is next
nowhereinparticular-releases Nowhere in Particular β€” a calm exploration game in real places built from real-world data β€” nowhereinparticular.emdzej.pl Not every game needs a goal. Some need a lake in GΕ‚owno on a sunny afternoon.

AI & LM

Project What it does Why it exists
microagent Minimal AI agent with tools + MCP in ~1500 LOC Reference implementation for "how do agents actually work?"
microagent-rust microagent in Rust β€” same loop, tools and MCP client, interoperable Same agent, very different constraints
ragclaw Local-first RAG engine with SQLite vector search Because sometimes you want AI to know things without sending your secrets to the cloud
acc Agents Control Centre β€” watch, organise and interact with your coding-agent sessions β€” acc.emdzej.pl Six terminals of Claude Code and Codex, and one of them has been waiting for me for twenty minutes

Libraries, Extensions & Plugins

Project What it does Why it exists
keycloak-api-keys API key management for Keycloak OAuth2 is great until your IoT toaster needs to authenticate
config Runtime config service for SPAs (build once, run everywhere) Env/secret‑driven config without rebuilds
itw-decoder BMW ITW image format decoder Because things should be accessible and live forever
j2534 TypeScript SAE J2534 PassThru API (Node + WebUSB) 🚧 Cross-platform replacement for Windows-only DLLs
csfs One read API over anything a browser can reach: static HTTP, a picked folder, OPFS β€” or a zip inside any of them β€” csfs.emdzej.pl Reading part of a remote file is what makes 15 GB of catalogue data usable at all
elmo Schematics as code β€” a text DSL that renders circuits as SVG β€” elmo.emdzej.pl Mermaid and PlantUML for electronics. ~45 symbols, markdown-it / remark / CLI / browser.
markdownkit Native Markdown editor for macOS and iOS on TextKit 2 β€” blend editing, tables with formulas The editor behind Notes my Way, as a Swift package
vitepress-plugin-markdownformula Excel-like formulas in VitePress markdown tables, evaluated at build time Totals that add up without a spreadsheet next to the docs
wasm-plugins-examples Untrusted image-filter plugins sandboxed in WebAssembly, hosted by Svelte β€” demo Plugins you can run without trusting whoever wrote them

Documentation

Project What it does Why it exists
apple-container-guide Migrating from Docker Desktop to Apple's container runtime β€” scripts and measured behaviour README claims are not measurements
ediabasx-docs EdiabasX documentation The VM runs; now it has a manual
ediabasx-docs-sgbd SGBD reference β€” 2,400+ files Somebody had to read them all

Fun Facts

  • πŸ”§ I fix things. Cars, appliances, furniture, pride after failed deployments.
  • πŸ› οΈ I build things in the physical world too. Wood, metal, electronics β€” whatever gets the job done.

Right to Repair

The Right to Repair movement advocates for consumers' ability to fix the products they own β€” from electronics to vehicles β€” without being locked out by manufacturers through proprietary tools, paywalled documentation, or artificial restrictions.

I build these tools because I believe repair is a fundamental right, not a privilege.

Too often, service manuals, diagnostic software, and technical documentation are kept behind closed doors β€” unavailable to individuals even when they're willing to pay. This wasn't always the case. Products once shipped with schematics and repair guides as standard. The increasing complexity of modern technology doesn't change the fact that capable people exist who can β€” and should be allowed to β€” use that information.

These projects exist to preserve access to technical knowledge and ensure that owners aren't left at the mercy of vendors who may discontinue support, charge prohibitive fees, or simply refuse service.

Get In Touch

Support

If you find my work useful, consider buying me a coffee β˜• or sponsoring on GitHub or if it's your thing: via PayPal

Donate with PayPal

Popular repositories Loading

  1. ediabasx ediabasx Public

    TypeScript port of EdiabasLib - BMW diagnostic interface library

    C 17 1

  2. tisx tisx Public

    BMW TIS reimplementation

    TypeScript 12

  3. ediabasx-docs-sgbd ediabasx-docs-sgbd Public

    10 1

  4. etkx etkx Public

    BMW ETK (Electronic Parts Catalogue) reverse engineering and analysis

    Java 9

  5. ragclaw ragclaw Public

    Local-first RAG engine for OpenClaw and others β€” PDF, Web, Code indexing with SQLite vector search

    TypeScript 8 2

  6. inpax inpax Public

    Inpax: cross-platform, eXtended INPA implementation

    TypeScript 5