# @polkadot/signer-cli

> A commandline signer for offline signature generataion

Latest version **0.63.21** (published 2026-09-23) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install @polkadot/signer-cli
pnpm add @polkadot/signer-cli
yarn add @polkadot/signer-cli
bun add @polkadot/signer-cli
```

Provides the command `polkadot-js-signer`.

## Health

**Score 65/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.63.21 |
| Published | 2026-09-23 |
| First published | 2019-09-10 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=18 |
| Dependencies | 8 |
| Unpacked size | 40.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 280 |
| Author | Jaco Greeff |
| Maintainers | jacogr, polkadotjs, paritytech-ci |

## Links

- npm: https://www.npmjs.com/package/@polkadot/signer-cli
- Repository: https://github.com/polkadot-js/tools
- Homepage: https://github.com/polkadot-js/tools/tree/master/packages/signer-cli#readme
- Issues: https://github.com/polkadot-js/tools/issues
- npm.io page: https://npm.io/package/@polkadot/signer-cli

## Dependencies (8)

- [tslib](https://npm.io/package/tslib.md) ^2.8.1
- [yargs](https://npm.io/package/yargs.md) ^17.7.2
- [@polkadot/api](https://npm.io/package/@polkadot/api.md) ^17.0.1
- [@polkadot/util](https://npm.io/package/@polkadot/util.md) ^14.0.3
- [@polkadot/types](https://npm.io/package/@polkadot/types.md) ^17.0.1
- [@polkadot/api-cli](https://npm.io/package/@polkadot/api-cli.md) ^0.63.21
- [@polkadot/keyring](https://npm.io/package/@polkadot/keyring.md) ^14.0.3
- [@polkadot/util-crypto](https://npm.io/package/@polkadot/util-crypto.md) ^14.0.3

## Recent versions

- 0.63.21 (latest) — 2026-09-23
- 0.51.12-0 (beta) — 2022-06-21
- 0.63.20 — 2026-03-26
- 0.63.19 — 2025-11-26
- 0.63.18 — 2025-11-12
- 0.63.17 — 2025-10-22
- 0.63.16 — 2025-09-24
- 0.63.15 — 2025-08-27
- 0.63.14 — 2025-08-14
- 0.63.13 — 2025-07-30
- 0.63.12 — 2025-07-15
- 0.63.11 — 2025-07-02
- 0.63.10 — 2025-06-18
- 0.63.9 — 2025-06-05
- 0.63.8 — 2025-05-28
- … 424 more at https://npm.io/package/@polkadot/signer-cli/versions

## README

# @polkadot/signer-cli

A simple CLI interface for offline signing. This can also be executed via the [docker image](../../README.md#docker).

## Create a transaction

To create a transaction, you need to use the API to connect to a chain, enabling the creation of a transaction using the chain's metadata. In a terminal, run the `submit` command with the following form:

`yarn run:signer submit --account <ss58> --ws <endpoint> <module.method> [param1] [...] [paramX]`

For instance, to make a transfer, we run the following command:

`yarn run:signer submit --account 5HNHXTw65dTNVGRdYkxFUpKcvmUYQMZHcDHmSKpuC8pvVEaN --ws wss://poc3-rpc.polkadot.io/ balances.transfer 5DkQbYAExs3M2sZgT1Ec3mKfZnAQCL4Dt9beTCknkCUn5jzo 123`

On execution, it will prompt us with:

```
Payload: 0x040300ff4a83f1...a8239139ff3ff7c3f6
Signature>
```

The `Payload` is the hex that needs to be signed. Pasting the hex signature (followed by `Enter`) submits it to the chain.

You can also use this command to submit pre-signed transactions, e.g. generated using the `sendOffline` command (see below).

The syntax is as follows:

`yarn run:signer submit --tx <signedTransaction> --ws <endpoint>`

## Sign a transaction

To sign, you do not need a network connection at all and this command does not use the API to make connections to a chain. In a terminal, run the `sign` command with the following form:

`yarn run:signer sign --account <ss58> --seed <suri> --type <ed25519|sr25519> <hex payload>`

For instance, to sign the transfer made above, we run:

`yarn run:signer sign --account 5HNHXTw65dTNVGRdYkxFUpKcvmUYQMZHcDHmSKpuC8pvVEaN --seed "leaf ... rude" --type sr25519 0x040300ff4a83f1...a8239139ff3ff7c3f6`

On execution, it will respond with:

```
Signature: 0xe6facf194a8e...413ce3155c2d1240b
```

Paste this signature into the submission in the first terminal, and off we go.

By default, `submit` will create a mortal extrinsic with a lifetime of 50 blocks. Assuming a six-second block time, you will have five minutes to go offline, sign the transaction, paste the signature, and submit the signed transaction.

## Send offline

This functionality lets you generate signed transactions for execution at a later time, on a different device or using other tools. It is intended to resemble MyEtherWallet's [`Send offline`](https://kb.myetherwallet.com/en/offline/offline_transaction/) feature.

The flow is similar to the `submit` command. First, run the `sendOffline` command on a computer with a network connection:

`yarn run:signer sendOffline --account 5HNHXTw65dTNVGRdYkxFUpKcvmUYQMZHcDHmSKpuC8pvVEaN --ws wss://poc3-rpc.polkadot.io/ balances.transfer 5DkQbYAExs3M2sZgT1Ec3mKfZnAQCL4Dt9beTCknkCUn5jzo 123`

This will give you a payload to sign. Use the `sign` command as per instructions above.

Once you've pasted the signature into the `sendOffline` terminal (and hit `Enter`), it will print the signed transaction that can be stored and submitted later (e.g. using the `submit` command).

Run `yarn run:signer --help` to learn about optional parameters.

---
_Source: https://npm.io/package/@polkadot/signer-cli · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
