# permissionless

> A utility library for working with ERC-4337

Latest version **0.4.1** (published 2026-09-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install permissionless
pnpm add permissionless
yarn add permissionless
bun add permissionless
```

## Health

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

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

Warnings: low downloads; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.4.1 |
| Published | 2026-09-09 |
| First published | 2023-09-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 1.9 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 254 |
| Author | Pimlico |
| Maintainers | plusminushalf, kristofgazso, mouseless-eth |
| Keywords | ethereum, erc-4337, eip-4337, paymaster, bundler |

## Links

- npm: https://www.npmjs.com/package/permissionless
- Repository: https://github.com/pimlicolabs/permissionless.js
- Homepage: https://docs.pimlico.io/permissionless
- Issues: https://github.com/pimlicolabs/permissionless.js/issues
- npm.io page: https://npm.io/package/permissionless

## Alternatives

- [jsforce](https://npm.io/package/jsforce.md) — 851.2K weekly downloads
- [react-native-qrcode-svg](https://npm.io/package/react-native-qrcode-svg.md) — 693.5K weekly downloads
- [@salesforce/plugin-data](https://npm.io/package/@salesforce/plugin-data.md) — 394.9K weekly downloads
- [@backstage/plugin-search-common](https://npm.io/package/@backstage/plugin-search-common.md) — 308.5K weekly downloads
- [@chain-registry/types](https://npm.io/package/@chain-registry/types.md) — 38.4K weekly downloads

## Recent versions

- 0.4.1 (latest) — 2026-09-09
- 0.0.0-main.20260909T110526 (main) — 2026-09-09
- 0.0.0-main.20260818T214244 — 2026-08-18
- 0.0.0-main.20260818T211100 — 2026-08-18
- 0.4.0 — 2026-08-18
- 0.0.0-main.20260818T143940 — 2026-08-18
- 0.0.0-main.20260818T142531 — 2026-08-18
- 0.0.0-main.20260818T141740 — 2026-08-18
- 0.0.0-main.20260818T131610 — 2026-08-18
- 0.3.7 — 2026-07-09
- 0.0.0-main.20260709T224031 — 2026-07-09
- 0.0.0-main.20260709T222742 — 2026-07-09
- 0.0.0-main.20260709T160005 — 2026-07-09
- 0.3.6 — 2026-05-27
- 0.0.0-main.20260527T142122 — 2026-05-27
- … 674 more at https://npm.io/package/permissionless/versions

## README

<p align="center"><a href="https://docs.pimlico.io/permissionless"><img width="1000" title="Permissionless" src='https://raw.githubusercontent.com/pimlicolabs/permissionless.js/main/assets/banner.png' /></a></p>

# permissionless.js

![Node Version](https://img.shields.io/badge/node-20.x-green)

permissionless.js is a TypeScript library built on top of
[viem](https://viem.sh) for deploying and managing
[ERC-4337](https://eips.ethereum.org/EIPS/eip-4337) smart accounts, interacting
with bundlers and paymasters, and leveraging custom signers.

## Features

- **High-Level Smart Account Support**: We support a high-level API for
  deploying and managing smart accounts, including some of the most popular
  implementations ([Safe](https://safe.global), [Kernel](https://zerodev.app),
  [Biconomy](https://biconomy.io), etc.)
- **Bundler Support**: We support all bundler actions following
  [ERC-4337](https://eips.ethereum.org/EIPS/eip-4337#rpc-methods-eth-namespace).
- **Gas Sponsorship**: We support paymaster actions to allow you to easily
  sponsor gas fees.
- **User Operation Utility Functions**: We provide many low-level utility
  functions useful for dealing with User Operations.
- **Modular and Extensible**: We allow you to easily create and plug in your own
  smart account systems, bundlers, paymasters, and signers.
- **Built on & for viem**: permissionless.js is designed to be a thin wrapper
  around viem, maintaining the same style and overall feel viem provides.
- and a lot more...

## Documentation

[Take a look at our documentation](https://docs.pimlico.io/permissionless) to
learn more about permissionless.js.

## Installation

Install [viem](https://viem.sh) as a peer dependency.

Then install permissionless.js:

```bash
npm install viem permissionless
```

```bash
bun install viem permissionless
```

```bash
yarn add viem permissionless
```

### Optional Dependencies

For WebAuthn functionality (passkeys), you'll also need to install the `ox` package:

```bash
npm install ox
```

```bash
bun install ox
```

```bash
yarn add ox
```

**Note**: The `ox` package is optional and only required if you plan to use WebAuthn/passkey features. The library will throw a helpful error message if you try to use WebAuthn functionality without installing `ox`.

## Quick Start

```typescript
// Import the required modules.
import { createSmartAccountClient } from "permissionless";
import { createPaymasterClient } from "viem/account-abstraction";
import { sepolia } from "viem/chains";
import { http } from "viem";

const paymaster = createPaymasterClient({
  transport: http(`https://api.pimlico.io/v2/sepolia/rpc?apikey=${pimlicoApiKey}`)
})

const account = toSimpleSmartAccount<entryPointVersion>({
  client: getPublicClient(anvilRpc),
  owner: privateKeyToAccount(generatePrivateKey())
})

// Create the required clients.
const bundlerClient = createSmartAccountClient({
  account,
  paymaster, 
  chain: sepolia,
  bundlerTransport: http(
    `https://api.pimlico.io/v2/sepolia/rpc?apikey=${pimlicoApiKey}`,
  ), // Use any bundler url
});

// Consume bundler, paymaster, and smart account actions!
const userOperationReceipt = await bundlerClient.getUserOperationReceipt({
  hash: "0x5faea6a3af76292c2b23468bbea96ef63fb31360848be195748437f0a79106c8",
});
```

## Contributors

For a full explanation of permissionless.js, please visit our
[docs page](https://docs.pimlico.io/permissionless)

Build permissionless.js locally with:

```bash
bun run build
```

## License

Distributed under an MIT License. See [LICENSE](LICENSE) for more information.

## Contact

Feel free to ask any questions in our [Telegram group](https://t.me/pimlicoHQ)

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