# Build with Tempo Zones

Tempo Zones give applications a private account ledger connected to Tempo. You use a Zone’s RPC to read private balances and submit transactions, and the public Tempo chain to move funds into and out of the Zone.

A deposit locks tokens on Tempo and credits a private balance in the Zone. A withdrawal moves funds back to a Tempo address. These operations settle in stages, so the guides show both the transaction being accepted and the balance arriving at its destination.

The public Tempo portal holds backing assets while a Zone operator runs the private account ledger. Deposits, withdrawals, and signed settlement commitments connect the two chains.

## Connect your application

Your application uses a public Tempo client alongside a client for the Zone. The Zone client authenticates as your Tempo account so it can access that account’s private data.

To connect, you need the Zone’s RPC endpoint, chain ID, and access details from its operator. Start with [Connect to a Zone](https://tempo.xyz/developers/docs/guide/private-zones/connect-to-a-zone) to set up a client and make an authenticated request. For the underlying design, read the [Tempo Zones overview](https://tempo.xyz/developers/docs/protocol/zones).

<span id="before-you-start" />

## Try the testnet guides

The interactive guides use two example Zones on Tempo Testnet, called Zone A and Zone B. Zone A is the starting point for deposits and withdrawals; Zone B lets you try moving funds between Zones. The examples use the testnet tokens `OUSD` and `betaUSD`.

Each demo walks you through signing in with a passkey, getting testnet funds, and authorizing access to your Zone account. The embedded demos handle the RPC connection for you. If you are writing your own application, use the connection guide first.

<span id="choose-the-right-guide" />

* [Connect to a zone](https://tempo.xyz/developers/docs/guide/private-zones/connect-to-a-zone) — Set up a Zone client, authorize your account, and make your first RPC request.
* [Deposit to a zone](https://tempo.xyz/developers/docs/guide/private-zones/deposit-to-a-zone) — Move testnet funds from Tempo into a private balance and wait for the deposit to arrive.
* [Send tokens within a zone](https://tempo.xyz/developers/docs/guide/private-zones/send-tokens-within-a-zone) — Try a private transfer between accounts in the testnet sandbox.
* [Send tokens across zones](https://tempo.xyz/developers/docs/guide/private-zones/send-tokens-across-zones) — Move testnet funds between two Zones through Tempo.
* [Swap stablecoins across zones](https://tempo.xyz/developers/docs/guide/private-zones/swap-across-zones) — Combine a withdrawal, a public-chain swap, and a deposit into another Zone.
* [Withdraw from a zone](https://tempo.xyz/developers/docs/guide/private-zones/withdraw-from-a-zone) — Withdraw stablecoins from a zone back to your public balance.

<span id="testnet-compatibility" />

## About the testnet sandbox

These demos use an earlier testnet deployment with `viem` 2.54.6. Its interfaces and chain IDs differ from the current Zone protocol. The sandbox also supports plaintext deposits and direct in-Zone transfers; the current permissioned runtime uses encrypted deposits and does not yet enable those transfers.

Use the guide’s connection details for this sandbox. For another Zone, get the endpoint, access credentials, and supported SDK version from its operator. The [protocol reference](https://tempo.xyz/developers/docs/protocol/zones) describes the current implementation; the [connection guide](https://tempo.xyz/developers/docs/guide/private-zones/connect-to-a-zone) explains direct RPC access and how the demos connect through the docs server.
