> [Índice para máquinas](https://thiagopanini.github.io/panlabs-docs/en/llms.txt) · [Página](https://thiagopanini.github.io/panlabs-docs/en/ferramentas/bibliotecas/overpower/comandos/install)

# overpower install

> Writes. It prints the plan, with every destination and who reads it, before touching disk, and asks before writing when there is a terminal on the other side.

**Command** · `overpower install`

<PainelComando />

The four selectors mix freely on a single line, and each takes a comma-separated value, a repeated flag, or both. When a line resolves to writes across more than one unit, they always happen in the same order, framework, then bundle, then individual artifact, then MCP server, and the most specific unit is written last.

In a terminal, a line that does not close a plan opens the wizard instead of simply refusing. It only opens the steps your line left open, always in the same order, and whatever it collects becomes exactly the same request a hand-typed flag line would have built.

## Options

<ParamField name="--skill" type="name">
One pool skill, installed on its own. Takes the short form `-s`.
</ParamField>

<ParamField name="--runtime" type="key">
Who receives what is installed. Takes keys from a closed table of 77 runtimes, and has no default. What happens without it depends on there being a terminal: in one, a line that names something to install and no runtime opens the wizard on the step that was missing; off a terminal, it refuses with exit 2 rather than guessing. The exception is a line mixing a skill and an MCP server, which needs the runtime named in both cases.
</ParamField>

<ParamField name="--bundle" type="name">
A bundle, expanded into the pool artifacts its manifest names. Takes the short form `-b`.
</ParamField>

<ParamField name="--mcp" type="name">
One MCP server, grafted into the runtime's own configuration. Nothing is copied here; a key is added inside a document that is already yours.
</ParamField>

<ParamField name="--ai-framework" type="name">
An AI Framework, installed whole. It has no short form on purpose, because `-f` is already `--force` on this same command.
</ParamField>

<ParamField name="--from" type="url">
Installs from a GitHub repository, with no registration step. Once it is on the line, the embedded catalog is not consulted.
</ParamField>

<ParamField name="--dry-run" type="flag">
Resolves everything, prints the plan, mirrors the real exit code and writes nothing, not even an empty directory.
</ParamField>

<ParamField name="--yes" type="flag">
Skips the confirmation before the write. Takes the short form `-y`. Off a terminal it is accepted and does nothing, because there is no confirmation to skip there. In a terminal it has a second effect: a destination already taken in machine scope stops being a question and becomes a refusal, exit 3, where the line without `-y` would have asked and could have written. What lifts that refusal is `--force`, and only `--force`.
</ParamField>

<ParamField name="--force" type="flag">
Overwrites an existing destination in machine scope, without asking. In repository scope it has no effect, because `git status` already reveals and undoes there. Takes the short form `-f`.
</ParamField>

<ParamField name="--global" type="flag">
Writes under the home directory instead of the current repository. Takes the short form `-g`.
</ParamField>
