> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://viem-c7cf71js8-wevm.vercel.app/api/mcp` to find what you need.

# Multisig

## Overview

:::warning
**Experimental.** The multisig coordination API may change in a future release.
:::

The `Multisig` module coordinates owner approvals for native multisig transactions. A request
handler validates each approval, stores the operation, selects a canonical quorum, and broadcasts
the final transaction after the configured threshold is reached.

Use [`multisig.approveTransaction`](/tempo/actions/multisig.approveTransaction) for the standard
client flow. Use [`Multisig.handleRequest`](/tempo/utilities/Multisig.handleRequest) when integrating
the coordinator into another RPC handler.

## Client Setup

Enable multisig coordination with a process-local store:

```ts twoslash
import { createClient } from 'viem/tempo'

const client = createClient({
  experimental_multisig: true,
})
```

This option creates a new [`Storage.memory`](/tempo/utilities/Storage.memory) store
for the client. The store exists only in the current process and loses its operations when the
process restarts.

For production, pass a shared store:

```ts twoslash
import { createClient, type Storage } from 'viem/tempo'

declare const store: Storage.Storage

const client = createClient({
  experimental_multisig: { store },
})
```

Every client or RPC process that coordinates the same approvals must use the same shared store.
Implement `compareAndSet` to prevent concurrent approvals from overwriting each other. Without it,
the coordinator falls back to `getItem` and `setItem`.

## See More

<Cards>
  <Card icon="lucide:server-cog" title="Multisig.handleRequest" description="Integrate multisig coordination into an RPC request handler." to="/tempo/utilities/Multisig.handleRequest" />

  <Card icon="lucide:database" title="Storage" description="Configure a process-local or persistent operation store." to="/tempo/utilities/Storage" />

  <Card icon="lucide:workflow" title="Multisig.Operation" description="Inspect and serialize pending and successful operations." to="/tempo/utilities/Multisig.Operation" />
</Cards>
