Main Features 🚀

Effortless setup

Either use our public docker image or start it in dev mode with minimal configuration.

Flexible wallet options

Use a Sequence Smart Wallet with locally managed private keys or securely integrate AWS/GCP KMS for enhanced security.

Webhook management

Leverage our high-performance indexer to build and setup your own custom webhooks through the performant Sequence Indexer.

Tenderly integration

Leverage Tenderly to easily debug your transactions, you get a simulation URL for every transaction executed through Sidekick.

Automatic contract verification

Veryfing contracts is cumbersom, Sidekick does it for you for every contract deployed.

Integrated with Sequence Builder

Already have a Sequence Builder project? Import all your contracts data into Sidekick with a single API call.

Built-in Bull MQ Dashboard

Create, monitor and manage your background jobs.

Swagger UI

Explore the API documentation and test the endpoints with the Swagger UI

Optimized transaction execution

Transactions are submitted at optimal gas prices, with automatic resubmission if not included in the mempool within three blocks.

Analytics and monitoring

Sidekick comes integrated with Grafana, Prometheus and Blackbox Exporter to monitor your backend health.

About the backend wallet

Sidekick creates a Sequence Smart Contract Wallet based on the EVM_PRIVATE_KEY you provide, this allows gas-sponsorship, batching and other optimizations.

To configure the backend wallet, you can:

  • Declare your EVM_PRIVATE_KEY in the .env file for a local setup (not recommended for production)
  • Use the recommended method: setting up AWS or GCP KMS and adding the necessary credentials in the .env file.

To find out what are the required credentials for local, AWS, or GCP wallet configurations, please refer to the env.example file.

Make sure you choose the correct key types in AWS KMS and GCP KMS.

  • AWS KMS: ECC_NIST_P256_KEY_ALIAS
  • GCP KMS: GCP_KEY_RING_NAME

Sidekick is built to integrate seamlessly with AWS and GCP KMS, allowing you to use your KMS signer. We’ve developed adapters that make AWS/GCP KMS compatible with the ethers signer type, ensuring compatibility with the latest version.

Sequence Sidekick empowers developers with a scalable, plug-and-play backend solution for blockchain-based applications, allowing you to focus on building without backend complexities.

Start with Docker from CLI

There is a public docker image available on GitHub Container Registry.

docker run -p 7500:7500 \
  -e EVM_PRIVATE_KEY=0x \
  ghcr.io/0xsequence/sidekick

This should get you started with a local Sidekick backend running on port 7500 with the minimal features.

We recomment setting SEQUENCE_PROJECT_ACCESS_KEY as well but for testing purposes we provide a default one, you can get yours from Sequence Builder.

Start Sidekick in dev mode

1

Clone the Sidekick repository

git clone https://github.com/0xsequence/sidekick
2

Setup the required environment variables

Required Environment Variables

VariableDescription
PROJECT_ACCESS_KEYAccess key from Sequence Builder API Keys
EVM_PRIVATE_KEYPrivate key for the EOA used to sign transactions

Optional Environment Variables

VariableDescription
PORTPort for the Sidekick server (default: 7500)
HOSTHost address for the server (default: 0.0.0.0)
REDIS_HOSTRedis server host (default: localhost)
REDIS_PORTRedis server port (default: 6379)
REDIS_PASSWORDPassword for Redis server (optional)
DATABASE_URLPostgreSQL connection string for Sidekick database
SIDEKICK_API_SECRET_KEYSecret key required for write access to the Sidekick API
ETHERSCAN_API_KEYAPI key for Etherscan to enable contract verification
VERIFY_CONTRACT_ON_DEPLOYEnable automatic contract verification on deployment (set to true to enable)
DEBUGEnable debug logging (set to true for verbose output)
SIGNER_TYPEType of signer to use (local, aws_kms, google_kms)
AWS_REGIONAWS account region
AWS_ACCESS_KEY_IDAWS access key ID
AWS_SECRET_ACCESS_KEYAWS secret access key
AWS_KMS_KEY_IDID of the KMS key to use
PROJECTGCP project name
LOCATIONGCP project location
KEY_RINGKey ring name
CRYPTO_KEYCrypto key name
CRYPTO_KEY_VERSIONCrypto key version

Wallet Configuration Variables

Choose one of the following configurations:

For local wallet:

VariableDescription
SIGNER_TYPElocal
EVM_PRIVATE_KEY0x…

For AWS KMS:

VariableDescription
SIGNER_TYPEaws_kms
AWS_REGIONAWS account region
AWS_ACCESS_KEY_IDAWS access key ID
AWS_SECRET_ACCESS_KEYAWS secret access key
AWS_KMS_KEY_IDID of the KMS key to use

For GCP KMS:

VariableDescription
SIGNER_TYPEgoogle_kms
PROJECTGCP project name
LOCATIONGCP project location
KEY_RINGKey ring name
CRYPTO_KEYCrypto key name
CRYPTO_KEY_VERSIONCrypto key version
3

Make sure you have Docker installed

Get it from here

4

Start Sidekick in a Docker container

pnpm docker:start
5

Check your backend wallet address

curl -X GET 'http://localhost:3000/sidekick/smart-account-address'

Dev mode without Docker

If you want to make changes to the codebase and test them without Docker

pnpm install
pnpm dev:withRedis

This will run Sidekick and also start a Redis server.

Gas Sponsorship

On testnet, we sponsor all the transactions. However, on mainnet - you will want to ensure that you sponsor the transactions in order to ensure that they process correctly by sponsoring the contract itself. You can take a deeper look at our Gas Sponsorship solution to learn how to do this.