---
title: SVM Signers
description: Signers for Solana and SVM Compatible Blockchains
---

These signers are available when using the SVM addon for transaction signing.

## secret_key

The `svm::secret_key` signer can be used to synchronously sign a transaction
using a secret key, mnemonic, or keypair file.

### Inputs

| Name              | Required | Type   | Description                                             |
| ----------------- | -------- | ------ | ------------------------------------------------------- |
| `secret_key`      | optional | string | The secret key used to sign messages and transactions   |
| `mnemonic`        | optional | string | The mnemonic phrase used to generate the secret key     |
| `derivation_path` | optional | string | The derivation path used to generate the secret key     |
| `keypair_json`    | optional | string | A path to a keypair.json file containing the secret key |

### Outputs

| Name         | Type   | Description                            |
| ------------ | ------ | -------------------------------------- |
| `public_key` | string | The public key of the account          |
| `address`    | string | The SVM address (alias for public_key) |

```hcl
signer "deployer" "svm::secret_key" {
    secret_key = input.secret_key
}
```

You can also use a mnemonic:

```hcl
signer "deployer" "svm::secret_key" {
    mnemonic = input.mnemonic
    derivation_path = "m/44'/501'/0'/0'"
}
```

Or a keypair file:

```hcl
signer "deployer" "svm::secret_key" {
    keypair_json = "~/.config/solana/id.json"
}
```

---

## web_wallet

The `svm::web_wallet` signer will allow a Runbook operator to sign the
transaction with the browser signer of their choice.

### Inputs

| Name               | Required | Type   | Description                                             |
| ------------------ | -------- | ------ | ------------------------------------------------------- |
| `expected_address` | optional | string | The SVM address expected to connect (omit to allow any) |

### Outputs

| Name         | Type   | Description                             |
| ------------ | ------ | --------------------------------------- |
| `address`    | string | The address of the connected account    |
| `public_key` | string | The public key of the connected account |

```hcl
signer "alice" "svm::web_wallet" {
    expected_address = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}
```

This signer will prompt the user in the Web UI to:

1. Connect their wallet
2. Provide a public key via message signature
3. Sign all transactions requiring this signer

---

## squads

The `svm::squads` signer can be used to sign transactions with a Squads multisig
vault.

### Inputs

| Name      | Required | Type   | Description             |
| --------- | -------- | ------ | ----------------------- |
| `address` | optional | string | The squad vault address |

### Outputs

| Name         | Type   | Description                            |
| ------------ | ------ | -------------------------------------- |
| `public_key` | string | The public key of the squad vault      |
| `address`    | string | The SVM address (alias for public_key) |

```hcl
signer "deployer" "svm::squads" {
    address = input.address
}
```

Using Squads multisig allows for secure, multi-party transaction signing without
exposing individual private keys.
