Inspects every cache mix mob.* writes to outside the project tree, and
(with --clear) deletes them. Distinct from mix clean (build artifacts
in _build/) and mix deps.clean (deps in deps/) — this targets caches
in your home directory that survive across projects.
By default the command is read-only — it prints a summary of what's on
disk and exits. Pass --clear to wipe Mob's own cache, and add
--include-transitive to also wipe caches owned by transitive deps
(currently elixir_make, used by exqlite for its prebuilt NIF tarball).
Caches we do not touch — even with --include-transitive — because
they're shared with the rest of your Elixir/Android/iOS work:
~/.hex/,~/.mix/— Hex/Mix global state~/.gradle/— Gradle wrapper + caches~/Library/Developer/Xcode/— Xcode DerivedData, Index~/Library/Caches/com.apple.dt.*— Xcode-related caches
Clean those manually if you want a true scorched-earth reset.
Usage
mix mob.cache # show what's on disk (default)
mix mob.cache --include-transitive # also list elixir_make cache
mix mob.cache --clear # delete Mob's own cache
mix mob.cache --clear --include-transitive # delete Mob's + elixir_make's
mix mob.cache --clear --yes # skip the confirmation prompt
mix mob.cache --dry-run # explicit "list only" (alias for default)Where the caches live
Mob's own cache — pre-built OTP runtimes (iOS sim, iOS device, Android arm64, Android arm32). One per platform/ABI; ~200–400 MB each. Reused across every Mob project on this machine.
$MOB_CACHE_DIR (if set)
~/.mob/cache/ (default)Override with MOB_CACHE_DIR in your shell or mob.exs if you want it
somewhere project-local or sandbox-friendly (Nix users: this is the
switch you want).
elixir_make cache — pre-built NIF tarballs that exqlite and other
NIF-using deps download instead of recompiling from source. The same
tarball is reused across every Elixir project on this machine.
~/Library/Caches/elixir_make/ (macOS)
~/.cache/elixir_make/ (Linux)This belongs to elixir_make, not Mob — but mix mob.deploy is what
populated it, so we offer to clear it here.