> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://ensforge.com/api/mcp` to find what you need.

# Installation

:::code-group
```sh [pnpm]
pnpm add @ensforge/hca @ensforge/sdk @ensforge/contracts effect@rc viem
```

```sh [npm]
npm install @ensforge/hca @ensforge/sdk @ensforge/contracts effect@rc viem
```

```sh [yarn]
yarn add @ensforge/hca @ensforge/sdk @ensforge/contracts effect@rc viem
```

```sh [bun]
bun add @ensforge/hca @ensforge/sdk @ensforge/contracts effect@rc viem
```
:::

Install the optional provider package you use:

```sh
pnpm add permissionless@0.4.0
# For Rhinestone:
pnpm add @rhinestone/sdk@1.8.0
```

Use `@ensforge/core` instead of SDK for standalone actions and Effect composition. Add
`@ensforge/react` for hooks. The storage adapters are exported by core and require no provider package.
See [compatibility](/hca/compatibility) for the supported deployment and dependency versions.

## Rhinestone compatibility patch

The supported standalone account requires the ENSforge patch for `@rhinestone/sdk@1.8.0`. Stock
1.8.0 is not equivalent. The patch ships in the `@ensforge/hca` package under `patches`.
After installing the packages with pnpm:

```sh
mkdir -p patches
cp node_modules/@ensforge/hca/patches/rhinestone-sdk-1.8.0.patch patches/rhinestone-sdk-1.8.0.patch
```

Add this entry to your `pnpm-workspace.yaml`, preserving existing settings:

```yaml
patchedDependencies:
  "@rhinestone/sdk@1.8.0": patches/rhinestone-sdk-1.8.0.patch
```

Run `pnpm install` again and commit the patch, configuration and lockfile. The ENSforge workspace
already applies it. For another package manager, apply the same shipped patch using that manager's
patch mechanism; the pnpm workflow is the reproducible baseline used by this repository.
The patch covers standalone derivation/encoding and the configured intent executor. Do not remove
it or update the provider version without verifying compatibility again.
