← Protocols
Rhinestone
01Description

Modular smart account toolkit. ModuleKit (Solidity) for building ERC-7579 modules and ModuleSDK (TypeScript) for installing/using them across Safe, Kernel, Nexus, and other ERC-7579 accounts.

02Best for
  • 01ERC-7579 module development
  • 02session keys & permissions
  • 03modular smart accounts
  • 04cross-account module portability
  • 05intent-based account flows
03Install
  • pnpm add @rhinestone/modulekit --shamefully-hoist
  • cp node_modules/@rhinestone/modulekit/remappings.txt remappings.txt
  • pnpm add @rhinestone/module-sdk
04Environment variables
VariableScopeDescription
RHINESTONE_API_KEYServerAPI key for the Rhinestone Orchestrator (intents, deposit service).
05Prompt snippet
Use Rhinestone to build and consume ERC-7579 modules. For Solidity development install ModuleKit (`pnpm add @rhinestone/modulekit --shamefully-hoist`), copy its remappings, and inherit `RhinestoneModuleKit` in tests, calling `makeAccountInstance("acct")` to get a fresh modular account against Safe/Kernel/Nexus. For frontend/backend use `@rhinestone/module-sdk`: import installer helpers like `getOwnableValidator({ owners })` and pass them to your account SDK's `installModule`. For chain-abstracted UX, use the Orchestrator (`@rhinestone/sdk`) to get cross-chain intents.
06Gotchas
  • ModuleKit requires `pnpm install --shamefully-hoist` (or equivalent) so Foundry can resolve nested deps — plain `pnpm install` produces missing import errors.
  • ERC-7579 is implemented slightly differently across Safe / Kernel / Nexus (hook ordering, fallback dispatch). Always run ModuleKit's integration tests against every target account type.
  • Modules are not portable to ERC-4337-only accounts that lack 7579 support — confirm the account interface before publishing a module.
  • Module-SDK installer helpers encode init data with specific module versions — pinning the SDK without pinning the on-chain module address can produce incompatible install calldata after an upgrade.
  • ModuleKit is in active development with breaking changes between minor versions; pin exact versions in package.json and remappings.
07Alternatives