Agent install guide
Install Argus (the adengine command)
Argus is a local MCP server and a set of skills that turn the AI agent you already use into an ad production team for e-commerce video ads. Its command, its MCP server and its skills are named
adengine. This guide tells an AI agent how to install Argus for its user. The same guide is at https://runargusapp.com/agents as a web page.
Identity
Product: Argus, from https://runargusapp.com.
Commands:
adengineandadengine-mcp. MCP server name:adengine. Skill names:adengine-*, starting withadengine-setup.Installers: https://runargusapp.com/install.sh (macOS and Linux) and https://runargusapp.com/install.ps1 (Windows). Both open with a "Before you run it" summary that matches this guide.
Other projects share these names. The GitHub project ruydt/argus is a different product with its own installer, and the
adenginepackage on PyPI is unrelated. Install neither. The Argus installer never uses PyPI'sadengine.
Objective
Run the Argus installer once for the user, in the foreground, outside your sandbox. Relay its result. Run the ffmpeg follow-up step when the installer prints one, and ask the user before the optional editor step. Then tell the user to restart their agent and give them the first prompt for that agent. Do not try to call Argus tools or the setup skill in the session that ran the installer: they load only in a new session.
What the installer does
Checks, before any download, that it can reach the network and write to the home folder. Inside a sandbox it stops within seconds with exit code 10 or 11 and prints the permission to ask for.
Asks https://runargusapp.com/api/releases/latest for the current release, downloads the wheel and checks its SHA-256. A mismatch installs nothing.
Installs uv from astral.sh when it is missing, then installs the wheel with
uv tool install. uv adds Python 3.12 when the computer needs it.Runs
adengine setup --yes --json --core, which registers theadengineMCP server and theadengine-*skills with every supported agent it finds on the computer.Prints any optional follow-up steps, a restart line and a last line that starts with
ARGUS_RESULT.
What it changes
~/.adengine: the workspace, the verified release and backups of every config file it edits.uv's folders:
~/.local/bin(adengine,adengine-mcpand uv when it installs uv),~/.local/share/uv(the tool environment and Python) and~/.cache/uv.A PATH line for
~/.local/binin the shell's startup files, only when that folder is not on the PATH yet. When the installer adds uv, uv's own installer from astral.sh writes these lines and can edit more than one file, such as.zshenv,.zshrcand.profile. On Windows it adds~\.local\binto the user PATH instead.The MCP registration and skill folders of the agents it finds:
claude mcp add --scope user adengine(or~/.claude.json),~/.claude/skills/adengine-*,~/.codex/config.toml,~/.agents/skills/adengine-*,~/.cursor/mcp.json, the VS Code usermcp.json,~/.gemini/settings.json, Windsurf'smcp_config.jsonand Claude Desktop'sclaude_desktop_config.json.
That registration is the product: Argus exists to give the user's agent these tools and skills. Each config file is backed up byte for byte to ~/.adengine/backups before its first change.
What it never does
Use sudo or administrator rights.
Ask for API keys or read them. The user connects services later, in the setup skill, without pasting keys into the chat.
Install the unrelated
adenginepackage from PyPI.Work around a sandbox. When it is blocked, it stops and prints the permission to ask for.
Replace an
adengineentry that Argus did not create, unless the user passes--force(the original is backed up first).
Before you run it
Permission and sandbox
The installer needs network access and permission to write in the user's home folder. Most agents run shell commands in a sandbox that blocks one or both, so run this one command outside the sandbox after the user approves it.
Claude Code (terminal, VS Code, JetBrains or the desktop app): the Bash tool asks the user to approve the command. When the Claude Code sandbox is on, run this command without the sandbox after the user approves. The user can also run it themselves by typing it after
!(bash mode).Codex (CLI, IDE extension or app): request escalated permissions for this command (
sandbox_permissions: "require_escalated", with a justification such as "Install Argus into your home folder; it needs network access") and wait for the approval.codex execcannot ask for approval, so start it with--sandbox danger-full-access, or ask the user to paste the command into a terminal.Cursor: ask the user to approve "Run outside sandbox" for this command.
VS Code with GitHub Copilot: ask the user to approve the terminal command. When terminal sandboxing is on, allow this command to run outside it.
Gemini CLI: ask the user to approve the shell command. The install fails under
gemini --sandbox(-s), so the user starts gemini without that option.Windsurf: ask the user to approve the command in Cascade.
Any other agent: run it where it can reach the hosts below and write to the home folder, or ask the user to paste it into a terminal.
Network hosts
runargusapp.com: the release answer and the verified wheel.
astral.sh: uv, when it is missing.
github.com and objects.githubusercontent.com: uv and Python 3.12.
pypi.org and files.pythonhosted.org: Python packages.
Only for the optional follow-up steps: github.com and raw.githubusercontent.com (ffmpeg), and registry.npmjs.org and nodejs.org (video editor connections).
curl or wget on macOS and Linux
The macOS and Linux installer needs one of curl or wget. It makes every download with the same one: curl when it is there, otherwise wget. macOS includes curl. Some minimal Linux systems, such as a fresh ubuntu:24.04 container, leave out curl, and some of them have wget. Without curl, the curl forms in this guide print curl: command not found, and the agent form stops with exit code 127. Check with command -v curl wget first.
When only wget is there, use this form instead of the curl one:
f=$(mktemp) && wget -q -O "$f" https://runargusapp.com/install.sh && sh "$f"; rc=$?; rm -f "$f"; (exit $rc)A person at a terminal can use wget -qO- https://runargusapp.com/install.sh | sh.
When the computer has neither, both forms stop with exit code 127 before anything changes. Ask the user to install curl with the system's package manager, for example sudo apt-get install -y curl on Debian or Ubuntu. The installer never uses sudo itself. An installer started some other way on such a computer stops the same way and reports ARGUS_RESULT status=failed reason=no_curl_or_wget.
Time and timeout
The install usually takes 10 to 60 seconds, and up to 5 minutes on a slow connection. During long steps it prints a progress line every 15 seconds.
Run it in the FOREGROUND with a timeout of 600000 ms.
Do not run it in the background. In Claude Code, leave
run_in_backgroundoff. A background run can outlive your session and hide the result.Do not stop it early. Wait for the last line, which starts with
ARGUS_RESULT.If it is interrupted anyway, run the same command again. It resumes where it stopped.
Preview first (optional)
--plan prints the hosts, folders and files the install would touch and the setup command it would run. It downloads and changes nothing.
f=$(mktemp) && curl -fsSL https://runargusapp.com/install.sh -o "$f" && sh "$f" --plan; rc=$?; rm -f "$f"; (exit $rc)& ([scriptblock]::Create((irm https://runargusapp.com/install.ps1))) --planInstall
macOS and Linux, in bash, zsh or sh. This form saves the installer to a private temporary file, so a failed download is a failed command, and it keeps the installer's exit code:
f=$(mktemp) && curl -fsSL https://runargusapp.com/install.sh -o "$f" && sh "$f"; rc=$?; rm -f "$f"; (exit $rc)Do not pipe curl into sh from an agent. When the download fails, a pipe into sh still reports exit code 0. On a system without curl, run the wget form from "curl or wget on macOS and Linux" instead.
Windows, in PowerShell 5.1 or 7. A failed download is caught, and the final exit returns the installer's exit code:
$LASTEXITCODE=1; try { & ([scriptblock]::Create((irm https://runargusapp.com/install.ps1))) } catch { [Console]::Error.WriteLine($_) }; exit $LASTEXITCODEFrom a bash tool on Windows (such as Claude Code's), run the same line through PowerShell:
powershell -NoProfile -Command '$LASTEXITCODE=1; try { & ([scriptblock]::Create((irm https://runargusapp.com/install.ps1))) } catch { [Console]::Error.WriteLine($_) }; exit $LASTEXITCODE'Options
Put options after sh "$f" on macOS and Linux, or after the script block on Windows, for example sh "$f" --no-editors. These are the installer's own options:
--plan: print what would happen, then stop. Nothing is downloaded or changed.--core: the core install only. This is the default inside an agent: ffmpeg and the video editor connections become optional follow-up steps.--full: the core install, then ffmpeg and the editor connections. This is the default in a terminal.--no-editors: never connect video editors.--via-plugin: the Argus Claude Code plugin connects Claude Code (see "Claude Code plugin" below).
Every other option goes to adengine setup:
--clients auto|none|<ids>: which agents to register, for example--clients claude-code,codex.auto, the default, registers each of Claude Code, Codex, Claude Desktop, Cursor, VS Code, Gemini CLI and Windsurf that it finds. Agents that are written only when named:qwen,kiro,amp,opencode,junie,warpandcline.--editor-mcps auto|none|resolve,capcut,premiere: which video editor connections to set up.--toolset auto|core|all: the tool set to register (see "Tool limits").--force: replace anadengineentry that Argus did not create. The original is backed up and comes back on uninstall.
Done when
The last line starts with
ARGUS_RESULT status=ok, for example:ARGUS_RESULT status=ok version=<version> ready=true restart_required=true harness=claude-code mode=core deferred=none first_prompt=/adengine-setupharnessis the agent the installer detected, andfirst_promptis what the user types in it after the restart. A value with spaces is quoted, such asfirst_prompt="use the adengine-setup skill".deferrednames the optional follow-up steps still to run (ffmpeg,editors), ornone.ready=falsemeans a step is left for the user. The lines aboveARGUS_RESULTsay which one.plugin=claude-codeappears when the Claude Code plugin connects Claude Code.A failed or blocked run ends with
ARGUS_RESULT status=failedorARGUS_RESULT status=blocked, plusreason=andexit=.
You ran the ffmpeg step if the installer printed one, and you asked the user before the editor step (see "Optional follow-up steps").
These checks pass. Use absolute paths, because
~/.local/binmay not be on your shell's PATH yet:~/.local/bin/adengine doctor --jsonlists every registration, andnext_stepslists anything left. It exits 1 while a required step, such as ffmpeg, is still missing.Claude Code:
claude mcp get adengine, or"$CLAUDE_CODE_EXECPATH" mcp get adenginewhenclaudeis not on the PATH (the VS Code and JetBrains extensions).Codex:
codex mcp listshowsadengine.Gemini CLI:
gemini mcp listshowsadengine.Any other agent: its config file has an
adengineentry.
Optional follow-up steps
Inside an agent the installer leaves two slower parts for later and prints each one as a command with absolute paths. Copy a command exactly as the installer printed it and run it as its own command, in the foreground, with a 600000 ms timeout and the same permission as the install, before the user restarts. Argus works without either one, and the user can run them later.
ffmpeg, 5 to 60 seconds:
adengine doctor --fix --jsoninstalls a verified ffmpeg of about 42 MB under~/.adengine/bin, which rendering needs. It runs only when no suitable ffmpeg is on the computer. Run it when the installer prints it.Video editors, 1 to 4 minutes: the command with
--editor-mcps autoconnects DaVinci Resolve, CapCut or Premiere Pro when one is installed. This step is an add-on. Ask the user before you run it, and run it only when they agree. The installer's list marks it "ask the user first" too. It changes more than the core install:it downloads pinned editor servers and the runtimes they need;
it registers a server for each editor with Claude Code, Codex, Claude Desktop and Gemini CLI, the agents without a tool limit, and these editor servers can add hundreds of tools to each of them;
with Premiere Pro, it copies a bridge panel into the user's Adobe CEP extensions folder and turns on Adobe's PlayerDebugMode setting for the CEP version Premiere Pro uses, which lets any unsigned CEP panel load in Adobe apps on that version.
adengine uninstallremoves these and puts the previous PlayerDebugMode value back. You could ask: "Argus can also connect Premiere Pro, which adds its editor server and hundreds of tools to your agents. Do you want that now?"
Restart, then the first prompt
An agent loads new MCP servers and skills only when a session starts. Always tell the user to restart, even when everything finished. Then give the first prompt for their agent. It starts the setup skill, which walks the user through their API keys and their video editor.
Claude Code: restart Claude Code (type /exit, then run
claude --continue; in VS Code or JetBrains, open a new Claude Code chat), then type/adengine-setup. With the Argus plugin, type/adengine:adengine-setupinstead.Codex: restart Codex (quit and reopen it, or start a new chat in the IDE or app), then type
$adengine-setup, or press$and pick it. Codex does not accept the slash form.Claude Desktop: quit Claude Desktop fully and reopen it, then pick the adengine-setup prompt from the
adengineserver's prompts.Cursor: restart the chat (in Cursor Settings > MCP, turn adengine on or refresh it, then start a new chat), then type
/adengine-setup.VS Code: restart the chat (start a new chat, and start or trust the adengine server when VS Code asks), then type
/adengine-setup.Gemini CLI: restart Gemini CLI (quit it and start gemini again), then say "use the adengine-setup skill".
Windsurf: restart Windsurf (or refresh its MCP servers in the Cascade panel), then type
@adengine-setup.
A message to the user can be as short as: "Argus is installed. Restart Claude Code (type /exit, then run claude --continue), then type /adengine-setup to connect your keys and your editor."
Claude Code plugin
Claude Code 2.1.224 or later can add Argus as a plugin from the Argus marketplace. Update Claude Code first with claude update in a terminal, then type these in Claude Code, one at a time:
/plugin marketplace add https://runargusapp.com/claude/marketplace.json/plugin install adengine@argusThe plugin adds the Argus skills and the adengine MCP server entry. It does not install the engine. Restart Claude Code so the plugin loads. Until the engine is installed, the plugin's server offers one tool, install_argus, which returns this command:
f=$(mktemp) && curl -fsSL https://runargusapp.com/install.sh -o "$f" && sh "$f" --via-plugin; rc=$?; rm -f "$f"; (exit $rc)Run it like the install above. --via-plugin leaves Claude Code to the plugin, so its tools and skills are not listed twice, and still connects the user's other agents. After the install, restart Claude Code and type /adengine:adengine-setup, because plugin skills carry the plugin's name. A computer set up by the plain installer does not need the plugin.
On a Claude Code older than 2.1.224, /plugin marketplace add succeeds, and /plugin install adengine@argus then refuses with "This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again." Run claude update in a terminal and install the plugin again, or use the installer above, which connects Claude Code without the plugin.
Other agents
The installer registers Claude Code, Codex, Claude Desktop, Cursor, VS Code, Gemini CLI and Windsurf by itself when it finds them. For any other agent, install first, then print the entry for that agent and add it to the agent's MCP settings:
~/.local/bin/adengine mcp-config <agent>adengine mcp-config --listlists every agent it knows, with the config file, the key and the first prompt.--linkprints a one-click install link for Cursor, VS Code and Goose, built for this computer's paths.--format json|claude|vscode|toml|opencode|zed|goose|continue|ampprints another shape, and--jsonprints everything as JSON, including where the entry goes.For an agent it does not list, use
adengine mcp-config generic --toolset core.
Agents it knows beyond the automatic ones, each with the first prompt after its restart:
Qwen Code (
qwen): say "use the adengine-setup skill".adengine setup --clients qwencan also write it for you.Kiro (
kiro): say "use the adengine-setup skill".adengine setup --clients kirocan also write it.Amp (
amp): say "use the adengine-setup skill".adengine setup --clients ampcan also write it.OpenCode (
opencode): type/adengine-setup.adengine setup --clients opencodecan also write it.Junie (
junie): pick the adengine-setup prompt.adengine setup --clients juniecan also write it.Warp (
warp): type/adengine-setup.adengine setup --clients warpcan also write it.Cline (
cline): say "use the adengine-setup skill".adengine setup --clients clinecan also write it.Goose (
goose): say "use the adengine-setup skill".Continue (
continue): pick the adengine-setup prompt.Zed (
zed): pick the adengine-setup prompt.JetBrains AI Assistant (
jetbrains): pick the adengine-setup prompt.Roo Code (
roo): pick the adengine-setup prompt.
The entry always runs the absolute path of adengine-mcp with serve. adengine-mcp serve needs no other arguments and serves ~/.adengine/workspace. For a client that reads mcpServers, it looks like this, with the user's own home folder in the path:
{
"mcpServers": {
"adengine": {
"command": "/Users/you/.local/bin/adengine-mcp",
"args": ["serve", "--toolset", "core"]
}
}
}VS Code's mcp.json uses the key servers with "type": "stdio", and Codex uses a [mcp_servers.adengine] table in ~/.codex/config.toml. adengine mcp-config prints the right shape for each.
Tool limits
The full server has 226 tools. Some agents limit how many tools they load: Cursor keeps about 40 active, VS Code allows 128 per request and Windsurf 100 across all servers. For those, setup registers --toolset core: 25 tools, including adengine_find_tools and adengine_call_tool, which search and run every other tool, so nothing is out of reach. Claude Code, Codex, Claude Desktop and Gemini CLI get the full set. Pass --toolset core or --toolset all to choose yourself. Setup does not register video editor servers with agents that have a tool limit; adengine mcp-config <agent> --server <editor> prints one to add by hand.
Troubleshooting
By exit code:
0: installed, withstatus=ok. A step may be left for the user; the lines aboveARGUS_RESULTsay which.1: install error, withstatus=failed reason=<reason>. The line above it explains the problem, such as a checksum mismatch or a failed uv install. When setup itself failed, run~/.local/bin/adengine doctor --jsonand follow itsnext_steps.2: usage error, such as a mistyped option. Fix the option and run the command again.10: network blocked or unreachable, withstatus=blocked. Inside an agent this is the sandbox: the line on stderr names the permission to ask for. Get the user's approval and run the command outside the sandbox. In a terminal, check the internet connection and run it again.11: the home folder, or a folder setup needs, cannot be written, withstatus=blocked. Inside an agent this is also the sandbox; the fix is the same. Setup's own advice and aCommand:line are printed on stderr.127from the macOS and Linux form: curl is not installed (or, from the wget form, wget is not). Use the other form, or ask the user to install curl (see "curl or wget on macOS and Linux").Another code, such as 6, 7 or 22 from curl, or 4, 5 or 8 from wget, from the macOS and Linux form: install.sh itself could not be downloaded. Treat it like
10. On Windows a failed download ends with PowerShell's error and exit code 1.
By message:
Argus can't install inside <agent>'s sandbox: run the command outside the sandbox after the user approves (see "Permission and sandbox").Could not reach <host>: the computer is offline, or a proxy blocks that host. The hosts are listed under "Network hosts".already has an MCP server named "adengine" that Argus did not create: another tool, or an older manual setup, owns that entry. Run~/.local/bin/adengine setup --clients <agent> --forceto replace it; the original is backed up.Resuming an interrupted install: a normal re-run after an interruption.Unknown skill: adengine-setup, or no Argus tools in the agent: the agent has not restarted since the install. Restart it (see "Restart, then the first prompt").Unrecognized command '/adengine-setup'in Codex: type$adengine-setupinstead.Codex says it has no Argus tools after the restart: Codex loads MCP tools on demand, when a task or
$adengine-setupneeds them, so a question such as "do you have the Argus tools?" can get a no even after a good install.codex mcp listis the check: it showsadenginewhen the install worked.curl: command not found: use the wget form, or ask the user to install curl (see "curl or wget on macOS and Linux").ARGUS_RESULT status=failed reason=no_curl_or_wget: the computer has neither curl nor wget. Ask the user to install curl.ARGUS_RESULT status=failed reason=tls_unverified: this wget cannot check TLS certificates, as with BusyBox's own TLS code, so the installer did not use its download. Ask the user to install curl.This plugin uses a source type your Claude Code version does not support: Claude Code is older than 2.1.224. Runclaude updateand install the plugin again, or use the installer.On Windows, a program that cannot be replaced during an update: quit the agent apps that use Argus, then run the command again.
Uninstall
~/.local/bin/adengine uninstall --yesIt removes every agent registration and skill folder it recorded. A config file comes back from its backup byte for byte when nothing else changed it since; otherwise only the adengine entry is removed. The workspace in ~/.adengine/workspace stays unless you add --remove-workspace. The program itself, uv and the downloaded Python stay too, and uninstall prints the commands that remove them: uv tool uninstall adengine, then delete ~/.adengine.