diff --git a/pages/frxusd/stake-and-unstake-supported-networks.mdx b/pages/frxusd/stake-and-unstake-supported-networks.mdx
index 16d3578..2dea03e 100644
--- a/pages/frxusd/stake-and-unstake-supported-networks.mdx
+++ b/pages/frxusd/stake-and-unstake-supported-networks.mdx
@@ -30,8 +30,9 @@ The table below provides a comprehensive list of all blockchain networks sfrxUSD
| **Polygon zkEVM** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://zkevm.polygonscan.com/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) |
| **Sei** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://seitrace.com/token/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) |
| **Solana** | [{DUvWQMyASSkLNJFwsMDA4kwxEvmfaqpPGrvUVKtitX45}](https://solscan.io/account/DUvWQMyASSkLNJFwsMDA4kwxEvmfaqpPGrvUVKtitX45) |
+| **Somnia** | [{0x00000000fD8C4B8A413A06821456801295921a71}](https://explorer.somnia.network/address/0x00000000fD8C4B8A413A06821456801295921a71) |
| **Sonic** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://sonicscan.org/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) |
-| **Stable** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://stablescan.xyz/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) |
+| **Stable** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://stablescan.xyz/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) |
| **Unichain** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://unichain.blockscout.com/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) |
| **XLayer** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://www.oklink.com/x-layer/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) |
| **zkSync** | [{0x9F87fbb47C33Cd0614E43500b9511018116F79eE}](https://explorer.zksync.io/address/0x9F87fbb47C33Cd0614E43500b9511018116F79eE) |
diff --git a/pages/protocol/crosschain/_meta.json b/pages/protocol/crosschain/_meta.json
index 2ba1dac..a23ae7c 100644
--- a/pages/protocol/crosschain/_meta.json
+++ b/pages/protocol/crosschain/_meta.json
@@ -1,5 +1,6 @@
{
"overview": "Overview",
+ "somnia": "Somnia",
"tempo": "Tempo (TIP-20)",
"addresses": "Addresses",
"code": "Code"
diff --git a/pages/protocol/crosschain/addresses.mdx b/pages/protocol/crosschain/addresses.mdx
index 040b93c..c6ce1ef 100644
--- a/pages/protocol/crosschain/addresses.mdx
+++ b/pages/protocol/crosschain/addresses.mdx
@@ -47,6 +47,20 @@ Each address of these OFTs is unique:
- zkSync Era, Abstract maintain the same addresses across all 6 OFTs. This is due to the ZK compiler.
+#### Deterministic Addresses (Somnia and Tempo)
+
+Somnia and Tempo share the same set of `0x000000...` OFT addresses deployed via deterministic deployment.
+
+| | Address | Somnia |
+| :---------------- | :------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- |
+| ProxyAdmin | `0x000000dbfaA1Fb91ca46867cE6D41aB6da4f7428` | [`link`](https://explorer.somnia.network/address/0x000000dbfaA1Fb91ca46867cE6D41aB6da4f7428) |
+| frxUSD | `0x00000000D61733e7A393A10A5B48c311AbE8f1E5` | [`link`](https://explorer.somnia.network/address/0x00000000D61733e7A393A10A5B48c311AbE8f1E5) |
+| sfrxUSD | `0x00000000fD8C4B8A413A06821456801295921a71` | [`link`](https://explorer.somnia.network/address/0x00000000fD8C4B8A413A06821456801295921a71) |
+| frxETH | `0x000000008c3930dCA540bB9B3A5D0ee78FcA9A4c` | [`link`](https://explorer.somnia.network/address/0x000000008c3930dCA540bB9B3A5D0ee78FcA9A4c) |
+| sfrxETH | `0x00000000883279097A49dB1f2af954EAd0C77E3c` | [`link`](https://explorer.somnia.network/address/0x00000000883279097A49dB1f2af954EAd0C77E3c) |
+| WFRAX (prev. FXS) | `0x00000000E9CE0f293D1Ce552768b187eBA8a56D4` | [`link`](https://explorer.somnia.network/address/0x00000000E9CE0f293D1Ce552768b187eBA8a56D4) |
+| FPI | `0x00000000bC4aEF4bA6363a437455Cb1af19e2aEb` | [`link`](https://explorer.somnia.network/address/0x00000000bC4aEF4bA6363a437455Cb1af19e2aEb) |
+
| | Semi-Deterministic | Linea | Scroll | Monad | Base | zkSync |
| :---------------- | :------------------------------------------- | :----------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- | :------------------------------------------- |
| ProxyAdmin | `0x223a681fc5c5522c85C96157c0efA18cd6c5405c` | [`link`](https://lineascan.build/address/0x3cf371c128b092b085B7732069cEAF3Fd863F270) | [`link`](https://scrollscan.com/address/0x8f1b9c1fd67136d525e14d96efb3887a33f16250) | [`link`](https://monadscan.com/address/0xc2871eae630640ce1a16b39a17c498f22d76c21a) | [`link`](https://basescan.org/address/0xe5020A6d073a794B6E7f05678707dE47986Fb0b6) | `0xe59dcae52a4ffa39be99588486c84bc2dc1ba52f` |
@@ -60,6 +74,13 @@ Each address of these OFTs is unique:
- Ethereum WFRAX
- `0x04ACaF8D2865c0714F79da09645C13FD2888977f`
+#### Ethereum Admin
+
+| Contract | Address |
+| :-------------- | :------------------------------------------------------------------------------------------------------------------------ |
+| ProxyAdmin | [`0x223a681fc5c5522c85C96157c0efA18cd6c5405c`](https://etherscan.io/address/0x223a681fc5c5522c85C96157c0efA18cd6c5405c) |
+| ProxyAdmin owner (Timelock) | [`0xb898Ad2976b4d8f2E21521C9db16b7497825E503`](https://etherscan.io/address/0xb898Ad2976b4d8f2E21521C9db16b7497825E503) |
+
### Non-EVM
| | Solana | Movement/Aptos |
@@ -113,7 +134,39 @@ Each address of these OFTs is unique:
| Scroll | [`link`](https://app.safe.global/home?safe=scr:0x73F365d34b81E731825a094c2E722A08574335cd) |
| Sei | [`link`](https://sei-safe.protofire.io/home?safe=sei:0x0357D02fc95320b990322d3ff69204c3D251171b) |
| Solana | [`link`](https://app.squads.so/squads/FSRTW4KPGifKL8yKcZ8mfoR9mKtAjwZiTHbHwgix8AQo/home) |
+| Somnia | [`link`](https://safe.somnia.network/home?safe=somnia:0x9527e19F55d1afCE9F1e9Edcea79552bF41983F9) |
| Sonic | [`link`](https://app.safe.global/home?safe=sonic:0x457aEa9180b60a7076a9cf4E2485F266c9E47657) |
| Stable | [`link`](https://app.safe.global/home?safe=stable:0x0C46f54BF9EF8fd58e2D294b8cEA488204EcB3D8)
| X-Layer | [`link`](https://app.safe.global/home?safe=xlayer:0xe7Cc52f0C86f4FAB6630f1E26167B487fbF66a61) |
| zkSync | [`link`](https://app.safe.global/home?safe=zksync:0xd492dF0ce7905D7d91aE48F5e893AcAa38221486) |
+
+## HopV2 Contracts
+
+All cross-chain routes relay through the Fraxtal hub. Each remote chain deploys a `RemoteHopV2` contract and a `RemoteAdmin` contract (for Fraxtal-initiated admin operations).
+
+| Chain | `Hop` | `RemoteAdmin` |
+| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------ |
+| Fraxtal | [`0x00000000e18aFc20Afe54d4B2C8688bB60c06B36`](https://fraxscan.com/address/0x00000000e18aFc20Afe54d4B2C8688bB60c06B36) | [`0x34029e02821178B4387e12644896994f910D6E73`](https://fraxscan.com/address/0x34029e02821178B4387e12644896994f910D6E73) |
+| Abstract | [`0x0000006D38568b00B457580b734e0076C62de659`](https://abscan.org/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x000000000E0E120FCAc7b4d98e9E35E1DE6fdadb`](https://abscan.org/address/0x000000000E0E120FCAc7b4d98e9E35E1DE6fdadb) |
+| Arbitrum | [`0x0000006D38568b00B457580b734e0076C62de659`](https://arbiscan.io/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://arbiscan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Aurora | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.aurora.dev/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://explorer.aurora.dev/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Avalanche | [`0x0000006D38568b00B457580b734e0076C62de659`](https://routescan.io/address/0x0000006D38568b00B457580b734e0076C62de659/contract/43114/code) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://routescan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9/contract/43114/code) |
+| Base | [`0x0000006D38568b00B457580b734e0076C62de659`](https://basescan.org/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x07dB789aD17573e5169eDEfe14df91CC305715AA`](https://basescan.org/address/0x07dB789aD17573e5169eDEfe14df91CC305715AA) |
+| Berachain | [`0x0000006D38568b00B457580b734e0076C62de659`](https://berascan.com/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://berascan.com/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| BSC | [`0x0000006D38568b00B457580b734e0076C62de659`](https://bscscan.com/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://bscscan.com/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Ethereum | [`0x0000006D38568b00B457580b734e0076C62de659`](https://etherscan.io/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x181EBC9deA868ED8e5EeeAef7f767D43BF390dFa`](https://etherscan.io/address/0x181EBC9deA868ED8e5EeeAef7f767D43BF390dFa) |
+| Hyperliquid | [`0x0000006D38568b00B457580b734e0076C62de659`](https://hyperevmscan.io/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://hyperevmscan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Ink | [`0x0000006D38568b00B457580b734e0076C62de659`](https://routescan.io/address/0x0000006D38568b00B457580b734e0076C62de659/contract/57073/code) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://routescan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9/contract/57073/code) |
+| Katana | [`0x0000006D38568b00B457580b734e0076C62de659`](https://katanascan.com/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://katanascan.com/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Linea | [`0x0000006D38568b00B457580b734e0076C62de659`](https://lineascan.build/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0xfa803b63DaACCa6CD953061BDBa4E3da6b177447`](https://lineascan.build/address/0xfa803b63DaACCa6CD953061BDBa4E3da6b177447) |
+| Mode | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.mode.network/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://explorer.mode.network/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Optimism | [`0x0000006D38568b00B457580b734e0076C62de659`](https://optimistic.etherscan.io/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://optimistic.etherscan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Scroll | [`0x0000006D38568b00B457580b734e0076C62de659`](https://scrollscan.com/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x1dE5910A2b0f860A226a8a43148aeA91afbE3d01`](https://scrollscan.com/address/0x1dE5910A2b0f860A226a8a43148aeA91afbE3d01) |
+| Sei | [`0x0000006D38568b00B457580b734e0076C62de659`](https://seitrace.com/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://seitrace.com/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Somnia | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.somnia.network/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0xbfCb6F2f811a0DA4D54386458bF888B769EbFc5F`](https://explorer.somnia.network/address/0xbfCb6F2f811a0DA4D54386458bF888B769EbFc5F) |
+| Sonic | [`0x0000006D38568b00B457580b734e0076C62de659`](https://sonicscan.org/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://sonicscan.org/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Tempo | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.tempo.xyz/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x05b4a311Aac6658C0FA1e0247Be898aae8a8581f`](https://explorer.tempo.xyz/address/0x05b4a311Aac6658C0FA1e0247Be898aae8a8581f) |
+| Unichain | [`0x0000006D38568b00B457580b734e0076C62de659`](https://uniscan.xyz/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://uniscan.xyz/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| Worldchain | [`0x0000006D38568b00B457580b734e0076C62de659`](https://worldscan.org/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://worldscan.org/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| X-Layer | [`0x0000006D38568b00B457580b734e0076C62de659`](https://oklink.com/x-layer/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://oklink.com/x-layer/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) |
+| zkSync | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.zksync.io/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x000000000E0E120FCAc7b4d98e9E35E1DE6fdadb`](https://explorer.zksync.io/address/0x000000000E0E120FCAc7b4d98e9E35E1DE6fdadb) |
diff --git a/pages/protocol/crosschain/overview.mdx b/pages/protocol/crosschain/overview.mdx
index baa4515..471748c 100644
--- a/pages/protocol/crosschain/overview.mdx
+++ b/pages/protocol/crosschain/overview.mdx
@@ -131,6 +131,7 @@ Ethereum WFRAX OFT is also connected via the hub model. This means that bridging
- Polygon zkEVM
- Scroll
- Sei
+- Somnia
- Sonic
- Stable
- Unichain
@@ -138,6 +139,11 @@ Ethereum WFRAX OFT is also connected via the hub model. This means that bridging
- X-Layer
- zkSync
+Chain-specific integration notes:
+
+- [Somnia](./somnia) for the deterministic OFT and HopV2 deployment on chain ID `5031` / LayerZero EID `30380`
+- [Tempo](./tempo) for TIP-20-specific behavior and stablecoin-denominated gas
+
### Process
- Bridge through the FUI ([link](https://www.frax.com))
diff --git a/pages/protocol/crosschain/somnia.mdx b/pages/protocol/crosschain/somnia.mdx
new file mode 100644
index 0000000..d60eaa8
--- /dev/null
+++ b/pages/protocol/crosschain/somnia.mdx
@@ -0,0 +1,81 @@
+---
+title: Somnia
+lang: en-US
+---
+
+# Somnia
+
+Somnia is supported in Frax Mesh as a standard EVM deployment in the Fraxtal hub model. It uses the same deterministic `0x000000...` OFT address set as Tempo, but it does not use Tempo's TIP-20 extensions or stablecoin-denominated gas flow. On Somnia, bridge fees are paid in native gas and routing uses the standard OFT and HopV2 contracts.
+
+## Network Constants
+
+| Item | Value |
+| :--- | :---- |
+| Chain ID | `5031` |
+| LayerZero EID | `30380` |
+| RPC | `https://api.infra.mainnet.somnia.network` |
+| Explorer | [explorer.somnia.network](https://explorer.somnia.network) |
+| Admin Safe | [`0x9527e19F55d1afCE9F1e9Edcea79552bF41983F9`](https://safe.somnia.network/home?safe=somnia:0x9527e19F55d1afCE9F1e9Edcea79552bF41983F9) |
+| ProxyAdmin | [`0x000000dbfaA1Fb91ca46867cE6D41aB6da4f7428`](https://explorer.somnia.network/address/0x000000dbfaA1Fb91ca46867cE6D41aB6da4f7428) |
+| LayerZero Endpoint | [`0x6F475642a6e85809B1c36Fa62763669b1b48DD5B`](https://explorer.somnia.network/address/0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) |
+
+## Required Contracts
+
+Somnia is fully wired into the Fraxtal hub with the complete Frax OFT set plus the HopV2 relay contracts.
+
+| Contract | Address |
+| :------- | :------ |
+| frxUSD OFT | [`0x00000000D61733e7A393A10A5B48c311AbE8f1E5`](https://explorer.somnia.network/address/0x00000000D61733e7A393A10A5B48c311AbE8f1E5) |
+| sfrxUSD OFT | [`0x00000000fD8C4B8A413A06821456801295921a71`](https://explorer.somnia.network/address/0x00000000fD8C4B8A413A06821456801295921a71) |
+| frxETH OFT | [`0x000000008c3930dCA540bB9B3A5D0ee78FcA9A4c`](https://explorer.somnia.network/address/0x000000008c3930dCA540bB9B3A5D0ee78FcA9A4c) |
+| sfrxETH OFT | [`0x00000000883279097A49dB1f2af954EAd0C77E3c`](https://explorer.somnia.network/address/0x00000000883279097A49dB1f2af954EAd0C77E3c) |
+| WFRAX OFT | [`0x00000000E9CE0f293D1Ce552768b187eBA8a56D4`](https://explorer.somnia.network/address/0x00000000E9CE0f293D1Ce552768b187eBA8a56D4) |
+| FPI OFT | [`0x00000000bC4aEF4bA6363a437455Cb1af19e2aEb`](https://explorer.somnia.network/address/0x00000000bC4aEF4bA6363a437455Cb1af19e2aEb) |
+| RemoteHopV2 | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.somnia.network/address/0x0000006D38568b00B457580b734e0076C62de659) |
+| RemoteAdmin | [`0xbfCb6F2f811a0DA4D54386458bF888B769EbFc5F`](https://explorer.somnia.network/address/0xbfCb6F2f811a0DA4D54386458bF888B769EbFc5F) |
+
+For the complete crosschain address matrix, including Fraxtal lockboxes and all remote Hop contracts, see [Addresses](./addresses).
+
+## Routing Model
+
+- Fraxtal is the hub chain for Somnia.
+- `Somnia -> Fraxtal` and `Fraxtal -> Somnia` are the direct routes.
+- `Somnia -> other EVM chains` relays through Fraxtal with HopV2.
+- Somnia uses standard OFT fee quoting and native gas. There is no Somnia-specific TIP-20 fee token path.
+
+## HopV2 Admin Configuration
+
+The Somnia deployment in [hop-v2](https://github.com/FraxFinance/hop-v2) includes a dedicated `DeployRemoteHopV2Somnia` script and a Fraxtal-side `SetSomniaExecutorOptions` admin script.
+
+| Item | Value |
+| :--- | :---- |
+| Executor | [`0x4208D6E27538189bB48E603D6123A94b8Abe0A0b`](https://explorer.somnia.network/address/0x4208D6E27538189bB48E603D6123A94b8Abe0A0b) |
+| DVN | [`0x282b3386571f7f794450d5789911a9804FA346b4`](https://explorer.somnia.network/address/0x282b3386571f7f794450d5789911a9804FA346b4) |
+| Send library | [`0xC39161c743D0307EB9BCc9FEF03eeb9Dc4802de7`](https://explorer.somnia.network/address/0xC39161c743D0307EB9BCc9FEF03eeb9Dc4802de7) |
+| Required receive gas | `1,000,000` |
+
+The required Fraxtal-side executor option is `setExecutorOptions(30380, options)` with a `1_000_000` receive gas budget. That is the deployed configuration used for composed Fraxtal to Somnia deliveries.
+
+## Deployment Coverage
+
+The canonical Somnia implementation lives in these scripts:
+
+- [DeployRemoteHopV2Somnia.s.sol](https://github.com/FraxFinance/hop-v2/blob/master/src/script/hop/DeployRemoteHopV2Somnia.s.sol)
+- [SetSomniaExecutorOptions.s.sol](https://github.com/FraxFinance/hop-v2/blob/master/src/script/hop/RemoteAdmin/SetSomniaExecutorOptions.s.sol)
+- [SetupSourceFraxOFTFraxtalHubSomnia.s.sol](https://github.com/FraxFinance/frax-oft-upgradeable/blob/master/scripts/FraxtalHub/2_SetupSourceFraxOFTFraxtalHub/SetupSourceFraxOFTFraxtalHubSomnia.s.sol)
+- [SetupDestinationFraxOFTFraxtalHubSomnia.s.sol](https://github.com/FraxFinance/frax-oft-upgradeable/blob/master/scripts/FraxtalHub/3_SetupDestinationFraxOFTFraxtalHub/SetupDestinationFraxOFTFraxtalHubSomnia.s.sol)
+- [SendFraxOFTFraxtalToSomnia.s.sol](https://github.com/FraxFinance/frax-oft-upgradeable/blob/master/scripts/FraxtalHub/4_SendFraxOFTFraxtalHub/SendFraxOFTFraxtalToSomnia.s.sol)
+- [SendFraxOFTSomniaToFraxtal.s.sol](https://github.com/FraxFinance/frax-oft-upgradeable/blob/master/scripts/FraxtalHub/4_SendFraxOFTFraxtalHub/SendFraxOFTSomniaToFraxtal.s.sol)
+
+The OFT setup scripts cover all six deterministic OFTs on Somnia, and the destination setup script narrows the pairing to the required Fraxtal and Somnia configs for hub routing.
+
+## Verified Routes
+
+The Frax team has already recorded successful send transactions in both directions:
+
+| Direction | LayerZeroScan |
+| :-------- | :------------ |
+| Fraxtal -> Somnia | [tx](https://layerzeroscan.com/tx/0xbaf9be736674326a02b06aff62da434f54551eb62d54fb417140d344a04d0b66) |
+| Somnia -> Fraxtal | [tx](https://layerzeroscan.com/tx/0x00f61cabc31c9a35fd2e75e8149ace9dec856091216e8622057ec3f0e8a1441a) |
+
+That means the required Somnia surface area is in place: deterministic OFTs, HopV2 relay, RemoteAdmin, executor options, and tested Fraxtal hub routes.
\ No newline at end of file