macOS Apple Silicon
The signed DMG includes the SwiftUI Studio, CLI, optional Codex skill, and Metal runtime.
- Full app and CLI on Apple Silicon.
- Signed, notarized, versioned DMG.
- Best-supported creative workflow.
Generate images, video, worlds, 3D, music, speech, and sound. Train LoRAs. Inspect scenes. Use the Mac app, Linux CLI, or local API.
mere.run runs on Apple Silicon and headless Linux. macOS gets the app and CLI; Linux gets x86_64 packages and an arm64 CUDA build for DGX Spark-class Blackwell hosts.
The signed DMG includes the SwiftUI Studio, CLI, optional Codex skill, and Metal runtime.
Portable tarball and Debian package for headless x86_64 systems.
arm64 Linux build for DGX Spark-class Blackwell CUDA hosts with 128 GB unified memory.
Copy one prompt into your coding agent. It selects the matching release asset, installs in your home directory, and verifies the CLI. A hardware mismatch stops the install.
use-mere-run skill.You are helping me install mere.run locally on this Mac.
Rules:
- Do not use sudo.
- Do not edit shell profiles unless I ask.
- Prefer user-local install paths.
- Read release metadata from https://mere.run/.well-known/mere-run/release.json.
- Stop and explain if the latest macOS DMG URL is missing or the DMG mount fails.
Steps:
1. Resolve the latest macOS DMG URL:
release_json="$(curl -fsSL "https://mere.run/.well-known/mere-run/release.json")"
dmg_url="$(printf '%s' "$release_json" | python3 -c 'import json,sys; data=json.load(sys.stdin); print((data.get("downloads") or {}).get("macos_dmg") or data.get("download_url") or "")')"
test -n "$dmg_url" || { echo "No macOS DMG URL found in release metadata."; exit 1; }
2. Download the DMG to a temporary folder:
work_dir="$(mktemp -d)"
dmg_path="$work_dir/mere-run.dmg"
curl -fL "$dmg_url" -o "$dmg_path"
3. Mount the DMG, or reuse it if it is already mounted:
hdiutil attach -nobrowse -readonly "$dmg_path"
volume=""
for candidate in "/Volumes/mere.run" /Volumes/mere.run* /Volumes/MereRun* "/Volumes/Mere Run"*; do
if [ -d "$candidate" ] && [ -x "$candidate/.mere-run/install.sh" ]; then
volume="$candidate"
break
fi
done
if [ -z "$volume" ]; then
echo "Mounted the DMG, but could not find the mere.run volume."
hdiutil info
exit 1
fi
4. Verify the mounted volume contains MereRun.app plus .mere-run/install.sh:
test -d "$volume/MereRun.app"
test -x "$volume/.mere-run/install.sh"
5. If /Applications/MereRun.app is missing, copy the app there:
if [ ! -d "/Applications/MereRun.app" ]; then
ditto "$volume/MereRun.app" "/Applications/MereRun.app"
else
echo "/Applications/MereRun.app already exists. Leaving it in place."
fi
If the copy is denied, tell me to drag MereRun.app to Applications, then continue with CLI and skill setup.
6. Install the CLI to ~/.local/bin/mere.run:
mkdir -p "$HOME/.local/bin"
MERERUN_INSTALL_BIN_DEST="$HOME/.local/bin/mere.run" "$volume/.mere-run/install.sh"
7. Install the bundled use-mere-run Codex skill if it exists:
skill_source=""
for candidate in "$volume/MereRun.app/Contents/Resources/skills/use-mere-run" "$volume/.mere-run/skills/use-mere-run"; do
if [ -d "$candidate" ]; then
skill_source="$candidate"
break
fi
done
if [ -n "$skill_source" ]; then
mkdir -p "$HOME/.codex/skills"
rm -rf "$HOME/.codex/skills/use-mere-run"
ditto "$skill_source" "$HOME/.codex/skills/use-mere-run"
fi
8. Verify the CLI:
"$HOME/.local/bin/mere.run" --help
"$HOME/.local/bin/mere.run" model capabilities --recommended
9. Pull the starter image model:
"$HOME/.local/bin/mere.run" model pull image-zimage-nano
10. Generate and open the first image:
"$HOME/.local/bin/mere.run" image generate --model image-zimage-nano --prompt "a ceramic mug in soft morning light on a walnut desk" --width 1024 --height 1024 --steps 8 --seed 2026 --output "$HOME/Desktop/mere-first-image.png"
open "$HOME/Desktop/mere-first-image.png"
At the end, tell me where the app, CLI, skill, model store, downloaded DMG, mounted volume, and image are.
You are helping me install the mere.run CLI on a Linux x86_64/amd64 host.
Rules:
- Do not use sudo.
- Do not edit shell profiles unless I ask.
- Prefer user-local install paths.
- Read release metadata from https://mere.run/.well-known/mere-run/release.json.
- Stop if this is not an x86_64/amd64 Linux host or if the matching tarball is missing.
Steps:
1. Verify the host architecture:
arch="$(uname -m)"
case "$arch" in
x86_64|amd64) ;;
*) echo "This prompt is for Linux x86_64/amd64, but this host is $arch."; exit 1 ;;
esac
2. Resolve the latest x86_64 tarball and checksum URLs:
release_json="$(curl -fsSL "https://mere.run/.well-known/mere-run/release.json")"
tar_url="$(printf '%s' "$release_json" | python3 -c 'import json,sys; data=json.load(sys.stdin); print((data.get("downloads") or {}).get("linux_tarball_x86_64") or "")')"
sums_url="$(printf '%s' "$release_json" | python3 -c 'import json,sys; data=json.load(sys.stdin); print((data.get("downloads") or {}).get("sha256sums") or "")')"
test -n "$tar_url" || { echo "No Linux x86_64 tarball found in release metadata."; exit 1; }
3. Download the tarball:
work_dir="$(mktemp -d)"
tar_path="$work_dir/$(basename "$tar_url")"
curl -fL "$tar_url" -o "$tar_path"
if [ -n "$sums_url" ]; then curl -fL "$sums_url" -o "$work_dir/SHA256SUMS"; fi
4. Verify the checksum when SHA256SUMS is available:
if [ -s "$work_dir/SHA256SUMS" ]; then
expected_line="$(grep "$(basename "$tar_path")" "$work_dir/SHA256SUMS" || true)"
test -n "$expected_line" || { echo "SHA256SUMS did not include $(basename "$tar_path")."; exit 1; }
printf '%s\n' "$expected_line" | (cd "$work_dir" && sha256sum -c -)
fi
5. Extract into a user-local versioned directory:
install_root="$HOME/.local/share/mere-run"
version_dir="$install_root/$(date +%Y%m%d-%H%M%S)"
mkdir -p "$version_dir" "$HOME/.local/bin"
tar -xzf "$tar_path" -C "$version_dir"
6. Link the CLI at ~/.local/bin/mere.run:
bin_path="$(find "$version_dir" -type f -name 'mere.run' -perm -111 | head -n 1)"
if [ -z "$bin_path" ]; then
bin_path="$(find "$version_dir" -type f -name 'mere.run' | head -n 1)"
test -n "$bin_path" && chmod +x "$bin_path"
fi
test -x "$bin_path" || { echo "Could not find executable mere.run in $version_dir."; exit 1; }
ln -sf "$bin_path" "$HOME/.local/bin/mere.run"
7. Verify the CLI:
"$HOME/.local/bin/mere.run" --help
"$HOME/.local/bin/mere.run" model capabilities --recommended
At the end, tell me where the CLI, install directory, downloaded tarball, and model store are.
You are helping me install the mere.run CLI on a DGX Spark-class NVIDIA Blackwell Linux arm64/aarch64 CUDA host with the 128GB unified-memory class.
Rules:
- Do not use sudo.
- Do not edit shell profiles unless I ask.
- Prefer user-local install paths.
- Read release metadata from https://mere.run/.well-known/mere-run/release.json.
- Stop if this is not an arm64/aarch64 Linux host with CUDA visible. DGX Spark-class Blackwell hardware is the intended lane.
Steps:
1. Verify the host architecture and CUDA lane:
arch="$(uname -m)"
case "$arch" in
arm64|aarch64) ;;
*) echo "This prompt is for Linux arm64/aarch64, but this host is $arch."; exit 1 ;;
esac
command -v nvidia-smi >/dev/null 2>&1 || { echo "nvidia-smi is not available. The arm64/aarch64 release lane is CUDA-only."; exit 1; }
nvidia-smi
2. Resolve the latest arm64/aarch64 CUDA tarball and checksum URLs:
release_json="$(curl -fsSL "https://mere.run/.well-known/mere-run/release.json")"
tar_url="$(printf '%s' "$release_json" | python3 -c 'import json,sys; data=json.load(sys.stdin); d=data.get("downloads") or {}; print(d.get("linux_tarball_aarch64") or d.get("linux_tarball_arm64") or "")')"
sums_url="$(printf '%s' "$release_json" | python3 -c 'import json,sys; data=json.load(sys.stdin); print((data.get("downloads") or {}).get("sha256sums") or "")')"
test -n "$tar_url" || { echo "No Linux arm64/aarch64 CUDA tarball found in release metadata."; exit 1; }
3. Download the tarball:
work_dir="$(mktemp -d)"
tar_path="$work_dir/$(basename "$tar_url")"
curl -fL "$tar_url" -o "$tar_path"
if [ -n "$sums_url" ]; then curl -fL "$sums_url" -o "$work_dir/SHA256SUMS"; fi
4. Verify the checksum when SHA256SUMS is available:
if [ -s "$work_dir/SHA256SUMS" ]; then
expected_line="$(grep "$(basename "$tar_path")" "$work_dir/SHA256SUMS" || true)"
test -n "$expected_line" || { echo "SHA256SUMS did not include $(basename "$tar_path")."; exit 1; }
printf '%s\n' "$expected_line" | (cd "$work_dir" && sha256sum -c -)
fi
5. Extract into a user-local versioned directory:
install_root="$HOME/.local/share/mere-run"
version_dir="$install_root/$(date +%Y%m%d-%H%M%S)"
mkdir -p "$version_dir" "$HOME/.local/bin"
tar -xzf "$tar_path" -C "$version_dir"
6. Link the CLI at ~/.local/bin/mere.run:
bin_path="$(find "$version_dir" -type f -name 'mere.run' -perm -111 | head -n 1)"
if [ -z "$bin_path" ]; then
bin_path="$(find "$version_dir" -type f -name 'mere.run' | head -n 1)"
test -n "$bin_path" && chmod +x "$bin_path"
fi
test -x "$bin_path" || { echo "Could not find executable mere.run in $version_dir."; exit 1; }
ln -sf "$bin_path" "$HOME/.local/bin/mere.run"
7. Verify the CUDA-oriented CLI path:
MERERUN_LINUX_ACCEL=cuda "$HOME/.local/bin/mere.run" --help
MERERUN_LINUX_ACCEL=cuda "$HOME/.local/bin/mere.run" model capabilities --recommended
At the end, tell me where the CLI, install directory, downloaded tarball, CUDA check, and model store are.
Every tile is a real local run on one MacBook Pro — video with sound, a portrait, music, 3D, depth, and vision. Hover, focus, or tap any tile for the command that made it.
platedepth
Create, train, reconstruct, automate, and serve from one local CLI.
Generate and edit with Klein, ZImage, Bonsai, HiDream, Krea 2, and Ideogram. Supports reference images, image-to-image, and API edits.
mere.run image generate --model image-krea2-turbo --steps 8
Train Klein and Krea 2 image adapters or text adapters from SFT JSONL. Preflight checks the plan before loading a model.
mere.run image train-lora --data ./dataset --output ./style.safetensors --preflight --json
Turn one image into GLB, OBJ, PLY, or PBR voxels with MLX TRELLIS.2. TripoSR and InstantMesh cover faster drafts.
mere.run vision image-to-3d-trellis2 object.png -o ./mesh
Generate with LTX 2.3 or Wan, animate masked subjects with SCAIL-2, and use native Cosmos3 Edge for generation, reasoning, and action dynamics.
mere.run video animate "keep the subject dancing" --reference subject.png --reference-mask subject-mask.png --driving-video motion.mp4 --driving-mask motion-mask.mp4
Keep DreamX or Cosmos world state alive across camera-controlled transitions, or run a resident video session for repeated shots.
mere.run world serve --backend cosmos3 --model video-cosmos3-edge-mlx --state-directory ./world-state
Recover metric depth, normals, point clouds, multi-view geometry, video depth, pose, and optical flow.
mere.run vision geometry plate.png -o ./geo --json
Generate tracks, covers, remixes, and realtime sessions. Transcribe a finished mix to instrument-separated MIDI with MuScriptor.
mere.run music transcribe ./song.wav --format midi
Generate effects with Woosh or add motion-synced audio to video with MMAudio. Includes CLAP scoring and codec round trips.
mere.run sfx video generate "harbor foley" clip.mp4 --model sfx-mmaudio-large-44k-v2
Run Gemma, Qwen, LFM, DeepSeek, and GGUF coding models with memory-aware presets.
mere.run text code --model text-code-north-mini --prompt "write a Swift parser"
Build local RAG with Qwen3 embeddings. Anonymize PII before text reaches another tool.
mere.run text anonymize "Alice emailed alice@example.com"
Synthesize with Qwen3, transcribe with Parakeet or Qwen3, and stream microphone transcription with reusable profiles.
mere.run speech listen --jsonl
Caption, inspect, ground, segment, and OCR images with Falcon Perception, SAM 3.1, Infinity, and LightOn OCR.
mere.run vision ocr ./scan.png --quiet
Track prompted objects in video files or a live camera feed.
mere.run vision track-live --prompt "a person" --output ./live.mp4
Detect and analyze faces locally, then produce identity embeddings for matching workflows without uploading source media.
mere.run vision face detect ./portrait.png --include-embeddings --json
Inspect runtime status, estimate memory fit, pull or garbage-collect models, install verified adapters, and run installed-model quality gates.
mere.run adapter pull scail2-lightx2v-4step
Serve OpenAI-compatible chat, embeddings, images, edits, speech, and transcription, then connect a local Open WebUI.
mere.run open-webui quickstart --pull
Author immutable workflow graphs, preflight them, then run the same plan locally, over SSH, or through Relay with durable material references.
mere.run graph run workflow.json --inputs-json inputs.json --run-dir ./runs/local
Inspect local, SSH, and Relay executors; watch, fetch, cancel, or retry remote runs; and preserve artifacts and provenance locally.
mere.run run watch relay://fleet/<run-id> --json-stream
Use packaged offline cookbooks, guided machine setup, masked persistent configuration, and optional local coding-agent onboarding.
mere.run guide --list
Commands are grouped by modality and designed for scripts.
--preflight --json reports downloads, memory fit, and the exact work before loading a model. Immutable graphs run through local, SSH, or Relay executors while approved runs keep artifacts, diagnostics, and next actions on disk.
Studio uses the same runtime and model store as the CLI. Check whether a model fits, start a run, watch its progress, and find the outputs on disk.
Models sheet shown here: 47 installed, 63 known.
The public Mere CLI finds or installs mere.run, then pulls the models an app declares. It can use an existing binary, build from source, or install a verified release.
mere setup mere-run prepares the runtime.mere setup mere-run models --app media pulls Media's ASR and embedding models.mere.run is the inference runtime. Around it, Relay pools machines, Graph Studio turns portable graphs into visual workflows, and official plugins package production integrations. All three are MIT-licensed, with dedicated product sites and public source.
Install mere.run node on a Mac or Linux box. It reports its models and availability to your account, then accepts work through an outbound connection.
Author typed image, video, audio, and text workflows visually, then execute the same portable graph on your workstation, over SSH, or through Relay.
Plugins handle plans, artifacts, and cleanup around mere.run inference.
No hosted runtime or per-call bill.
The runtime does not upload prompts or outputs. This public site records privacy-minimized product analytics.
Source on GitHub. Built in Prince Edward Island.
Two scenes, made end to end with mere.run. The diner covers generation and understanding from one seed. The wharf fox goes from photograph to 3D, world navigation, geometry, relighting, sound, and LoRA training. Everything shown ran on one MacBook Pro.
SAM 3.1 cut out the wharf fox. MLX TRELLIS.2 turned it into a sealed PBR mesh with shape, texture, and metallic-roughness maps. TripoSR and InstantMesh provide faster drafts.
$ mere.run vision image-to-3d-trellis2 fox-cutout.png --seed 43 -o ./fox-mesh
drag to orbit · pinch or scroll to zoom
One world serve session chains nineteen camera moves. Each clip starts from the last frame, so the dock, fox, and fog remain in place as the camera turns and walks.
Start framesource image
$ mere.run world serve --state-directory ./wharf-state · POST /v1/world/session/transitions {"camera":{"motion":"yawLeft"}}
MoGe-2 recovers depth, normals, confidence, intrinsics, and a point cloud from the wharf plate. Depth Anything 3 handles multi-view geometry; Video Depth Anything carries depth through motion. Recovered geometry drives the relight.
Body and face points with confidence scores, ready for compositing.
$ mere.run vision pose portrait.png --json
393,216 optical-flow vectors for the diner dolly-in, saved as a Middlebury .flo file. Mean motion: 48.4 px.
$ mere.run vision flow a.png b.png -o shot.flo --accuracy very-high
"The door exhales a draft of ozone and wet asphalt, yielding to a sanctuary of humming neon and scorched lard. Inside, the air is a thick, amber suspension of tobacco smoke and percolating coffee…"
$ mere.run text chat --prompt "describe a 1950s diner…"
Generated with LTX on Metal from the diner scene description.
MMAudio added harbor ambience, creaking planks, and gulls to the silent world walk, aligned to the motion. Toggle the track and judge the sync.
$ mere.run sfx video generate "rain-damp harbor ambience, slow footsteps creaking on wet wooden planks, water lapping against pilings, distant gull cries, rope tapping a mast" world-walk.mp4 --model sfx-mmaudio-large-44k-v2 --seed 4242
MuScriptor turned the diner mix into 407 timed MIDI notes across guitars, voice, bass, piano, and drums. Switch between the original and MIDI render while it plays.
$ mere.run music transcribe music_diner.m4a --model music-muscriptor-large -o diner.mid
Rockabilly with brushed snare, reverb-heavy Telecaster, doo-wop backing vocals, and tenor sax, generated from one prompt and a lyrics file.
Qwen3 synthesized the narration; Parakeet transcribed it with timestamps. Both ran on device.
Woosh generated a ceramic mug shattering on diner tile.
$ mere.run sfx generate "single ceramic coffee mug dropped onto hard diner tile..." --model sfx-woosh-dflow --duration 3.5 --cfg 4.5 --seed 1963
/// Computes the Mandelbrot set for a given grid of complex points. func generateMandelbrotSet( width: Int, height: Int, bounds: ComplexPlaneBounds = .default, maxIterations: Int = 100 ) -> [[Int]] { var mandelbrot: [[Int]] = .init(repeating: .init(repeating: 0, count: width), count: height) let xStep = (bounds.right - bounds.left) / Double(width - 1) let yStep = (bounds.bottom - bounds.top) / Double(height - 1) for y in 0..<height { for x in 0..<width { let cx = bounds.left + Double(x) * xStep let cy = bounds.top + Double(y) * yStep mandelbrot[y][x] = iterate(cx: cx, cy: cy, max: maxIterations) } } return mandelbrot }
The diner image goes back through the vision stack for open-vocabulary grounding and masks.
$ mere.run vision ground hero.png --query "waitress"
Ideogram generated the ticket from structured text. LightOn OCR read every line back.
MERE DINER TABLE SEVEN _________________________ COFFEE CHERRY PIE _________________________ ORDER READY
$ mere.run vision ocr ocr-receipt-ideogram.png --backend lighton --quiet
mere.run generated and captioned 24 cyanotypes, checked the plan, trained the adapter, and rendered a held-out fox with and without it. The whole run used one MacBook Pro.





