ember MCP server
2026년 11월 14일 커밋코딩 에이전트가 질문을 하거나 작업을 수행할 시점을 결정할 수 있도록 보정된 확률 점수를 제공합니다.
다른 이름 shapeandshare/ember, ember-advise
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.16.0
- 마지막 커밋
- 2026년 11월 14일
- 라이선스
- MIT
ember MCP란?
ember은(는) MCP server입니다. 코딩 에이전트가 질문을 하거나 작업을 수행할 시점을 결정할 수 있도록 보정된 확률 점수를 제공합니다.
프로젝트 README에서 생성된 요약
ember MCP server 정보
Ember는 코딩 에이전트가 질문을 하거나 작업을 수행할 시점을 결정할 수 있도록 보정된 확률 점수를 제공합니다. 에이전트는 불확실성을 추론하기 위해 채팅 모델에 의존하는 대신, advise 도구를 사용하여 변경 사항이 안전할 확률을 백분율로 나타내는 수치화된 제2의 의견을 받습니다. 이를 통해 불필요한 중단을 방지하고 검증되지 않은 변경을 수행할 위험을 줄일 수 있습니다.
개발자는 32 GB 이상의 메모리를 갖춘 Apple Silicon Mac에서 모델을 로컬로 실행하거나, NVIDIA GPU가 있는 자체 서버에 호스팅하거나, URL을 통해 원격 서버에 연결할 수 있습니다. 이 시스템은 Cloudflare의 Clef-Flash 결정 모델을 사용하며 Claude Code, Codex, opencode, Kilo Code와 같은 에이전트와 함께 작동하도록 설계되었습니다. MCP server는 도구가 호출될 때만 별도의 모델 서버를 시작하므로 가볍게 유지되며, 설정 시 빠른 핸드셰이크를 보장합니다.
활용 사례
- 1변경 안전성 평가AI 에이전트가 코드를 저장소에 푸시하기 전에 코드 수정의 위험 수준을 확인할 수 있습니다.
- 2테스트 실패 분류개발자가 에이전트를 통해 감지된 테스트 실패가 개입이 필요한 실제 문제인지 판단할 수 있습니다.
- 3에이전트 중단 감소코딩 어시스턴트가 확률 점수를 사용하여 작업을 계속 진행할지 아니면 중단하고 사용자에게 질문할지 결정할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
ember MCP 설치 방법
형식 확인: 2026년 11월 10일Claude Code에 ember MCP 설치
$ claude mcp add --env EMBER_AUTH_TOKEN=<YOUR_EMBER_AUTH_TOKEN> ember -- uvx ember-adviseCursor에 ember MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"ember": {
"command": "uvx",
"args": [
"ember-advise"
],
"env": {
"EMBER_AUTH_TOKEN": "<YOUR_EMBER_AUTH_TOKEN>"
}
}
}
}VS Code에 ember MCP 설치
.vscode/mcp.json
{
"servers": {
"ember": {
"type": "stdio",
"command": "uvx",
"args": [
"ember-advise"
],
"env": {
"EMBER_AUTH_TOKEN": "<YOUR_EMBER_AUTH_TOKEN>"
}
}
}
}Claude Desktop에 ember MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"ember": {
"command": "uvx",
"args": [
"ember-advise"
],
"env": {
"EMBER_AUTH_TOKEN": "<YOUR_EMBER_AUTH_TOKEN>"
}
}
}
}Codex에 ember MCP 설치
~/.codex/config.toml
[mcp_servers.ember] command = "uvx" args = ["ember-advise"] [mcp_servers.ember.env] EMBER_AUTH_TOKEN = "<YOUR_EMBER_AUTH_TOKEN>"
Gemini CLI에 ember MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"ember": {
"command": "uvx",
"args": [
"ember-advise"
],
"env": {
"EMBER_AUTH_TOKEN": "<YOUR_EMBER_AUTH_TOKEN>"
}
}
}
}구성
EMBER_AUTH_TOKEN비밀Credential for a remote inference endpoint
EMBER_AUTOSTARTEMBER_DEVICEEMBER_HOSTEMBER_MODEL_S3_URIEMBER_SERVER_URLInference endpoint; defaults to the local model server at http://127.0.0.1:8765
| 이름 | 설명 | 유형 |
|---|---|---|
| EMBER_AUTH_TOKEN | Credential for a remote inference endpoint | 비밀 |
| EMBER_AUTOSTART | — | |
| EMBER_DEVICE | — | |
| EMBER_HOST | — | |
| EMBER_MODEL_S3_URI | — | |
| EMBER_SERVER_URL | Inference endpoint; defaults to the local model server at http://127.0.0.1:8765 |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능shapeandshare/ember is public and reachablegithub.com/shapeandshare/ember ↗통과
- 패키지가 이 저장소를 소스로 지정ember-advise names shapeandshare/ember as sourcepypi.org/project/ember-advise/ ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-06github.com/shapeandshare/ember ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from ember-advise통과
- 패키지와 의존성에 심각한 보안 권고 없음Critical advisory: GHSA-332p-7hrc-92wf, GHSA-5x8w-8jj5-q52h, GHSA-8g5g-8vmr-9782osv.dev/vulnerability/GHSA-332p-7hrc-92wf ↗결함 발견
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 endpoint가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기A gut feeling for coding agents. AI coding assistants like Claude Code, Codex, opencode, and Kilo Code constantly have to decide: start now or ask a question first? Is this test failure real? Is this change safe to push? ember is a small add-on that gives them a quick second opinion at those moments, as a number ("93% likely this needs review"), so they stop interrupting you needlessly and stop making risky changes without asking. You don't call it yourself; your assistant does. It's free and open source, and you choose where the model runs: on your Apple Silicon Mac (32 GB of memory or more, a one-time ~18 GB download), on a server you host, or on one your team already runs. ember advises; the agent decides.
Under the hood, ember runs Cloudflare's Clef-Flash decision model, from its
public Hugging Face repo, and exposes it
as one MCP tool, advise, that returns a calibrated probability for every option.
Website: shapeandshare.github.io/ember
Ways to run ember
All three are supported equally; ember init asks which one you want.
| On your Mac | On a server you host | On a server someone else runs | |
|---|---|---|---|
| Where the model runs | your Apple Silicon Mac | a Mac or an NVIDIA GPU machine you run | wherever its operator runs it |
| Where your requests go | nowhere: they stay on your Mac | your server | that server |
| What you need | 32 GB of memory, ~18 GB of disk | the server: as for local, or a CUDA GPU; clients: only its address | its address, and a token if it asks for one |
| Set up with | ember model pull, then ember init |
Remote inference or Hosted deployment | ember init --server-url URL |
Nothing is ever sent to a server you didn't configure. Without a terminal to ask (a script,
CI), ember init sets up local inference; --local or --server-url answer the question up
front.
How it works
A decision model is not a chat model: it takes a state plus a schema of typed
questions and returns one probability per option, with no text generation. So ember
plugs into agents as a tool, while their reasoning stays on their normal LLM:
- The model server (
ember/serving/server.py) loads the model once and stays warm across agent sessions. - The MCP server (
ember/mcp/mcp_server.py) never loads the model; it starts the model server on the first tool call, so the MCP handshake stays instant.
Names
| Thing | Name |
|---|---|
| Product, Python import, repository | ember |
Distribution (uv tool install, PyPI) |
ember-advise, because ember is taken on PyPI and gut is held by an empty project |
| CLI | ember (short alias: gut; ember-advise too, so uvx ember-advise mcp works) |
| MCP server / command | ember / ember-mcp |
| Tool | advise — opencode: ember_advise; Claude Code: mcp__ember__advise (plugin: mcp__plugin_ember_ember__advise); Kilo Code: ember_advise |
| Playbook skill / MCP resource | ember-advise / ember://guide |
| Environment variables | EMBER_* |
"Clef" always refers to Cloudflare's upstream model, never to this product. Select a model
with ember model pull <name> / EMBER_MODEL=<name>; run ember model list to see every
registered entry (flash, full).
A hosted deployment (e.g. Outerbounds) that supplies the model's S3 location directly at start time doesn't use this registry at all — see "Hosted deployment: a model location supplied at start time" below.
Verified
Tested versions and hardware are in COMPATIBILITY.md. Current accuracy and latency, from the latest tracked benchmark run, are on the benchmark report.
Install (Apple Silicon)
Requirements
To use a server someone else runs, you need only Python 3.12 (managed by uv) and the
server's address; skip ember model pull. To run the model yourself:
- Apple Silicon Mac (M-series) on macOS for local use (MPS). Intel Macs remain out of
scope. For a hosted deployment on NVIDIA/CUDA compute (e.g. Outerbounds), see "Hosted
deployment" below and
deployment/README.md. - Unified memory above the model's size: 32 GB or more for
flash(9B), 96 GB or more forfull(27B). Only 128 GB has been verified. - Disk: about 18 GiB for
flashor 55 GiB forfull, in Hugging Face's shared cache (~/.cache/huggingface). Config, state, and logs live in~/Library/Application Support/ember. - Python 3.12, managed by uv.
uv tool install --python 3.12 ember-advise
ember model pull # ~18 GB, resumable, disk-space checked
ember doctor # platform, dependencies, model, server, and agent registration
ember init --opencode --global # register with opencode for every repo on this machine
Keep --python 3.12: uv otherwise picks your newest interpreter, which the pinned
torch/transformers stack is not tested on.
This installs the latest released wheel from PyPI.
To pin a specific release tag from GitHub instead (no PyPI required):
uv tool install --python 3.12 "ember-advise @ git+https://github.com/shapeandshare/ember@v0.16.0"
The repository is public, so the git install needs no credentials. To use SSH instead,
install from git+ssh://git@github.com/shapeandshare/ember@v0.16.0.
If you manage Python with conda, mamba, or pixi, install the same tool from the interim
joshburt channel on Anaconda.org (it moves to conda-forge once that feedstock lands):
conda install -c joshburt -c conda-forge ember-advise # mamba and pixi take the same flags
Installed ember before the rename, as gut? Run uv tool uninstall gut first: both
distributions provide the same commands.
Restart opencode and every repo on this machine gains ember_advise. The model server
stays lazy — it starts on the first tool call (or with ember start).
Per-project skill and policy (run once in each repo you want ember-aware agents):
cd /path/to/your/repo
ember agents install --agent opencode # installs the ember-advise playbook skill
ember agents show snippet >> AGENTS.md # then edit the project policy block at the end
The skill teaches the agent when to consult ember and how to ask; the AGENTS.md snippet adds a project-specific policy you customize (e.g. "check change risk before every push"). See Agent onboarding below for all harnesses and options.
flash targets the commit verified on MPS (17f0b0a) and full its release commit
(2f3de3d, not yet verified locally) as a download convenience, and torch/torchvision are
pinned to the tested minor series — but ember does not restrict itself to a hand-maintained
allowlist of individually verified weights; it runs any model that fits its loader contract
(constitution Article V, "Model Loading"). Set EMBER_MODEL_DIR to run another weights
directory.
Cloud
ember is Apple-Silicon-first locally, and supports NVIDIA GPUs for hosted deployment
(constitution Article VI, "Apple Silicon and CUDA") — three devices total: run it on an
Apple Silicon host with the memory above (MPS), on an NVIDIA GPU host (EMBER_DEVICE=cuda,
float16 — see "Hosted deployment: a model location supplied at start time" and
deployment/README.md for a full Outerbounds example), or on any host with the CPU fallback
(EMBER_DEVICE=cpu — float32, roughly twice the memory, much slower). The HTTP server binds
to loopback by default; to serve other machines set EMBER_HOST and set
EMBER_SERVER_AUTH_TOKEN to require Authorization: Bearer <token> (or any header name via
EMBER_AUTH_HEADER, e.g. x-api-key, on the client side). Ember does not terminate TLS —
front a remote-serving
deployment with a proxy. Clients point at it with EMBER_SERVER_URL. See
COMPATIBILITY.md and SECURITY.md.
Agent onboarding
Installing the tool is half the job; the other half is making agents want to consult it
at the right moments and read its answers sensibly. ember/agent_kit/ ships that
guidance through every channel each agent actually reads:
| Channel | opencode | Kilo Code | Claude Code | Codex CLI | How you get it |
|---|---|---|---|---|---|
| MCP server instructions (when to consult, how to ask, how to read answers) | ✅ in the system prompt | ✅ in the system prompt | ✅ (2 KB cap) | — | built in, nothing to do |
ember://guide resource (full playbook) |
✅ via read_mcp_resource |
✅ via read_mcp_resource |
✅ | — | built in |
ember-advise skill (playbook, loaded on demand) |
✅ | ✅ | ✅ | ✅ | ember agents install --agent <agent> |
| AGENTS.md / CLAUDE.md policy block | ✅ | ✅ | ✅ (CLAUDE.md) | ✅ | ember agents show snippet >> AGENTS.md |
ember init --opencode # opencode: config entry, plugin, and skill
ember init --kilocode # Kilo Code: kilo.json entry and skill
ember init --codex # Codex CLI: .codex/config.toml entry and skill
ember agents install --agent claude # .claude/skills/ember-advise/SKILL.md
ember agents install --agent codex # .agents/skills/... (opencode reads this too)
ember agents show snippet >> AGENTS.md # then edit the project policy at the end
The skill is a playbook, not a reference card: the decision points worth consulting ember about, copy-paste question sets for intent and readiness, failure triage, change risk, routing, and effort, and starting confidence thresholds calibrated from observed model output (re-measured whenever the pinned model revision changes). The snippet ends with a project policy — edit it to wire ember into your own workflow, e.g. "check change risk before every push".
Agent-specific notes:
-
opencode reads skills from
.opencode/skills,.claude/skills, and.agents/skills, so install one copy per project to avoid duplicate listings. -
Kilo Code:
ember init --kilocodewrites themcp.emberentry tokilo.json(same config shape as opencode) and installs the skill to.kilo/skills/ember-advise/SKILL.md; the tool appears asember_advise. Kilo Code also readsAGENTS.mdautomatically. -
Claude Code: register the server with
claude mcp add --scope user ember -- ember-mcp(every project; drop--scope userto register it for the current project only); the tool appears asmcp__ember__advise. Or install the ember plugin, which bundles the MCP entry and theember-adviseskill (so skipember agents install --agent claude):claude plugin marketplace add shapeandshare/ember claude plugin install ember@emberThe plugin still runs the
ember-mcpyou installed withuv tool install, and its tool appears asmcp__plugin_ember_ember__advise. Use one route, not both, or the tool is listed twice. -
Codex CLI:
ember init --codexwrites[mcp_servers.ember]to.codex/config.toml(--global:~/.codex/config.toml, or$CODEX_HOME/config.toml) and installs the skill to.agents/skills/ember-advise/SKILL.md. Codex loads a project.codex/config.tomlonly for a trusted project, andember init --codextells you whether this one is. The entry forwardsEMBER_AUTH_TOKENby name (env_vars), never by value. Support for MCP server instructions and resources is unconfirmed, so rely on the skill and the AGENTS.md snippet there.
Check what's registered
ember doctor closes with two lines per harness: its binary on PATH, and where ember is
registered for it — in this directory and globally — or the command that registers it. It
only reads each harness's config files; it never runs a harness CLI.
| Harness | Register | Project scope | Global scope | doctor also flags |
|---|---|---|---|---|
| opencode | ember init --opencode [--global] |
opencode.json, .opencode/plugins/ember.js |
~/.config/opencode/opencode.json, ~/.config/opencode/plugins/ember.js |
a leftover mcp.vault entry from older ember init versions |
| Kilo Code | ember init --kilocode [--global] |
kilo.json |
~/.config/kilo/kilo.json |
— |
| Codex CLI | ember init --codex [--global] |
.codex/config.toml |
~/.codex/config.toml |
a project file Codex ignores because the project isn't trusted |
| Claude Code | claude mcp add --scope user ember -- ember-mcp, or the ember@ember plugin |
.mcp.json (--scope project); ~/.claude.json per project (--scope local); enabledPlugins in .claude/settings.json / settings.local.json |
~/.claude.json; enabledPlugins in ~/.claude/settings.json |
a project .mcp.json, which Claude Code asks you to approve |
Each harness has its own check too: opencode mcp list, codex mcp list, claude mcp list.
Older ember init versions also added this repository's vault MCP server to every config
they wrote; if you ran ember init --global, doctor points at the leftover entry in your
global opencode config so you can delete it.
ember init records the ember-mcp it finds on your PATH, falling back to the Python
that runs it, so run ember init --global from the installed tool (uv tool install …)
rather than a checkout's .venv. It merges into existing configs and refuses to rewrite one
it can't parse (an opencode.json with comments, say), leaving that file untouched.
CLI
gut is a short alias for every command below.
# lifecycle
ember doctor # platform, dependencies, model, server, agent registration
ember serve # run the model server in the foreground
ember start | stop | restart | status | logs
ember config path | show
ember uninstall [--purge-models] # also removes global opencode/Kilo Code/Codex and skill installs
# models
ember model pull [flash|full] # flash = 9B (default)
ember model list | path [name] | rm [name]
# opencode, Kilo Code, Codex CLI, and agents
ember init [--opencode] [--kilocode] [--codex] [--global] [--local | --server-url URL] [--auth-header NAME]
ember agents install [--agent opencode|claude|codex|kilocode] [--global]
ember agents show instructions|skill|snippet
ember mcp # the MCP stdio server agents launch
Usage
Ask the agent in natural language — "Is this bug report urgent, and which team should own
it?" — and it calls ember_advise with a state and typed questions:
{
"model": "clef-flash",
"answers": {
"urgent": { "type": "noul", "noul": 0.967 },
"team": {
"type": "choice",
"choice": "db",
"confidence": 0.9782,
"probabilities": { "db": 0.9782, "frontend": 0.0218 }
}
},
"usage": {
"input_tokens": 220, "output_tokens": 0,
"state_tokens": 34, "fixed_tokens": 186, "media_tokens": 0
},
"latency_ms": 930.9
}
Question types: noul (yes/no → P(true)), choice (named options), score (ordered options →
expected score plus legend). The model field echoes the upstream model label. usage
splits input_tokens into the state, the fixed overhead (questions, schema, prompt wrapper),
and any media, so a caller can see what each part of a request cost; the benchmark harness
requires this split.
When the evidence is visual, attach images or video frames inline: images is a list of
data:image/png;base64,... URIs (or {"content_type": "image/png", "base64": "..."}
objects), and videos is a list of videos, each a list of frame refs. Remote URLs and local
paths are rejected — the model server never reads host files or fetches URLs for an agent.
Configuration
Settings resolve as CLI flag > environment variable > config file > default. The config file
is JSON at ember config path (keys model, host, port, device, max_length,
server_url, auth_token, auth_header, allow_insecure_transport, request_timeout,
server_auth_token, max_request_length; a max_length of 0 means the model's own
maximum, and an unset max_request_length means the loaded model's own default cap).
| Variable | Default | Purpose |
|---|---|---|
EMBER_HOST / EMBER_PORT |
127.0.0.1 / 8765 |
Local model server bind address |
EMBER_DEVICE |
auto |
auto, mps, cuda, or cpu |
EMBER_TORCH_DISABLE_NATIVE_JIT |
1 |
Disables torch 2.14's torch._native Triton-backed op overrides (e.g. a aten::bmm outer-product specialization Qwen3.5's RoPE forward hits on CUDA), which JIT-compile via a C compiler that a minimal CUDA container (e.g. Outerbounds' Fast Bakery) usually lacks — without this, the first real CUDA request fails with RuntimeError: Failed to find C compiler. Set to 0 on a host with a working compiler toolchain to opt back into the (likely faster) Triton path; has no effect on MPS/CPU |
EMBER_MODEL |
flash |
flash (9B, default) or full (27B), both from Cloudflare's public Hugging Face repos |
EMBER_MODEL_DIR |
— | Run weights from this directory instead of the pinned cache |
EMBER_MAX_LENGTH |
0 (the model's maximum: 262,144) |
The most tokens the model processes; 0 derives it from the model's config.json, and a larger value is clamped to it |
EMBER_MAX_REQUEST_LENGTH |
unset: the loaded model's own default, its measured cap or, until measured, its fallback, the longest length that leaves 4 GiB of its memory budget free (24,576 for flash, 65,536 for full). A model outside the registry (EMBER_MODEL_DIR, EMBER_MODEL_S3_URI) gets the lowest registry cap, 24,576 today |
Per-request cap on the whole encoded request (state, media, questions, schema, prompt wrapper), checked before inference. A request over it is refused with a 413 that states its token split, never truncated. 0 disables the cap; the maximum still applies |
EMBER_SERVER_URL |
http://127.0.0.1:8765 |
Inference endpoint the client sends to; loopback by default, may be remote |
EMBER_AUTH_TOKEN |
— | Client credential for a remote endpoint |
EMBER_AUTH_HEADER |
Authorization |
Header carrying the credential; Authorization sends Bearer <token>, any other name sends the token verbatim |
EMBER_ALLOW_INSECURE_TRANSPORT |
0 |
Allow plaintext http to a non-loopback endpoint (off by default) |
EMBER_REQUEST_TIMEOUT |
900 |
Seconds the MCP client waits for each advise request, local or remote. A request near full's cap takes about 12 minutes on an M4 Max, and requests run one at a time, so raise this if long full requests overlap |
EMBER_SERVER_AUTH_TOKEN |
— | When set, the server requires Authorization: Bearer <token> on /v1/systemone |
EMBER_AUTOSTART |
1 |
Let the MCP server start a local server on demand (loopback only) |
EMBER_START_TIMEOUT |
300 |
Seconds to wait for the model server to start |
EMBER_STATE_DIR |
Application Support | Where the pid file and logs live |
EMBER_MODEL_S3_URI |
— | An s3://bucket/prefix URI naming the exact model location to load — for a deployment (e.g. Outerbounds) that supplies the model's S3 location at start time instead of a REGISTRY key. See "Hosted deployment: a model location supplied at start time" below. |
EMBER_S3_ACCESS_KEY_ID / EMBER_S3_SECRET_ACCESS_KEY |
— | AWS credentials for EMBER_MODEL_S3_URI. Optional — when unset, boto3's own default credential chain applies (an IAM role attached to the compute, e.g. Outerbounds; env vars; ~/.aws/credentials). Set explicitly only where no role is attached (e.g. a local developer machine) |
EMBER_S3_REGION |
— | AWS region passed to the S3 client |
ember doctor and GET /health (engine) report the limits in force and where each came
from: the model, a fallback, an operator setting, or a measured default.
Hosted deployment: a model location supplied at start time
Some deployments (e.g. an Outerbounds app) supply the model's S3
location directly at start time, rather than selecting a REGISTRY entry. Set:
export EMBER_MODEL_S3_URI=s3://my-bucket/clef-flash
export EMBER_DEVICE=cuda # Outerbounds compute is Linux — no MPS; cuda is the GPU path
ember serve # foreground, container-friendly (not `ember start`)
No AWS credentials need to be set explicitly when the compute already has an IAM role
attached (the expected case on Outerbounds) — boto3's default credential chain picks it up automatically. Set
EMBER_S3_ACCESS_KEY_ID/_SECRET_ACCESS_KEY explicitly only where no role is
attached.
This is checked once at startup, before the server begins serving, and takes priority over
EMBER_MODEL/the model config key entirely — there is no REGISTRY lookup for this path.
ember supports any model that can run under its loader contract (constitution Article V,
"Model Loading"); it is not a hand-maintained allowlist of individually hash-verified weights,
so a URI-supplied location loads directly, with no pin or hash to check against.
Complete Outerbounds deployment examples — flash.yaml/full.yaml (one per model, since
they need different compute), a generated requirements.txt, and a
make deployment-requirements target — live in deployment/.
Remote inference
Run one server and share it: with your team, with CI, or with a second Mac that lacks the memory for the model. Start the server on the host and point each client at it.
On the host machine (the one with the model)
# Bind to all interfaces so other machines can reach it
EMBER_HOST=0.0.0.0 ember start
# Recommended: also require a bearer token so only your client can use it
EMBER_HOST=0.0.0.0 EMBER_SERVER_AUTH_TOKEN=your-secret ember start
Ember does not terminate TLS. On a trusted LAN, plain HTTP is fine (see the client note
below). Over the internet, put a TLS proxy (nginx, Caddy) in front and use https://.
On the client machine (the one running the agent)
export EMBER_SERVER_URL="http://<host-ip>:8765" # use https:// if behind a TLS proxy
export EMBER_AUTH_TOKEN="your-secret" # matches EMBER_SERVER_AUTH_TOKEN on the host
export EMBER_AUTOSTART=0 # nothing local to start
ember status # reports remote endpoint + reachability
Plain http to a non-loopback host is refused by default; set
EMBER_ALLOW_INSECURE_TRANSPORT=1 to allow it on a trusted LAN. Credentials may also be
sent as a custom header (EMBER_AUTH_HEADER=X-API-KEY). ember status / ember doctor
report the endpoint kind, reachability, the remote's advertised auth_required, and whether
a credential is configured; reverting to local is a single change (unset these variables).
ember MCP 질문
ember MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env EMBER_AUTH_TOKEN=<YOUR_EMBER_AUTH_TOKEN> ember -- uvx ember-advise를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
ember MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
ember가 코딩 에이전트에게 어떤 역할을 하나요?
에이전트가 작업을 수행할지 아니면 질문을 할지 결정할 수 있도록 보정된 확률(예: '검토가 필요할 확률 93%') 형태의 빠른 제2의 의견을 제공합니다.
모델을 어디에서 실행할 수 있나요?
Apple Silicon Mac에서 로컬로 실행하거나, 자체 호스팅 서버(Mac 또는 NVIDIA GPU), 또는 제3자가 제공하는 호스팅 서버에서 실행할 수 있습니다.
Mac에서 로컬로 실행하기 위한 하드웨어 요구 사항은 무엇인가요?
flash 모델의 경우 최소 32 GB 이상의 통합 메모리를 갖춘 Apple Silicon Mac이 필요하며, full 모델의 경우 96 GB가 필요합니다.