Interoperability: DevRepro Doctor and your existing environment managers¶
DevRepro Doctor is a diagnostic and reproducibility layer, not another package manager or environment manager. It sits across the tools you already use and explains what they do — it never replaces them as the source of truth.
The three modes¶
| Mode | What DevRepro does | What stays authoritative |
|---|---|---|
| Diagnose (default) | Read-only probes, findings, snapshots, diffs, drift timelines | Your environment manager |
Generate (devrepro generate) |
Drafts config files from detected requirements | You, after review |
| Defer | Detects an environment manager and reports its state instead of second-guessing it | The manager, explicitly |
Per-tool guidance¶
Nix / Nix Flakes¶
- Diagnose: daemon mode, flakes support, trusted-user issues, channel/registry state.
- Defer: when a
flake.lockexists, DevRepro treats the flake as the source of truth for tool versions and only reports whether the machine can use it. - Never generates Nix expressions.
devenv¶
- Diagnose: version, shell integration, process/service config validation.
- Defer:
devenv.lockpins win over inferred requirements.
Devbox¶
- Diagnose: project detection, lock analysis, package-resolution symptoms.
- Defer:
devbox.lockis authoritative.
mise / asdf¶
- Diagnose: tool-version policy parsing, active-version mismatch checks.
- Generate:
.mise.toml/.tool-versionsdrafts from explicit requirements (devrepro generate mise|asdf) — always preview-first, never overwrite without--overwrite. - If both a lockfile and a tool-version file exist, the lockfile wins.
direnv¶
- Diagnose:
.envrcpresence/authorization/shell-hook status. Executed shell code is treated cautiously; contents are never printed.
Dev Containers / DevPod¶
- Diagnose: spec discovery, local machine compatibility, runtime detection.
- Generate:
devcontainer.jsondrafts marked generated, review required.
Language managers (pyenv, nvm/fnm/Volta, rbenv, conda, …)¶
- Diagnose: which manager owns each toolchain (provenance), version mismatches, PATH shadowing between managers.
- Defer: the active manager's version selection is reported, not overridden.
Rules of engagement¶
- Read-only by default. Nothing on your machine changes without explicit confirmation, and remediation plans show exact commands before anything runs.
- Lockfiles beat manifests beat inference. When sources disagree, DevRepro says so instead of silently picking one.
- Generated files require review. Every generator output is previewed with a
diff; existing files are never overwritten without
--overwrite. - No forced migration. DevRepro never suggests abandoning a working environment manager; it explains conflicts so you can decide.
- Privacy holds everywhere. Snapshots shared with teams or fleets are sanitized; secrets are redacted at the source.
Where this stops and something else starts¶
Application profiling — react-doctor. This tool explains why an application will not build on a given machine. Why it is slow once it does is a different question, answered by attaching to a running process — and attaching a debugger to somebody's process is the furthest thing from read-only in this project. react-doctor does that job well; this one links there rather than competing.
Environment management — Nix,
mise, Devbox.
They manage environments; this diagnoses them, including theirs. devrepro
envmanagers reports what each declares versus what is actually active, and
devrepro reproduce --emit nix hands a Nix-shaped team a starting point rather
than pretending to be a package manager.