Held-out fox, seed 7777, adjacent checkpoints. The style converges without losing the subject.
The slider compares one composition with the adapter off and on. Both use seed 7777 and image-to-image strength 0.7; the checkpoint strip shows the text-to-image progression.

$ mere.run image generate --model image-klein-9b --seed 7777 -i base.png --strength 0.7 --lora ./cyanotype-wharf-r16-250.safetensors
Krea 2 Turbo renders the diner prompt twice: base model, then custom LoRA at scale 2.0. Material, face shape, and miniature texture change.
$ mere.run image generate --model image-krea2-turbo --steps 16 --lora ./custom-style.safetensors --lora-scale 2.0
Klein replays one archival street photo through thirteen private LoRAs. The cyanotype card shows training; the carousel shows finished adapters in use.
$ mere.run image generate --model image-klein-9b --ref-image street-kiss.png --strength 0.55 --lora ./blade-runner-rain.safetensors --lora-scale 1.5
Klein 9B combines the Krea diner as an environment reference with a generated dog portrait as the subject, placing the dog in the booth.
$ mere.run image generate --model image-klein-9b --ref-image diner.png --ref-image dog.png --prompt "swap the dog into the diner"
Three sentences embedded locally. Unit-vector distance places related descriptions closer together.
Diner and booth descriptions are closest.
Shared visual language creates some overlap despite the subject change.
The unrelated subject is farthest from the diner prompt.