> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vana.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Create an app identity

> An app identity is an EVM keypair for your app — the grantee address users approve and fund.

An app identity is an **EVM keypair** for your app. The app address is:

* the **grantee address** users approve
* the address you **fund** in Data Portability escrow

## Create or register the app identity

Everything on this page happens in the **Developers** page of Vana Account. Sign in there, and the page walks you through it — it has three sections: **Create new app identity**, **Use existing app identity**, and **Fund escrow**.

<Steps>
  <Step title="Open and sign in to Vana Account developers">
    Open [`account-dev.vana.org/developers`](https://account-dev.vana.org/developers) and **sign in** (continue with Google, a wallet, or an email code). Set the **Protocol network** toggle to **Testnet** (Moksha). Mainnet deployment is being finalized, so build on testnet for now.
  </Step>

  <Step title="Create a new app identity, or register an existing key">
    Pick one:

    * **Create new app identity** — enter your **App URL** and click **Create app identity**. This generates a new app private key and registers the app identity with the Vana Data Gateway in one step.
    * **Use existing app identity** — already have a `VANA_PRIVATE_KEY`? Click **Show registration snippet**, set your key and `APP_URL`, and run the snippet from Node.js or your backend. The private key stays in your environment (it is never imported into Vana Account), and the gateway, chain, and escrow contract are filled in for you.
  </Step>

  <Step title="Enter your App URL">
    Use the origin where your app is running. For local development, use your local origin, for example `http://localhost:3000`. For shared testing or production, use the deployed origin, for example a Vercel preview URL or your production app URL.
  </Step>

  <Step title="Copy the app address">
    Copy the app address — you'll reuse it for escrow funding.
  </Step>

  <Step title="Store the private key">
    Store the private key as a **server-side environment variable**. (If you created a new identity, Vana Account shows the generated key once — save it now.)
  </Step>
</Steps>

Use the same App URL as `VANA_APP_URL` in your backend environment. Use the same app address when you fund escrow.

<Warning>
  The app identity **must be registered** before the direct data flow can complete.

  * If you **generate** an app identity in Vana Account, finish that generated-app flow there.
  * If you **bring your own** app key, keep the private key local/server-side and run Vana Account's existing-app registration snippet with `VANA_PRIVATE_KEY` and `APP_URL`; the private key stays in your environment and is not imported into Vana Account.

  Funding escrow **does not** register the app identity. Use the same registered app address in your backend and escrow funding.
</Warning>
