Skip to content

Evaluate mise for polyglot monorepo tooling consolidation #342

@galligan

Description

@galligan

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)

  1. Add a minimal root mise.toml with core tool versions (Rust/Bun/etc.).
  2. Pilot task definitions for a few common commands (build/test/lint).
  3. Decide on env ownership (mise vs direnv), document the chosen approach.
  4. Optionally enable monorepo root tasks if the experimental path is acceptable.
  5. 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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions