Homebrew
brew install ensemblework/tap/ensemblebrew uninstall ensembleEnsemble CLI + MCP
Install the CLI to sign in, share folders, run assigned tasks, and let your editor read Ensemble through MCP. Prefer no install? Use the hosted MCP URL with a read-only key.
Install
Homebrew, Scoop and the scripts install the full CLI and runner. The npm package is for login and MCP only.
brew install ensemblework/tap/ensemblebrew uninstall ensemblecurl -fsSL https://ensemblework.com/install.sh | shensemble runner uninstall
rm -rf ~/.local/share/ensemble-cli ~/.local/bin/ensembleRequires Node 20+. MCP and login only; no runner.
npm install -g ensemblework
npx -y ensemblework mcpnpm uninstall -g ensembleworkirm https://ensemblework.com/install.ps1 | iexensemble runner uninstall
Remove %LOCALAPPDATA%\Programs\Ensemblescoop bucket add ensemblework https://github.com/ensemblework/scoop-bucket
scoop install ensemblework/ensemblescoop uninstall ensembleComing soon (in review).
winget install EnsembleWork.EnsembleCLIwinget uninstall EnsembleWork.EnsembleCLIRequires Node 20+. MCP and login only; no runner.
npm install -g ensemblework
npx -y ensemblework mcpnpm uninstall -g ensembleworkcurl -fsSL https://ensemblework.com/install.sh | shensemble runner uninstall
rm -rf ~/.local/share/ensemble-cli ~/.local/bin/ensemblebrew install ensemblework/tap/ensemblebrew uninstall ensembleOpen the releases page and filter tags starting cli-v.
Download ensemble-cli_<version>_amd64.deb (or arm64) from the latest CLI release
sudo apt install ./ensemble-cli_*_amd64.debsudo apt remove ensemble-clisudo dnf install ./ensemble-cli-*.x86_64.rpmsudo dnf remove ensemble-clisudo zypper install ./ensemble-cli-*.x86_64.rpmsudo zypper remove ensemble-cliComing soon.
ensemble-cli-binRemove ensemble-cli-bin with your AUR helperRequires Node 20+. MCP and login only; no runner.
npm install -g ensemblework
npx -y ensemblework mcpnpm uninstall -g ensembleworkReleases live on GitHub Releases. Filter tags starting cli-v, download the archive or package for your CPU, then verify it against SHA256SUMS.txt.
The full CLI installs the ensemble command, a bundled Node runtime, the local runner sidecar, and a user-level runner service when you run ensemble runner install. It does not need sudo for script installs.
Run tasks
Start with login. Then share a repo folder, add the model key this computer should use, and install or start the runner.
ensemble login
ensemble folders add ~/code/my-repo
ensemble keys set google
ensemble runner installensemble runner startUseful checks: ensemble status, ensemble doctor, and ensemble update.
MCP
Local MCP uses ensemble mcp. Hosted MCP uses https://api.ensemblework.com/mcp with header Authorization: Bearer <ens_ key>. Keys come from the Connect page and use the read-only bridge scope.
Config file: macOS ~/Library/Application Support/Code/User/mcp.json, Windows %APPDATA%\Code\User\mcp.json, Linux ~/.config/Code/User/mcp.json.
ensemble mcp setup vscode{
"servers": {
"ensemble": {
"type": "stdio",
"command": "ensemble",
"args": [
"mcp"
]
}
}
}{
"servers": {
"ensemble": {
"type": "http",
"url": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}Config file: ~/.cursor/mcp.json, or %USERPROFILE%\.cursor\mcp.json on Windows.
ensemble mcp setup cursor{
"mcpServers": {
"ensemble": {
"command": "ensemble",
"args": [
"mcp"
]
}
}
}{
"mcpServers": {
"ensemble": {
"url": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}Config file: ~/.codeium/windsurf/mcp_config.json.
ensemble mcp setup windsurf{
"mcpServers": {
"ensemble": {
"command": "ensemble",
"args": [
"mcp"
]
}
}
}{
"serverUrl": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}Use the absolute path printed by `ensemble mcp setup --print`, typically /opt/homebrew/bin/ensemble or ~/.local/bin/ensemble.
ensemble mcp setup claude-desktop{
"mcpServers": {
"ensemble": {
"command": "/opt/homebrew/bin/ensemble",
"args": [
"mcp"
]
}
}
}Hosted URL is not supported yet for Claude Desktop custom connectors; they need OAuth. Use the CLI local server.ensemble mcp setup claude-codeclaude mcp add --scope user ensemble -- ensemble mcpclaude mcp add --scope user --transport http ensemble https://api.ensemblework.com/mcp --header "Authorization: Bearer KEY"Config file: ~/.codex/config.toml.
ensemble mcp setup codex[mcp_servers.ensemble]
command = "ensemble"
args = ["mcp"]export ENSEMBLE_TOKEN=KEY
[mcp_servers.ensemble]
url = "https://api.ensemblework.com/mcp"
bearer_token_env_var = "ENSEMBLE_TOKEN"Config file: ~/.gemini/settings.json.
ensemble mcp setup gemini{
"mcpServers": {
"ensemble": {
"command": "ensemble",
"args": [
"mcp"
]
}
}
}{
"mcpServers": {
"ensemble": {
"httpUrl": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}Config file: ~/.copilot/mcp-config.json.
ensemble mcp setup copilot-cli{
"type": "local",
"command": "ensemble",
"args": [
"mcp"
],
"tools": [
"*"
]
}{
"type": "http",
"url": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
},
"tools": [
"*"
]
}Settings file: macOS/Linux ~/.config/zed/settings.json, Windows %APPDATA%\Zed\settings.json.
ensemble mcp setup zed{
"context_servers": {
"ensemble": {
"source": "custom",
"command": "ensemble",
"args": [
"mcp"
],
"env": {}
}
}
}{
"context_servers": {
"ensemble": {
"source": "custom",
"url": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}Config file: %USERPROFILE%\.mcp.json.
ensemble mcp setup visual-studio{
"servers": {
"ensemble": {
"type": "stdio",
"command": "ensemble",
"args": [
"mcp"
]
}
}
}{
"servers": {
"ensemble": {
"type": "http",
"url": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}AI Assistant / Junie: Settings → Tools → AI Assistant → Model Context Protocol (MCP) → Add → As JSON.
ensemble mcp setup jetbrains --print{
"mcpServers": {
"ensemble": {
"command": "ensemble",
"args": [
"mcp"
]
}
}
}{
"mcpServers": {
"ensemble": {
"url": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}MCP Servers → Configure → cline_mcp_settings.json.
ensemble mcp setup cline{
"mcpServers": {
"ensemble": {
"command": "ensemble",
"args": [
"mcp"
],
"disabled": false
}
}
}{
"mcpServers": {
"ensemble": {
"type": "streamableHttp",
"url": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}Config file: ~/.continue/config.yaml.
ensemble mcp setup continue --printmcpServers:
- name: ensemble
command: ensemble
args: [mcp]mcpServers:
- name: ensemble
type: streamable-http
url: https://api.ensemblework.com/mcp
requestOptions:
headers:
Authorization: Bearer KEYConfig file: ~/.config/opencode/opencode.json.
ensemble mcp setup opencode{
"mcp": {
"ensemble": {
"type": "local",
"command": [
"ensemble",
"mcp"
],
"enabled": true
}
}
}{
"mcp": {
"ensemble": {
"type": "remote",
"url": "https://api.ensemblework.com/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}FAQ
macOS 13+ on Apple Silicon or Intel, Windows 10/11 x64, and Linux x64 or arm64 with glibc 2.35+ (Ubuntu 22.04+, Debian 12+, Fedora 36+). Git is needed for code tasks. The download is about 120 MB because it carries its own Node runtime and local database.
Model keys you save with ensemble keys set stay encrypted on your computer and are never sent to Ensemble. MCP is read-only: the ens_ key the CLI or the Connect page creates can read your Ensemble context and cannot change anything.
Only in folders you share with ensemble folders add, and only while the runner is running. Remove a folder with ensemble folders remove. ensemble logout removes this computer from your account.
Not for Homebrew, Scoop, the install scripts, or the Linux packages: they do not mark the files as downloaded from the internet. A zip you download by hand in a browser may need “Open anyway” (macOS) or “Run anyway” (Windows) once.
The desktop app is coming later. Use the CLI for runner and MCP setup today.