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

# Deployment

> Current live deployment details for the Ryvo Protocol.

The Ryvo protocol is currently live on Solana devnet. This page records the canonical identifiers and parameters of that deployment.

## Live deployment

| Field                            | Value                                                                                |
| -------------------------------- | ------------------------------------------------------------------------------------ |
| Program ID                       | `3UyUFeNsUYPpM6hMRf7H8wg3MKEXQ82rqnsXhZrUwgSD`                                       |
| Cluster                          | `devnet`                                                                             |
| Chain ID                         | `1`                                                                                  |
| Message domain                   | `a58a109a38f14cc27ef174135176cab3`                                                   |
| Gateway-channel settlement token | Official devnet USDC, mint `4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU`            |
| Framework                        | Anchor                                                                               |
| Source                           | [github.com/Ryvonetwork/ryvo-protocol](https://github.com/Ryvonetwork/ryvo-protocol) |

## Chain IDs

Ryvo distinguishes deployments by a protocol-level chain ID stored in `GlobalConfig` and folded into the signed [message domain](/reference/messages#message-domain).

| Chain ID | Network  |
| -------- | -------- |
| `0`      | Mainnet  |
| `1`      | Devnet   |
| `2`      | Testnet  |
| `3`      | Localnet |

Different chain IDs produce different message domains even when the program ID is identical. A commitment signed for one chain will never verify on another.

## Live devnet timing

The current devnet deployment uses the production channel-unlock policy while keeping participant withdrawals instant:

| Action                           | Live devnet value                                                                                         |
| -------------------------------- | --------------------------------------------------------------------------------------------------------- |
| Participant withdrawal           | Instant (`0` seconds)                                                                                     |
| Unilateral channel unlock        | `72` hours (`259200` seconds)                                                                             |
| Cooperative channel unlock       | Immediate with both parties' consent                                                                      |
| Gateway-channel collateral token | Official devnet USDC; resolve the `token_id` from `TokenRegistry` or `RYVO_PROTOCOL_DEVNET_USDC_TOKEN_ID` |

Gateway-channel v1 uses locked channel collateral only. General participant balances remain withdrawable immediately, while channel collateral becomes spendable again through cooperative unlock or the 72-hour unilateral fallback.

## Fee parameters

| Parameter                  | Range                                  |
| -------------------------- | -------------------------------------- |
| Withdrawal fee (`fee_bps`) | `3`–`30` bps (0.03%–0.3%)              |
| Minimum withdrawal fee     | 50,000 native units (6-decimal tokens) |
| Registration fee           | `0`, or between 0.001 SOL and 0.01 SOL |

The fee recipient is a wallet configured in `GlobalConfig` and can be updated by the config authority.

## Authority model

Ryvo uses two administrative roles, both of which use a two-step pending/accept handoff:

* **Config authority** - can update `fee_recipient`, `fee_bps`, `registration_fee_lamports`, and nominate a successor.
* **Registry authority** - can register new settlement tokens in `TokenRegistry`.

Neither authority can:

* move participant funds
* alter settled balances
* rewrite the chain ID or message domain (these are fixed at initialize time)
* upgrade which token an existing `token_id` maps to

See [Trust model](/security/trust-model) for the full security posture and upgrade model.

## Agentic surfaces

Agents can discover the live deployment and prepare protocol actions through the published agentic tooling:

| Surface      | Package or path                                                                    | Scope                                                          |
| ------------ | ---------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| Protocol CLI | `@ryvonetwork/protocol-cli`                                                        | Read protocol state and prepare unsigned transactions/messages |
| Protocol MCP | `@ryvonetwork/protocol-mcp`                                                        | Mirrored read/prepare tools plus `ryvo://protocol/llm.txt`     |
| Skills repo  | [github.com/Ryvonetwork/ryvo-agentic](https://github.com/Ryvonetwork/ryvo-agentic) | Gateway and protocol skills for agent runtimes                 |

See [Agentic tools](/reference/agentic-tools) for package names, skills, LLM text, and the channel-payment guardrails.

## Message domain

The signing domain for a deployment is derived inside the program as:

```
message_domain = SHA256(
    "ryvo-message-domain-v1"
    || program_id
    || chain_id (little-endian u16)
)[..16]
```

Every signed `ryvo-cmt-v5` and cooperative-round message carries this 16-byte domain, and the program rejects any message whose domain does not match `GlobalConfig.message_domain` for the executing deployment. See [Message formats](/reference/messages#message-domain).

## See also

* [Quickstart](/getting-started/quickstart)
* [Message formats](/reference/messages)
* [On-chain properties](/security/properties)
