Skip to content
Randy Syring edited this page Sep 21, 2025 · 7 revisions

Mise is used for at least:

  • Dev tools: Python, Node, Terraform, etc.
  • Static Environment variables
  • Python venv activation and creation using uv
  • Tasks: scripts used to manage the project that, usually, need the project's tooling and/or environment setup to function correctly

Host Prep

Coppy projects assume mise and uv are installed on a developer's host system

We recommend installing both mise and uv directly for your OS user account.

We no longer recommend installing uv through mise as uv should be available as a tool without going through mise to get access.

Host Updates

Given the frequency of releases to mise and uv, we recommend updating them frequently. See our systemd folder for service and timer units that update these tools nightly.

# mise

 ❯ mise self-update
 ❯ mise up
 ❯ mise reshim

# Keep mise & uv Pythons in-sync with:

 ❯ mise sync python --uv

# uv

 ❯ uv self update
 ❯ uv tool upgrade --all

Virtualenv Location

By default, the project's venv will be located in the project directory at .venv.

You can use centralized virtualenvs by ensuring a cache directory exists: ~/.cache/uv-venvs/. E.g.:

mkdir ~/.cache/uv-venvs/

Mise tasks can use a uv shebang so they can function without mise being active. But:

  • This won't work if using centralized virtualenvs b/c UV_PROJECT_ENVIRONMENT is activated by mise. So when the script runs, it will want to use .venv.
  • A workaround, until uv gets support for centralized venvs, is to symlink .venv to the central one.

Design Notes

  1. Smooth integration between mise & uv is a high priority
  2. Our repos will operate as uv projects including defining requirements in pyproject.toml and using uv.lock
  3. Developers will manually run uv sync to update the, presumably mise activated, active virtualenv
Clone this wiki locally