Skip to main content
seictl is a purpose-built CLI that helps you patch the configuration files of a Sei node. It handles TOML configuration files (app.toml, client.toml, config.toml) and JSON genesis files.

Features

  • Configuration management: Patch Sei daemon configuration files (app.toml, client.toml, config.toml)
  • Genesis management: Apply merge patches to genesis JSON files
  • Universal patching: Apply merge patches to any TOML or JSON file
  • Automatic target detection: Detects which configuration file to modify from the patch content
  • Output options: Write to stdout or to a specific file, or modify files in place
  • Atomic writes: Modifies files safely with atomic write operations
  • Merge patch algorithm: Merges patches into existing configurations

Installation

Pre-built binaries are available for Linux, macOS, and Windows. Download the latest release from the releases page.

Quick install

Verify installation

Verify download (optional)

All releases include a checksums.txt file for verification. For example:

Build from source

Build from source if you prefer this method or need a specific configuration.

Prerequisites

This is newer than the Go version needed to build seid (1.25.6). The toolchain from the node setup guide is therefore a minor version behind. With the default GOTOOLCHAIN=auto, the build still works: the go command downloads the toolchain that go.mod asks for. If you have set GOTOOLCHAIN=local or build without network access, install Go 1.26.0 or later, or use a prebuilt binary above.

Build

Install via Go

Usage

Global options

  • --home <path>: The Sei home directory (default: ~/.sei). You can also set it with the SEI_HOME environment variable.

Commands

Patch command

patch

Apply a merge patch to any TOML or JSON file. This universal patching command works with any file format. It is not limited to Sei-specific configurations.
Options:
  • --target <path>: Path to the TOML or JSON file to patch (required)
  • -o, --output <path>: Write the output to the specified file
  • -i, --in-place-rewrite: Modify the target file in place
Examples:
Note: The format is detected automatically from the file extension (.toml or .json).

Genesis commands

genesis patch

Apply a merge patch to the Sei genesis JSON file.
Options:
  • -o, --output <path>: Write the output to the specified file
  • -i, --in-place-rewrite: Modify the genesis file in place
Examples:

Config commands

config patch

Apply a merge patch to a Sei configuration file in TOML format.
Options:
  • --target <type>: Specify which configuration file to patch (app, client, or config)
    • If you do not specify a target, it is detected automatically from the patch content
  • -o, --output <path>: Write the output to the specified file
  • -i, --in-place-rewrite: Modify the configuration file in place
Examples:

Configuration targets

The config command can work with three configuration files:

app.toml

Application-level configuration, including:
  • Gas prices and block settings
  • State management (state-sync, state-commit, state-store)
  • EVM configuration
  • Telemetry and monitoring
  • API, gRPC, and Rosetta endpoints
  • IAVL and WASM settings

client.toml

Client-level configuration, including:
  • Chain ID
  • Keyring backend
  • Output format
  • Node endpoint
  • Broadcast mode

config.toml

Node-level configuration, including:
  • Database settings
  • Logging configuration
  • RPC and P2P settings
  • Mempool and consensus parameters
  • State sync and block sync
  • Transaction indexing

Merge patch behavior

The merge patch algorithm uses these rules:
  1. Nested merging: Patches are merged recursively into nested structures
  2. Null deletion: Setting a value to null removes that key from the configuration
  3. Addition: New keys in the patch are added to the configuration
  4. Replacement: Existing scalar values are replaced with patch values
Example: Original:
Patch:
Result:

Examples

Command comparison

When to use each command

  • patch: Use it to patch any TOML or JSON file on your system. It requires an explicit --target path.
  • genesis patch: Use it specifically for Sei genesis files. It automatically uses $HOME/.sei/config/genesis.json.
  • config patch: Use it specifically for Sei configuration files, with automatic target detection. It automatically uses files in $HOME/.sei/config/.

File locations

By default, seictl looks for configuration files in these locations:
  • Genesis: $HOME/.sei/config/genesis.json
  • App config: $HOME/.sei/config/app.toml
  • Client config: $HOME/.sei/config/client.toml
  • Node config: $HOME/.sei/config/config.toml
Here, $HOME is the value of the --home flag or the SEI_HOME environment variable.

Safety features

  • Atomic writes: All file modifications use atomic write operations (write to a temporary file, then rename it)
  • Permission preservation: In-place modifications keep the original file permissions
  • Format validation: Validates file extensions before processing (must be .toml or .json)
  • Target validation: Prevents accidental changes to the wrong configuration files
  • Auto-detection safety: Stops if the patch could apply to more than one target
  • Early validation: Checks the file format and that the file exists before it reads the patch data