Background
We currently manage runtimes, env, and task orchestration with multiple tools across the repo. This issue proposes evaluating mise as a single, consistent layer for:
- tool versions
- env management
- task running
- monorepo task namespacing
Reference docs:
What could be consolidated with mise
Tool versions
- Replace scattered tool managers (e.g., asdf/nvm/pyenv) with a single
mise.toml + per-dir overrides.
Environment management
- Replace or reduce reliance on direnv by defining env vars in
mise.toml (per directory).
Task running
- Centralize build/test/lint/dev tasks in mise tasks (including deps + outputs), instead of Make/just/shell scripts.
Monorepo task namespacing (experimental)
- Use
//path:task for package-scoped tasks and shared tasks, with inheritance from root configs.
CI bootstrapping
- Install toolchains in CI via
jdx/mise-action or a bootstrap script.
Upsides
- Single source of truth for tools + env + tasks across the monorepo.
- Hierarchical config maps well to packages and workspace overrides.
- Task dependencies + outputs allow incremental task execution.
- Monorepo task namespacing reduces custom glue for package-specific commands.
- CI standardization via a single installation flow.
Downsides / Risks
- Monorepo mode is experimental and requires
MISE_EXPERIMENTAL=1.
- direnv conflicts: mise recommends not using direnv simultaneously; we need a strategy.
- asdf compatibility is not a priority (some asdf-go behaviors may diverge).
- Potential migration cost (docs + scripts + onboarding).
Proposal (Evaluation Plan)
- Add a minimal root
mise.toml with core tool versions (Rust/Bun/etc.).
- Pilot task definitions for a few common commands (build/test/lint).
- Decide on env ownership (mise vs direnv), document the chosen approach.
- Optionally enable monorepo root tasks if the experimental path is acceptable.
- Validate CI setup using
mise-action or a bootstrap script.
Decision Criteria
- Fewer tools required for onboarding
- Lower maintenance for tool versions + env vars
- Task usability (DX parity vs current tooling)
- Monorepo support adequate for our package layout
- CI compatibility and stability
Acceptance Criteria
- One documented workflow for tool versions and tasks
- Clear guidance on env management (including whether direnv stays)
- CI runs with mise in at least one pipeline
- No regressions in developer workflows
Open Questions
- Are Conventional Commit hooks / release tasks impacted by switching task runners?
- Should we keep
.tool-versions for compatibility or migrate fully?
- How much do we want to rely on experimental monorepo features?
Background
We currently manage runtimes, env, and task orchestration with multiple tools across the repo. This issue proposes evaluating mise as a single, consistent layer for:
Reference docs:
What could be consolidated with mise
Tool versions
mise.toml+ per-dir overrides.Environment management
mise.toml(per directory).Task running
Monorepo task namespacing (experimental)
//path:taskfor package-scoped tasks and shared tasks, with inheritance from root configs.CI bootstrapping
jdx/mise-actionor a bootstrap script.Upsides
Downsides / Risks
MISE_EXPERIMENTAL=1.Proposal (Evaluation Plan)
mise.tomlwith core tool versions (Rust/Bun/etc.).mise-actionor a bootstrap script.Decision Criteria
Acceptance Criteria
Open Questions
.tool-versionsfor compatibility or migrate fully?