Today we're introducing Muse Ember in Muse Code and on Meta Model API. Built for fast, agentic execution at scale, Muse Ember handles coding tasks, tool calls, and document analysis, with support for text, image, audio, and video inputs.
Muse Ember is now available in all Muse Code subscription plans, and optimized for low price-per-task at $0.10 input / $0.50 output per million tokens. Use it for repeated, bounded work, and pair it with Muse Wonder or Muse Spark for agentic workflows requiring deeper planning, reasoning and orchestration.
Install Muse Code today to start building:
curl -fsSL https://dev.meta.ai/install.sh | bashBelow, we'll look at two ways to use Muse Ember in conjunction with Muse Wonder, a parallel code migration and a batch photo-organization workflow. For more details on the models and their research foundations, check out the Muse Ember post on the Meta AI Research blog.
Use Muse Ember for repeated, bounded work and pair it with Muse Spark or Muse Wonder when a workflow needs deeper planning and reasoning – Muse Wonder tackles the hardest problems, while Muse Ember handles everyday agent workloads, helping make those capabilities practical at scale.
Muse Ember scores 36 on the Artificial Analysis Intelligence Index, and at max reasoning effort, its estimated model cost is about $0.13 per Intelligence Index task.
Muse Ember is competitive in its class across multimodal, agentic, and coding tasks, and outperforms similar-class models on AutomationBench-AA and Terminal-Bench 4.0:
Muse Ember (max)
Claude Haiku 5.5 (max)
GPT-6 Luna (max)
Agents
AutomationBench-AA
E2E business workflows
37.8
13.9
20.2
Agents' Last Exam
End-to-end agent tasks
61.6
57.0
57.1
Personal Superintelligence Index
Internal composite index of personal and knowledge work
46.8
36.1
37.0
Coding
Terminal-Bench 4.0
Agentic terminal coding, best published harness
40.9
39.2
16.4
Coding Agent Index-AA
Coding in real agent harnesses
46
37
31
FrontierCode 2.0-AA
Real engineering tasks judged on mergeability
27.2
34.9
25.2
Multimodal
GDP.pdf-AA
Professional work over long documents
22.8
20.8
22.8
OSWorld 2.1
Computer use across desktop apps
69.5
(partial)
33.8
(binary)
68.9
(partial)
27.8
(binary)
50.5
(partial)
17.0
(binary)
PerceptionBench (w/ tools)
Fine-grained visual perception
80.6
78.6
62.8
General
Artificial Analysis Index
36
36
28
Muse Ember supports text, image, audio and video inputs, so agents can read screenshots, charts and scanned documents, or work from voice memos and meeting recordings without a separate model. You can ask it to interpret a screenshot alongside a bug report, extract information from a scanned document, summarize action items from meeting audio, or describe the sequence of actions shown in a video clip.
When working with Muse Ember, keep the task specific and provide the relevant source material. For example, for an invoice image with a supplied page label:
noneExtract the invoice number, issue date, and total. For each field, return the value, source-page label, and a status of present, missing, or unreadable. Use null when the value is unavailable.
When workflows require pairing high-volume execution with deep planning and reasoning, pair Muse Ember with Muse Wonder or Muse Spark to match task complexity to model capability. One way to structure a coding workflow:
Define the handoff: the task, relevant context, files the worker can change, acceptance checks and the result to return. Your application or agent harness chooses the model for each call and carries that context between steps. When a worker finds a broader dependency or an unclear requirement, send the finding back to the planner before continuing.
Muse Code provides the tools to edit files, run checks and coordinate agents. A direct API call returns model output; your application runs any requested tools and returns their results. The examples below use Muse Code and task-specific scripts to carry out the work.
BOX
“On the Box AI Complex Work Eval, Muse Ember delivers impressive accuracy, speed and token efficiency. It can score a contract against a company's negotiation playbook clause by clause and land on the right overall risk rating, or screen candidates against a detailed brief and flag the borderline ones who still qualify as alternates. Muse Ember is a fast, efficient foundation for agents doing real work on enterprise content.”
YASHODHA BHAVNANI
VP of AI Products
Box
CLINE
“It's incredible seeing Meta release a lightweight model for developers who want a fast, low-cost model they can rely on, and for teams cutting costs by running it as the subagent in their harness. Muse Ember is purpose-built for, and excels at, subagent work like coding and document analysis.”
SAOUD RIZWAN
Founder
Cline
ORACLE
“Muse Ember showed an encouraging ability to tackle complex engineering tasks in our early testing. We see strong potential for it to become a valuable tool for engineering teams.”
KONSTANTINOS PAPAMILTIADIS (KP)
SVP, Global Partnerships
Oracle
CLOUDFLARE
“What stood out in our testing was speed. Muse Ember ran up to 30% faster at the tail than the comparable model we tested, and it handled broad, multi-repo investigation tasks well. It’s a strong fit for fast, high-throughput agentic workloads.”
DANE KNECHT
CTO
Cloudflare
you.com
“Muse Ember completed every coding quest in our testing with the lowest latency of any model we tested: a p95 of 2.2 seconds, about 4x to 13x faster than leading open-weight models, and with 36–48% fewer output tokens. We’re excited about what Meta Superintelligence Labs is building next and about bringing it to our customers.”
CHAK POTHINA
Inference Lead
You.com
Muse Code can run one large model and many small agents in a single session. To show how they work together, we used them on a real code migration: porting 16 language lexers in Pygments, the Python syntax highlighter, from Python to Rust without breaking functionality.
Muse Wonder plans and supervises. The cookbook's starter kit supplies the shared Rust engine every lexer runs on, so the run starts with the checker. Muse Wonder never opens the source itself: one agent reads the Python lexers, the engine and the checker and returns a map of how each lexer fits, and Muse Wonder turns that map into a brief for each agent: which file it owns, which engine interfaces it needs and how to check the result. The map showed that some Python lexers rewrite their token stream after lexing, which the engine couldn't express. Muse Wonder had a worker add a shared post-filter to the engine while the Python example was being ported, before any porter started, and the C, C++, Lua and Swift ports used it. When one worker ran git in the main checkout by mistake, Muse Wonder had two workers clean it up and the run carried on.
Muse Ember does the work in parallel. Sixteen agents each take one lexer in their own copy of the repo. Each agent reads the Python, writes the Rust, checks its port token for token and for speed, fixes failures and commits. Other agents build the checker, write extra test inputs and merge the result. The 16 porters finished within about 6 minutes of each other.
The plan affects every port, so it goes to the larger model. The ports are bounded, file-owned work, so they go to many small agents running at once.
Copy the starter kit from the cookbook and clone the Python reference:
shellgit clone --depth 1 https://github.com/meta-models/meta-model-cookbook.gitcp -r meta-model-cookbook/08_muse_ember/01_python_to_rust/starter-kit pygments-portcd pygments-portgit clone https://github.com/pygments/pygments.git && git -C pygments checkout --detach a43b45dcgit init -q && git add -A && git commit -q -m "Starter kit"(cd pygments-rs && cargo test --release)
Start Muse Code with Muse Wonder as the main model:
shellmuse --model muse-wonder-1.0 \--reasoning-effort high \--agents "$(cat ../meta-model-cookbook/08_muse_ember/01_python_to_rust/agents/agents.json)" \-c agents.execution_capacity=17 \--parallel-tool-calls \--sandbox-network restricted \--trust-workspace \--approval-mode never
The --agents flag loads the worker definition from the cookbook's agents/agents.json:
none{"port-worker": {"description": "Does one well-scoped coding task given in full in its input. Edits only the files the input names, runs the checks the input gives, and commits.","model": "muse-ember-1.0","effort": "max","prompt": "Your input is a complete task brief from the planner. It names the files you own, what to do, and the commands that check your work, each with one exact expected last line. Do the task editing only your owned files. Search and read only inside your workspace or worktree and the pinned pygments/ clone; never search the filesystem root, your home directory or other checkouts. Never run find, locate, grep -r, du or any other recursive scan outside this checkout and its worktrees: scans outside the checkout can hang. Up to 16 workers build on this machine at once: keep build parallelism modest and never override CARGO_BUILD_JOBS from the environment. Run each check once after your last edit. When every check's last line matches its expected line, commit only your owned files in your worktree with a message that starts with the step id, then delete your own worktree's target/ directory (never the main checkout's) and report; never re-run a passing check. If an edit fails with \"no exact match\", re-read that exact file before editing it again. If the same edit, command or failure repeats 3 times, stop, commit what you have with the prefix \"wip:\", and report BLOCKED with the last failing line. Never edit a file the brief does not give you; if the task needs one, stop and report the exact change and why. Before your final answer, stop every command and background process you started. The first line of your final answer is always STATUS: COMMITTED <hash> or STATUS: BLOCKED <reason>; never end without it. Then at most 10 lines: the step id, files changed and the last output line of each check. Never claim a result you did not run.","maxTurns": 120}}
The file also defines general-purpose with the same settings, so any agent Muse Wonder starts without naming a type still runs on Muse Ember.
Then paste the three prompts in order:
Prompts 1 and 3 are in the cookbook. Prompt 2 is where Muse Wonder plans, hands off and supervises. Here are its key lines (the full prompt is in the cookbook):
nonePort these 16 lexers: java, c, cpp, csharp, go, rust, javascript, lua, swift,kotlin, scala, perl, css, haskell, sql, r. Use Muse Ember port-workers for thecoding work; you own the plan, shared engine readiness, handoffs and supervision.… Workers do every source read, diff, merge and long check; you never open sourcefiles or diffs.Before deciding the plan, have one worker read the Python referenceimplementations, the Rust engine and its tests, and the checker, and return a mapof at most 60 lines: how each lexer maps onto the engine, what shared capabilitiesare missing, the gotchas, and what context each worker needs. Write the plan fromit and include concrete source paths, ownership, relevant engine interfaces andvalidation commands in each handoff, so workers don't rediscover the gotchas.Have a worker port Python as the example, and start the input writers at the sametime. … Brief a worker for each shared engine gap while the example runs. …… Each porter works in its own git worktree, one per language, and owns only itslexer file. … It commits only when Rust is no slower than Python and otherwisereports BLOCKED. …While the porters run, act on STATUS lines. When a worker reports a blockeroutside its files, start the shared fix before waiting on anyone else. … Neverweaken the checker, drop test inputs, or treat partial results as success.One merge worker owns all merging … After the merge you run each benchmark once onthe merged tree. …… Once provided, score heldout/<alias> for each language without code changes inresponse. … Stop with the report: no extra languages, PRs or pushes.
When the run finishes, check any language yourself:
shellpython3 pygments-rs/tools/diff.py --lexer go # SCORE line should show fail=0python3 pygments-rs/tools/bench.py --lexer go # checks the tokens match, then times Python and Rust
All 16 lexers matched Python on every one of 383 test inputs and on 62 of 62 real files from 18 public repositories, supplied only after the code was frozen. The Rust commands ran 3.0 to 7.3 times faster than Python on about 1 MB of input. Muse Ember handled 158M input tokens to Muse Wonder's 4.4M, and the run cost about $3.96 at pay-as-you-go prices: $2.12 for Muse Wonder and $1.84 for Muse Ember. Results vary from run to run.
The full recipe, with all three prompts and the starter kit, is in the Meta Model Cookbook.
Many agent jobs are one small decision repeated thousands of times. To show how Muse Wonder and Muse Ember split that kind of job, we gave Muse Code a folder of 10,000 photos, with no instructions or scripts, and a one-line prompt: caption, rename and sort every photo into albums.
Muse Wonder makes the decisions that shape the job. It captions a small sample to choose the albums, writes and tests one pipeline script, and starts 16 agents in one step, each with a shard of photos. When they finish, it checks that every photo is filed.
Muse Ember does the volume. Each agent runs the script on its shard. The script sends eight photos per request to Muse Ember, which returns a caption and an album for each, so IMG_00126.jpg becomes Food-and-Drink/a-pile-of-fresh-green-beans-fills-the-frame_IMG_00126.jpg.
All 10,000 photos were captioned, renamed and sorted into albums for $1.59 in total, and only $0.50 of that was Muse Ember.
Get the cookbook and a small set of photos, set your key, and start the run:
shellgit clone --depth 1 https://github.com/meta-models/meta-model-cookbook.gitcd meta-model-cookbook/08_muse_ember/02_organizing_images_with_subagentspip install -r requirements.txtpython3 prepare/fetch_photos.py --limit=160 # drop --limit for all 10,000 photosexport MODEL_API_KEY="LLM|..."export META_API_KEY="$MODEL_API_KEY" # Muse Code (or run muse login)export EMBER_MODEL="muse-ember"./run.sh
run.sh starts Muse Code inside workspace/, so Muse Wonder sees only the photos. Simplified, it runs:
shellmuse --model muse-wonder-1.0 --reasoning-effort low \--agents "$AGENTS" -c agents.execution_capacity=17 \-c 'run.workflow_trigger_mode="off"' \--parallel-tool-calls --yolo \"$PROMPT"
--yolo approves the agents' shell commands without asking and the agents can read MODEL_API_KEY because the pipeline they write needs it. Run it only in the sample folder, with a key you're comfortable giving to an agent. The --agents flag passes a generic worker that runs on Muse Ember and knows nothing about photos. Muse Wonder writes its task:
none{"ember-worker": {"description": "A muse-ember worker for one bounded, fully specified task. Give it the complete task: the files it owns, the commands to run, and what to report.","model": "muse-ember","effort": "low","maxTurns": 20,"prompt": "Do exactly the task in your input. Edit only the files it names, run the commands it gives, fix your own files if a command fails, and report the result in one short line. Never claim a result you did not run."}}
The prompt is one line:
noneCaption, rename and sort all the photos in Photos/Inbox into albums. First caption a small sample to choose the albums, then write one pipeline script in the workspace that sends 8 photos per muse-ember request at 512 px with minimal reasoning effort, and have 16 muse-ember subagents run it in parallel on their shards. The Model API is OpenAI-compatible: base URL in $MODEL_API_BASE, key in $MODEL_API_KEY, model id in $EMBER_MODEL.
All 10,000 photos were captioned, renamed and sorted into 8 albums with no failed requests. Mapped to the closest categories in the dataset's own labels, the albums agreed for about 86% of photos. The whole job cost $1.33: $0.81 for Muse Wonder and $0.52 for Muse Ember. At the Muse Wonder prices, the same photo requests would have cost about $20.
The full recipe, with the launcher, a photo downloader and the pipeline Muse Wonder wrote in our run, is in the Meta Model Cookbook.
Already have an existing project built around the OpenAI SDK? You’re just one base_url change away from generating your first API call with Muse Ember. Generate an API key at dev.meta.ai, point your existing OpenAI-compatible client at Model API, keep your code and set the model to muse-ember-1.0.
If this is your first time building with Muse models, the Meta Model Cookbook walks you through the basics and best practices, so you can get started quickly.
Whether you’re starting a new build with Muse Ember or just getting started with Meta Model API, we can’t wait to see what you build.
Start building with Muse Ember | Read the API quickstart | Get started with Muse Code
Install the dependencies and set your key:
shellpip install openai requestsexport MODEL_API_KEY="LLM|..."
The endpoints mirror the OpenAI Images API, so if you already have an OpenAI client, point base_url at Meta Model API and keep the code you have:
pythonimport base64import osfrom openai import OpenAI# The OpenAI SDK does not auto-read MODEL_API_KEY, so pass it explicitly.client = OpenAI(base_url="https://api.meta.ai/v1",api_key=os.environ["MODEL_API_KEY"],)def save_image(b64: str, path: str) -> None:"""Decode a base64 image from the API and write it to disk."""with open(path, "wb") as f:f.write(base64.b64decode(b64))print(f"saved {path}")