Create anything. Locally.

Images and edits. Video and SFX. Speech, music, chat, code, vision, OCR. Mac app. Linux CLI. Local API.

Downloads Linux QuickStart GitHub source Open source under MIT · release assets listed live
macOS app Linux x86_64 Linux aarch64 CUDA DGX Spark Blackwell OpenAI-compatible API

Install paths

One runtime. Multiple hosts.

mere.run is a cross-platform local inference runtime: Mac app and CLI for Apple Silicon, headless Linux packages for x86_64/amd64, and a CUDA arm64/aarch64 lane for DGX Spark-class NVIDIA Blackwell hosts where 128GB unified memory is the standard.

macOS Apple Silicon

The full local runtime path: signed DMG, SwiftUI studio, bundled CLI, optional Codex skill, and Metal-backed model execution.

  • Primary hands-on validation environment.
  • DMG is signed, notarized, and versioned.
  • Best path for local creative workflows today.

Linux x86_64 CLI

Headless CLI packages now ship on GitHub Releases as a portable tarball and Debian package. No SwiftUI studio, no DMG layout.

  • Release workflow verifies tarball, .deb, runtime libraries, and SHA256SUMS.
  • CPU-oriented CI baseline; CUDA stays optional local validation.
  • Current x86 CUDA validation is limited to hosts with up to 16 GB VRAM.
For server and workstation Linux lanes that do not need the Mac app shell.
Agent-assisted install

Choose the host. Copy the prompt.

Let your agent pick the right attached release asset, install into your home directory, verify the CLI, and stop if the machine does not match the platform lane. The arm64/aarch64 CUDA flavor is built for DGX Spark-class NVIDIA Blackwell Linux hosts where 128GB unified memory is the normal target.

  • macOS uses the signed DMG and can install the optional use-mere-run skill.
  • Linux x86_64/amd64 uses the portable CLI tarball from GitHub Releases.
  • Linux arm64/aarch64 is the DGX Spark / Blackwell CUDA lane and checks for a real CUDA host first.
agent-install-macos.txt
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.

One toolkit. Local.

The public runtime now spans generation, understanding, model management, and local serving: image families, LoRA training, video, music, SFX, speech, chat, code, embeddings, privacy tools, vision, OCR, tracking, and OpenAI-compatible endpoints.

CREATE
Images & edits

Klein, ZImage, Bonsai, HiDream, Krea 2, and Ideogram families. Reference images, image-to-image, and API edits.

mere.run image generate --model image-krea2-turbo --steps 8
TRAIN
LoRA & validation

Krea 2 Raw LoRA training, LoRA input, and deterministic image validation. Useful before spending serious GPU time.

mere.run image train-lora --model image-krea2-raw --data ./dataset --output ./style.safetensors --lite
CREATE
Video

LTX video generation, directed image-to-video, first and last keyframes, AV output, and latent export.

mere.run video generate --model video-ltx23-av-mlx
CREATE
Music

ACE-Step tracks, XL Turbo covers and remixes, source analysis, lyrics, BPM, and Magenta RT2 realtime capture.

mere.run music realtime "ambient modular synths" --duration 4 --output ./live.wav --no-play
CREATE
Sound effects

Woosh SFX generation, audio autoencoder round trips, CLAP scoring, and video-conditioned sound design.

mere.run sfx generate "wrench dropping onto concrete" -o ./wrench.wav
THINK
Chat & code

Machine-aware chat tiers, Gemma, Qwen, LFM, DeepSeek, and native GGUF coding models like North Mini Code.

mere.run text code --model text-code-north-mini --prompt "write a Swift parser"
UNDERSTAND
Embeddings & privacy

Native Qwen3 embeddings for local RAG clients and local PII anonymization before text leaves a workflow.

mere.run text anonymize "Alice emailed alice@example.com"
INTERACT
Speech

Qwen3 text-to-speech, Parakeet and Qwen3 transcription, translations, timestamps, and reusable voice profiles.

mere.run speech synthesize "Hello world" --output hello.wav
SEE
Vision & OCR

Caption, inspect, ground, segment, and OCR images with Falcon Perception, SAM 3.1, and Infinity or LightOn OCR.

mere.run vision ocr ./scan.png --quiet
SEE
Tracking

Track prompted objects through video or record a short camera session and run live-camera tracking locally.

mere.run vision track-live --prompt "a person" --output ./live.mp4
MANAGE
Models & runtime

Pull managed Hugging Face snapshots, inspect installs, repair manifests, set TTLs, pin defaults, and ask what fits this machine.

