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

# Swig on EVM

> Create a wallet, give each key a role, and send direct or sponsored transfers.

Use the **source-available TypeScript, Rust, and Python SDKs** with your own keys
and RPC connection. You need a compatible Swig deployment from your operator;
[Environment Setup](/evm/setup) explains how to obtain its details.

## Build a wallet flow

<CardGroup cols={2}>
  <Card title="Set up your environment" icon="terminal" href="/evm/setup">
    Choose a language and connect to a compatible Swig deployment.
  </Card>

  <Card title="Create a wallet" icon="wallet" href="/evm/create-wallet">
    Deploy a wallet with a root authority and fund its vault.
  </Card>

  <Card title="Add a spending role" icon="key" href="/evm/add-role">
    Give another key a native-currency allowance.
  </Card>

  <Card title="Read a role" icon="magnifying-glass" href="/evm/read-role">
    Inspect the authority and action count before using the role.
  </Card>

  <Card title="Send a transfer" icon="arrow-right-arrow-left" href="/evm/send-transfer">
    Spend from the vault; the role's key pays transaction gas.
  </Card>

  <Card title="Send a sponsored transfer" icon="gas-pump" href="/evm/send-sponsored-transfer">
    Use a compatible bundler and paymaster to sponsor gas.
  </Card>
</CardGroup>

## Choose your client

The scenario pages put each language side by side. Swig supplies contract
bindings, permission codecs, and a small smart-account adapter.

| Language and SDK source | Ethereum client | Sponsored-transfer examples |
| - | - | - |
| [TypeScript](https://github.com/anagrambuild/swig-protocol-sdk/tree/5eec58c3eca4b79c483d245df2f2885313fd03dc/evm/typescript) | Viem | Viem and permissionless.js |
| [Rust](https://github.com/anagrambuild/swig-protocol-sdk/tree/5eec58c3eca4b79c483d245df2f2885313fd03dc/evm/rust) | Alloy | Local test fixture only |
| [Python](https://github.com/anagrambuild/swig-protocol-sdk/tree/5eec58c3eca4b79c483d245df2f2885313fd03dc/evm/python) | Web3.py and eth-account | Local test fixture only |

## Sponsored transfers

Sponsored operations currently use **already deployed accounts and EntryPoint
v0.9**, with one call per operation. The shared beacon requires a compatible
bundler policy. See [Send a Sponsored Transfer](/evm/send-sponsored-transfer)
for provider requirements and the tested SDK versions.

## Operate a fleet

The shared beacon selects the implementation used by every wallet in the fleet.
It lets an operator upgrade that fleet without individual
user upgrade transactions. [Bundler Compatibility](/evm/bundler-compatibility)
covers account registration and handling operations queued during an upgrade.

Building on Solana? See [Swig on Solana](/solana).
