iwomc
v0.5.0
Published
It Works On My Computer - find out why a teammate's checkout fails, and fix it.
Readme
IWOMC
It Works On My Computer. IWOMC finds out why, and fixes it.
Your teammate clones the commit you just pushed. Your app runs. Theirs does not.
Usually the difference is not in the code - it is on your disk. A package that got
installed but never added to package.json. A version that had to be rolled back.
A virtual environment set up by hand weeks ago.
IWOMC records what your machine actually has, ties it to the exact Git commit, and
uses that to make the other machine work - then proves it by running your own test
command. It says working only when that command passes.
Install
npm install -g iwomcNode.js 22.5 or newer. No Docker, no account, no server.
Use it
On the checkout that works:
iwomc init --proof "npm test"
iwomc capture
iwomc verifyOn the checkout that is broken:
iwomc rescue --approveThen, so nobody hits it again:
iwomc promote # show an ordinary diff that fixes the repository
iwomc promote --applyKeep a history
A contract describes one commit. To answer what was installed at 2pm last Tuesday
- or to catch a downgrade, which a snapshot cannot express - leave the recorder on:
iwomc daemon status # a recorder starts by itself; this shows it
iwomc timeline <commit> # what was installed at that commit
iwomc diff <their-commit> <your-commit> # what is different between the twoThe recorder starts the first time you use IWOMC in a project and tells you it
has. It reads your project's package folders and nothing else: it never runs a
package manager, never looks outside the projects you registered, never edits a
tracked file, and never uploads your history. iwomc daemon disable stops it.
For coding agents
iwomc mcp exposes the same workflow as typed MCP tools. Anything that changes
your machine refuses to run without explicit confirmation. Run iwomc agent-docs
for the full reference offline.
Across operating systems
The person whose machine works is often not on your operating system. IWOMC applies their contract anyway when nothing in it is restricted to one platform, and says it was proven elsewhere rather than implying otherwise. When something is restricted - a build tool's per-platform binary, say - it refuses and names the package instead of giving you a generic mismatch to diagnose.
Supported today
Nine package managers are detected, recorded, repaired, and verified:
| Ecosystem | Managers | | --- | --- | | Node.js | npm, pnpm, Yarn, Bun | | Python | pip, uv, Poetry | | Rust | Cargo | | Go | Go modules |
Every one of them installs inside your project folder only. Each keeps a
machine-wide cache by default - ~/.cargo, ~/.npm, Go's module cache - and IWOMC
redirects every one into the project's own .iwomc directory, so a rescue never
changes anything outside the checkout it was pointed at.
Cargo and Go find their dependencies only through an environment variable. IWOMC sets it for the proof command it runs and prints what to set in your own shell; it cannot change your shell for you.
Nineteen more are recognised and reported honestly as not yet repairable, rather
than claimed as supported. iwomc status names the level for the project you are
in.
More
Source, documentation, and issues: https://github.com/Carldtitan/Environment_Drift
MIT licensed.
