> **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.

# Getting started

Rhinestone lets a session key authorize constrained ENS calls. The owner enables the session once;
the application reuses it until it expires or the owner revokes it. Rhinestone orchestrates delivery
to the deployed intent executor, which calls the HCA and then the ENS contract.

## Install and patch

```sh
pnpm add @ensforge/hca @ensforge/sdk @ensforge/contracts effect@rc viem @rhinestone/sdk@1.8.0
```

Apply the [required compatibility patch](/hca/installation#rhinestone-compatibility-patch) before
running this adapter. The integration targets this exact SDK and deployed ENS account generation.

## Configure the clients

Set these server-side environment variables:

```sh
ENSFORGE_SEPOLIA_RPC_URL=
ENSFORGE_SEPOLIA_PRIVATE_KEY=
RHINESTONE_API_KEY=
ENSFORGE_HCA_SESSION_PRIVATE_KEY=
```

Use a separate persistent session key. It needs no ETH for sponsored execution. The owner needs
Sepolia ETH for deployment, resolver permissions and session enablement.

:::code-group
```ts [rhinestone.ts]
// [!include ~/snippets/hca/guides/rhinestone.ts]
```

```ts [client.ts]
// [!include ~/snippets/hca/guides/client.ts]
```
:::

Execution is sponsored by default. Token-paid Rhinestone refunds are currently unsupported; see
[Supported deployments](/hca/compatibility). Do not disable sponsorship to work around a rejected route.

## Deploy the account

:::code-group
```ts [deploy.ts]
// [!include ~/snippets/hca/guides/deploy.ts]
```

```ts [account.ts]
// [!include ~/snippets/hca/guides/account.ts]
```

```ts [client.ts]
// [!include ~/snippets/hca/guides/client.ts]
```
:::

After deployment, [enable a session](/hca/rhinestone/sessions), then
[send your first update](/hca/rhinestone/usage). You do not need cross-chain funding for a sponsored
record update. Funding is relevant when the HCA needs tokens for a later action such as registration.
