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

# Development Environments

> Switch between AIR Kit Sandbox and Production environments — Sandbox uses Moca Chain Testnet; Production supports Testnet or private Mainnet.

<Warning>
  Sandbox always uses **Moca Chain Testnet**.
</Warning>

<Tip>
  Make sure you're selecting the correct chain when using different build environment. Otherwise, your app may hit unexpected errors
</Tip>

| Environment                                 | Moca Chain             | Purpose                               | Developer Dashboard                                                                            |
| ------------------------------------------- | ---------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Development + Testing                       | Testnet (222888)       | Partners still on Testnet credentials | [https://developers.sandbox.air3.com/dashboard](https://developers.sandbox.air3.com/dashboard) |
| Production + `credentialNetwork: "mainnet"` | Private Mainnet (2288) | Approved production launches          | [https://developers-mainnet.air3.com/dashboard](https://developers-mainnet.air3.com/dashboard) |

> Credentials, schemas, and programs are network-specific. Credentials issued on Testnet are not available on Mainnet (and Devnet-issued credentials are not available on either). Re-issue on the target network when you migrate. Issuance schemas and programs *may* need to be recreated; Issuer and Verifier DIDs may also differ per network.

## Production mainnet access

Moca Chain Mainnet is currently a private mainnet. Approved production launches should use the production AIR pages, including the [production Developer Dashboard](https://developers-mainnet.air3.com/dashboard), and configure AIR Kit with `BUILD_ENV.PRODUCTION`.

You can include the mainnet URLs in production configuration when you have access. See [Moca Chain network information](/mocachain/using-moca-chain/network-information) for RPC and explorer URLs.

<Card title="Need private mainnet tokens?" icon="coins" href="https://mocanetwork.typeform.com/joinmocaeco?typeform-source=air3.com" cta="Reach out to us for tokens">
  Contact Moca before launching on production mainnet so we can enable access and provide the required \$MOCA gas tokens.
</Card>

## Sandbox Environment Changes

Starting with **AirKit 1.10.0**, Sandbox is Testnet-only — the temporary `credentialNetwork: "devnet"` opt-in is removed.

### What's Changed

| Before (\< 1.8.0)                                                                     | 1.8.0–1.9.x                                                                           | 1.10.0+                                                                               |
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| Sandbox → Devnet (Chain ID: 5151)                                                     | Sandbox → Testnet by default; optional `credentialNetwork: "devnet"`                  | Sandbox → Testnet only; no `credentialNetwork` on Sandbox                             |
| Dashboard: [https://developers.sandbox.air3.com](https://developers.sandbox.air3.com) | Dashboard: [https://developers.sandbox.air3.com](https://developers.sandbox.air3.com) | Dashboard: [https://developers.sandbox.air3.com](https://developers.sandbox.air3.com) |

### Impact

* Credentials issued on Devnet are **not** available on Testnet or Mainnet
* Smart Account addresses remain the same across networks
* Re-issue test credentials on Testnet, or on private Mainnet for approved production launches

### Initializing AirService with the correct Environment

<Tabs>
  <Tab title="Web">
    **Sandbox (Testnet):**

    ```js theme={null}
    import { AirService, BUILD_ENV } from "@mocanetwork/airkit";

    const airService = new AirService({
      partnerId: YOUR_PARTNER_ID
    });
    await airService.init({
      buildEnv: BUILD_ENV.SANDBOX,
      enableLogging: true
    });
    ```

    **Private Mainnet (production):**

    ```js theme={null}
    await airService.init({
      buildEnv: BUILD_ENV.PRODUCTION,
      credentialNetwork: "mainnet",
      enableLogging: true
    });
    ```

    `credentialNetwork` is only accepted when `buildEnv` is `BUILD_ENV.PRODUCTION`. Values: `"testnet"` | `"mainnet"`.
  </Tab>

  <Tab title="Flutter">
    ```dart theme={null}
    await airService.initialize(
      partnerId: 'YOUR_PARTNER_ID',
      navigatorKey: navigatorKey,
      env: Environment.sandbox, // or Environment.production
      enableLogging: true,
    );
    ```
  </Tab>
</Tabs>

## Chains

| Chain           | Chain ID | RPC                                                                    | Explorer                                                                 |
| --------------- | -------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| Testnet         | 222888   | [https://testnet-rpc.mocachain.org](https://testnet-rpc.mocachain.org) | [https://testnet-scan.mocachain.org](https://testnet-scan.mocachain.org) |
| Private Mainnet | 2288     | [https://rpc.mocachain.org](https://rpc.mocachain.org)                 | [https://scan.mocachain.org](https://scan.mocachain.org)                 |

Mainnet EVM RPC access may require an API key — see [Moca Chain network information](/mocachain/using-moca-chain/network-information).