mere.run model capabilities --recommended
SERVE
API Server

Local OpenAI-compatible chat, embeddings, image generations, image edits, TTS, and transcriptions for apps and agents.

mere.run api serve --engine text-chat-gemma4
mere.

The command tree is modality-first, scriptable, and backed by managed local model pulls.

~/projects · zsh
$ mere.run model capabilities --recommended chooses chat and code tiers for this machine before pulling weights
$ mere.run image generate --model image-hidream-o1-dev --ref-image ./subject.png HiDream reference-image generation · → subject-studio.png
$ mere.run image train-lora --model image-krea2-raw --data ./style-dataset --output ./style.safetensors --lite Krea 2 Raw adapter · → style.safetensors
$ mere.run sfx generate "metal wrench dropping onto concrete" -o ./wrench-clang.wav sfx-woosh-dflow · → wrench-clang.wav
$ mere.run vision track-live --output ./live.mp4 --prompt "a person" SAM 3.1 tracking over a local camera recording
$ mere.run api serve --engine text-chat-q36 chat, embeddings, images, edits, speech, and transcription at http://127.0.0.1:8080
AGENT NATIVE

Built for humans.
Built for agents.

Mere is a first-class tool for AI agents. Claude Code, Cursor, Open WebUI, and any OpenAI-compatible client can invoke local chat, embeddings, image generation, image edits, speech, transcription, and creative commands through a single CLI or API endpoint. Your machine becomes an AI compute layer that both you and your agents share.

  • mere.run agent onboard — configure local agent workflows
  • mere.run api serve, local OpenAI-compatible routes for editor and agent clients
  • mere.run model capabilities --recommended, machine-aware model selection before downloads
  • CLI-first, every command is scriptable and composable
claude code · session
CLAUDE CODE
> Prepare local media processing and generate a cover image
$ mere setup mere-run models --app media --json speech-asr-parakeet · text-embed-qwen3-0.6b ready
$ cat ./brief.txt | mere.run text anonymize --output ./brief.safe.txt local privacy filter complete
$ mere.run image generate --model image-zimage-max
--prompt "clean studio media cover, soft light" --width 2048
→ cover.png saved locally
Mere apps

Apps can ask for what they need.

The public Mere CLI can now orchestrate this runtime for Mere apps. It resolves an existing mere.run binary, builds from source, or installs a verified release artifact, then pulls the local models requested by an app.

  • mere setup mere-run prepares the runtime.
  • mere setup mere-run models --app media pulls Media's ASR and embedding models.
  • Execution still happens locally on the user's machine.
mere apps · setup
$ npm install -g @merekit/cli installs the public Mere command plane
$ mere setup mere-run --json runtime ready · existing binary, source build, or verified release artifact
$ mere setup mere-run models --app media --json speech-asr-parakeet · text-embed-qwen3-0.6b
$ mere media process ./interview.m4a --transcribe --embed transcript + searchable segments generated locally

Local-first.

Near-zero operating cost. No cloud. No subscription fatigue.

Nothing leaves your machine.

No server. No upload. No telemetry. Your prompts are yours.

Open source. Free forever.

MIT licensed with source on GitHub. Built in Prince Edward Island for the people who keep the world running.

The Showcase

One scene.
Every modality.

From a single creative seed, a 1950s American roadside diner just before midnight in heavy rain, Mere generated text, images, vision grounding, narration, SFX, music, video, Swift code, OCR, reference-image generation, and embeddings. The original diner set ran locally on a MacBook in about four minutes; the newer cards add current-runtime checks from the local source checkout.

$ bash ~/mere/run/demo.sh 9 modalities · 13 artifacts · 0 cloud calls · ~4 min on M-series
Image + Vision · klein-nano + Falcon Perception
Generated 1950s diner scene with Falcon Perception object detection and segmentation overlays.
waitress · 0.95 jukebox · 0.92 neon sign ×3
Text · Creative gemma4 · 0.85t
"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 · 512 tokens $ mere.run text chat --prompt "describe a 1950s diner…"
Video · LTX 768×512 · 65f · 24fps

Establishing shot, dolly-in

Native LTX pipeline on Metal. Text-to-video from the same scene description.

Video · Image-to-Video 33f · seeded by hero

The still comes to life

Animated directly from the generated photograph — steam, headlights, jukebox glow.

Music · ACE-Step G major · 88 BPM · 60s

"Honey, stay one more song with me"

