---
title: memhtml integrations install
description: "Wire a coding agent to this store: its MCP entry, its hooks, a fenced block in its instruction file, and a skill, recorded in a receipt so uninstall removes exactly what install wrote."
---

## 1. Synopsis

Wire a coding agent to this store: its MCP entry, its hooks, a fenced block in its instruction file, and a skill, recorded in a receipt so uninstall removes exactly what install wrote.

```sh
memhtml integrations install [host] [options]
```

## 2. Arguments

| Argument | Required | Description |
| --- | --- | --- |
| `host` | no | Which coding agent to wire: one of claude, codex, cursor, opencode. Omitted: every host whose home directory exists is installed (Claude Code by `~/.claude`, Codex by `~/.codex`, Cursor by `~/.cursor`, OpenCode by `~/.config/opencode`). |

## 3. Flags

| Flag | Type | Default | Values | Description |
| --- | --- | --- | --- | --- |
| `--project` | string | *no default* | *no fixed set* | Install at repository scope instead of user scope: the path is resolved to its git root, and the host's PROJECT files are written (`.mcp.json`, `.cursor/mcp.json`, `.codex/config.toml`, `opencode.json`, root `AGENTS.md`/`CLAUDE.md`). `/` and `$HOME` are refused as a root. |
| `--hooks` | string | `all` | `all`, `session`, `none` | Which hooks to install. `all` (default) adds session-start recall, per-prompt recall where the host can inject it, and transcript indexing before compaction where a transcript format exists; `session` adds session-start recall only; `none` writes the MCP entry, block, and skill and no hook. |
| `--bare-command` | flag | `false` | *no fixed set* | Write bare `memhtml` / `memhtml-mcp` commands into the host config instead of the absolute path of this binary. Absolute is the default because GUI hosts do not inherit a shell PATH and a moved toolchain alias has orphaned a bare command before; choose bare when you manage PATH yourself. |
| `--force` | flag | `false` | *no fixed set* | Overwrite a managed file or entry that was modified since the last install. Without it a modification is refused with ERR\_INTEGRATION\_MODIFIED and nothing is written; with it the prior bytes are kept beside the file as a timestamped backup named in the report. |
| `--dry-run` | flag | `false` | *no fixed set* | Report every file and entry install WOULD write, with the rendered content, and write nothing. |

Every command also accepts the [global flags](/reference/global-flags/).

## 4. Response

On success the command writes one JSON envelope to stdout, and its `type` is `integrations.report`.

On failure it writes the failure envelope, whose `code` comes from [error codes](/reference/error-codes/).

[The JSON envelope](/reference/envelope/) gives the fields both shapes carry. [Response types](/reference/response-types/) lists every value `type` takes across the binary.

## 5. Further reading

No guide block names this command. The [guide](/reference/guide/) is the workflow prose the CLI ships beside the command table: which command to reach for, and in what order.

## 6. Provenance

A loader generates this page from `apps/cli/src/commands.ts` while the site builds, so no file in the repository holds it: the `COMMANDS` array there is the one source of argument parsing, of `memhtml manifest`, and of `AGENTS.md`. Change the registry and this page changes with it.