# CLI

> The rexa command. Open projects, update, manage agents and extensions, and control the running app.

The installer links `rexa` at `~/.local/bin/rexa`. It opens projects, updates the app, and talks to the running Rexa. Agents use some of the same commands from inside Rexa terminals.

```bash [Terminal]
rexa open .              # open this folder in Rexa
rexa version             # version and build
rexa update              # install the latest version
rexa claude setup --check
```

`rexa <path>` does not open a folder; use `rexa open <path>`.

## App

| Command                    | Flags                     | Does                                                         |
| -------------------------- | ------------------------- | ------------------------------------------------------------ |
| `rexa open [path]`         |                           | Open a folder as a project. Launches Rexa if it is not running. Default `.`. |
| `rexa version`             |                           | Print the version and build.                                 |
| `rexa update`              | `--yes`                   | Check, download, verify, install and relaunch.               |
| `rexa update check`        |                           | Exit code 10 when an update is available, 0 otherwise.       |
| `rexa update migrate`      | `--check`, `--force`      | Rerun saved-state migrations. A recovery tool.               |
| `rexa uninstall`           | `--dry-run`, `--yes`      | Remove Rexa and its data. Lists everything first.            |

## Agents

| Command                           | Flags                              | Does                                                    |
| --------------------------------- | ---------------------------------- | ------------------------------------------------------- |
| `rexa <agent> setup`              | `--check`, `--remove`, `--json`    | Install, check or remove an agent's hooks and skill links. Agents: `claude`, `codex`, `cursor`, `opencode`, `pi`. |
| `rexa <agent> sessions`           | `--json`                           | List the agent's sessions.                              |
| `rexa <agent> skills`, `mcps`, `hooks`, `memories` | `--json`          | List what the agent loads.                              |
| `rexa <agent> help`               |                                    | List that agent's commands.                             |
| `rexa agent ls`                   | `--json`                           | Live agents. `*` marks the one in this terminal.        |
| `rexa agent send <card> [message]` | `--max-wait <time>`, `--force`    | Message a live agent. Reads stdin without a message.    |
| `rexa sessions`                   | `--json`                           | List agent cards.                                       |
| `rexa sessions remove <id>`       |                                    | Forget a stuck card. Never stops a process.             |

## Extensions

| Command                                | Flags                                       | Does                                     |
| -------------------------------------- | ------------------------------------------- | ---------------------------------------- |
| `rexa extension ls`                    | `--json`                                    | Installed extensions and what they add.  |
| `rexa extension info <id>`             | `--json`                                    | Show an extension's manifest.            |
| `rexa extension search zed:<query>`    | `--json`                                    | Search Zed's registry.                   |
| `rexa extension install <path\|zed:id>` | `--version`, `--copy`, `--force`, `--yes`  | Install a local folder or a Zed extension. |
| `rexa extension remove <id>`           | `--yes`                                     | Remove an installed extension.           |
| `rexa extension enable <id>`, `disable <id>` |                                       | Turn an extension on or off.             |
| `rexa extension outdated`              | `--json`                                    | Zed extensions with newer releases.      |
| `rexa extension logs [id]`             | `--follow`, `--count <n>`, `--level <level>` | Extension log lines. Works with Rexa closed. |

## Terminals

| Command                 | Flags         | Does                                                |
| ----------------------- | ------------- | --------------------------------------------------- |
| `rexa pty ls`           | `--all`       | List the background terminals.                      |
| `rexa pty kill <id>`    |               | End one terminal.                                   |
| `rexa pty stop`         | `--yes`       | Stop the background terminal process and its shells. |

## Language servers

`rexa lsp` with no subcommand prints every server's status.

| Command                                   | Does                                              |
| ----------------------------------------- | ------------------------------------------------- |
| `rexa lsp diagnostics [path]`             | Errors and warnings.                              |
| `rexa lsp restart [server]`, `stop`, `start` | Control servers.                               |
| `rexa lsp trace <server> on\|off`         | Log every message to and from a server.           |
| `rexa lsp toolchain [language] [choice]`  | Show or pick a toolchain.                         |
| `rexa lsp hover <path:line:col>`          | Hover text at a position.                         |
| `rexa lsp definition <path:line:col>`     | Jump target. `--kind declaration\|type\|implementation`. |

## GitHub and GitLab

`rexa forge` prints read-only JSON from the host, through `gh` or `glab`: `whoami`, `repo`, `pulls`, `pull`, `checks`, `threads`, `issues`, `issue`, `runs`, `run`, `log` and more. Agents use it to read review threads and CI logs.

## Browser

`rexa web` drives a Rexa browser tab. See the [`rexa web` reference](/docs/reference/rexa-web).

## Used by agents and hooks

These run inside Rexa terminals and from agent hooks. You rarely call them yourself.

| Command                | Does                                                             |
| ---------------------- | ---------------------------------------------------------------- |
| `rexa context`         | Print the session context. Empty outside a Rexa terminal.        |
| `rexa post <endpoint>` | Send stdin to an extension. Never fails the caller.              |
| `rexa skills check`, `install` | Check or link extension skills into `~/.claude/skills`.  |

## Global options

<FieldGroup>
  <Field name="--version, -V">Print the version.</Field>
  <Field name="--namespace, -n" type="<name>">Talk to another Rexa instance. Defaults to `REXA_NAMESPACE`, then the installed app.</Field>
</FieldGroup>