Full vocal production. Vintage rockabilly, brushed snare, twangy reverb-soaked Telecaster, doo-wop backing vocals, a soft tenor sax solo. Written and arranged from a single prompt + lyrics file.

Honey stay one more song with me
Underneath the chrome and the canopy
Red vinyl shining in the smoky light
Save me from the lonely night
Speech · TTS → ASR qwen3-nano · parakeet

The text, spoken back.

Synthesized in a deep documentary voice, then transcribed with timestamps. Round-trip never leaves the machine.

[00:00 → 00:08] The door exhales a draught of ozone…
[00:08 → 00:18] Inside, the air is a thick, amber suspension…
[00:18 → 00:27] Outside, the rain hammers the plate glass…
SFX · Woosh DFlow 3.5s · 48 kHz · seed 1963

Mug hits tile.

A single ceramic coffee mug drops onto hard diner tile, breaks into brittle pieces, and sends shards skidding across the floor.

$ 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
Code · Swift qwen3-coder · streamed
mandelbrot.swift
/// 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
}
compiled · rendered · 0.30s
Mandelbrot overview rendered locally
Seahorse Valley zoom rendered locally
Vision · Falcon Perception grounding + masks

Knows what it sees.

The same image fed back into Mere's vision stack: open-vocabulary object grounding with pixel-perfect masks.

waitressbox (0.61, 0.28) → (0.74, 0.68) jukeboxbox (0.84, 0.28) → (0.96, 0.65) neon sign3 detections · masks saved
$ mere.run vision ground hero.png --query "waitress"
OCR · Ideogram JSON → LightOn 1024×1024 · seed 1964

A receipt built for OCR.

The receipt-style order ticket was prompted as Ideogram JSON with each visible line as its own text element, then read back locally with LightOn OCR.

MERE DINER
TABLE SEVEN
_________________________
COFFEE
CHERRY PIE
_________________________
ORDER READY
$ mere.run vision ocr ocr-receipt-ideogram.png --backend lighton --quiet
Ideogram generated diner order ticket reading MERE DINER, TABLE SEVEN, COFFEE, CHERRY PIE, ORDER READY.
Image · Krea 2 LoRA 1280×720 · 16 steps

Same prompt. Adapter on.

A diner prompt rendered with Krea 2 Turbo, then repeated with a custom LoRA at scale 2.0. The adapter shifts material, face shape, and miniature texture while the scene stays local.

$ mere.run image generate --model image-krea2-turbo --steps 16 --lora ./custom-style.safetensors --lora-scale 2.0
Generated from the local source checkout with seed 7777. No cloud calls. No post-editing.
Krea 2 Turbo baseline showing a human night manager counting coins in a rainy 1950s diner booth.
Base Krea
Krea 2 Turbo with a custom LoRA applied, shifting the diner booth scene toward stop-motion puppet texture.
Custom LoRA
Image · Klein LoRA img-to-img 13 adapters · scale 1.5

One kiss, thirteen adapters.

Klein started from an archival street-photo reference, then image-to-image generation replayed it through thirteen private LoRAs. The composition stays recognizable while color, line, and texture move hard.

$ 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
Generated from local LoRA image-to-image runs. No cloud calls. No semantic post-editing.
Klein 9B generated diner scene using a Krea diner reference and a dog reference, showing the dog seated alone in a rainy 1950s booth.
Image · Klein 9B references 1280×720 · 12 steps

Scene reference plus subject swap.

Klein 9B used the Krea diner render as the environment reference and a generated dog portrait as the subject reference, then swapped the dog into 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"
First reference image, baseline Krea diner booth render.
Reference A · Diner
Second reference image, generated brown and white dog portrait.
Reference B · Dog
Embeddings · qwen3-0.6b cosine similarity

Same Mac. Semantic search ready.

Three sentences embedded locally. Cosine scores are converted to unit-vector distance, so the plot geometry matches the measured relationships.

real distance plot d = sqrt(2 - 2cos)
A · Scene
rainy 1950s American diner late at night
B · Booth
neon-lit chrome counter and red vinyl booths
C · Outlier
a cat sitting on a windowsill
closer words share more vector direction
A ↔ B
0.510

Diner scene and booth details point in the same local neighborhood.

B ↔ C
0.351

The generic visual phrase still overlaps, but the subject has drifted.

A ↔ C
0.293

The unrelated subject sits farthest from the diner prompt.

The original multimodal diner set was generated by ~/mere/run/demo.sh; the Krea LoRA, SFX, OCR, and Klein reference-image cards were generated from the local source checkout with the same no-cloud rule.