# Solana Forwarder Directory
Source: https://docs.chain.link/cre/guides/workflow/using-solana-client/forwarder-directory-ts
Last Updated: 2026-07-15

> For the complete documentation index, see [llms.txt](/llms.txt).

This page lists forwarder program and state account addresses for CRE Solana workflows. Solana uses a different forwarder
model than EVM: instead of a single contract address, each forwarder deployment has a **program ID** and a **state
account**. Your workflow config needs both values.

> **NOTE: Looking for supported networks?**
>
> For a complete list of supported networks and version requirements, see [Supported
> Networks](/cre/supported-networks-ts).

> **TIP: Tenant-scoped chain list**
>
> Chain availability and mock forwarder addresses depend on your CRE tenant. Run [`cre workflow
>   supported-chains`](/cre/reference/cli/workflow#cre-workflow-supported-chains) after `cre login` to see the chains and
> mock forwarder addresses enabled for your organization. Use `--output json` for scripting.

## How to use this page

Your workflow config (`config.staging.json` / `config.production.json`) includes `forwarderProgramId` and
`forwarderState` fields. Use the simulation addresses for `cre workflow simulate` and the production addresses when
deploying to the DON. Learn more: [Writing to Solana](/cre/guides/workflow/using-solana-client/onchain-write-ts).

> **CAUTION: Different addresses for simulation vs production**
>
> The mock forwarder addresses used during simulation are **different** from the production Keystone Forwarder addresses
> used by deployed workflows. After testing with simulation, update `forwarderProgramId` and `forwarderState` in your
> production config. See [Writing to Solana](/cre/guides/workflow/using-solana-client/onchain-write-ts#simulation-vs-production-forwarder-addresses).

## Simulation (mock forwarder)

These addresses are baked into the CLI and used automatically by `cre workflow simulate`. Use these **only** during local
development and testing.

| Network        | Mock Forwarder Program ID                    | Mock Forwarder State Account                 |
| -------------- | -------------------------------------------- | -------------------------------------------- |
| Solana Devnet  | 7kuEAA3mSC1Tz8gQjnvH7bKFda9xSPRRin9SZbH49cNK | 5Tipz3yhTBdVsDbaBxZkrp7Gjf3brGq5SKkxReefPMP7 |
| Solana Mainnet | 7kuEAA3mSC1Tz8gQjnvH7bKFda9xSPRRin9SZbH49cNK | jhCjuD4Z3V7HeSUChMRpkRwpw6B9yC63mxDMv8SdLNX  |

## Production (Keystone Forwarder)

For production deployments, use these live Keystone Forwarder addresses:

| Network        | Keystone Forwarder Program ID                | Keystone Forwarder State Account             |
| -------------- | -------------------------------------------- | -------------------------------------------- |
| Solana Devnet  | CXsKEJcs25TQEYU2e5jZ8QTPE3ffMLZhH6BWHrdcCCB5 | 8QoomCQyPSkJ8WopJbX9B4HyvrFzziwvJdU8hZE6DCr9 |
| Solana Mainnet | GFrSSvQXaVGkc6Nrr8y2msie6pivJkR1s2EnDk4et294 | 9FgdPyU28bGMCuJyD34pzw9W7Ys36ziLbT9cbZtsaraV |

The workflow derives `forwarderAuthority` at runtime from `["forwarder", forwarderState, receiverProgram]` under the
`forwarderProgramId`.