Skip to main content
seictl is a purpose-built CLI that helps Sei node patch configuration TOML files (app.toml, client.toml, config.toml) and JSON genesis files.
You can find the seictl GitHub repository here

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
  • Smart Target Detection: Automatically detects which configuration file to modify based on patch content
  • Flexible Output: Write to stdout, a specific file, or modify files in-place
  • Atomic Writes: Safe file modifications using atomic write operations
  • Merge Patch Algorithm: Intelligently merges patches with 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, e.g.:

Build from Source

If you prefer to build from source or need a specific configuration:

Prerequisites

  • Go 1.24.5 or higher

Build

Install via Go

Usage

Global Options

  • --home <path>: Sei home directory (default: ~/.sei, can be set via SEI_HOME environment variable)

Commands

Patch Command

patch

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

Genesis Commands

genesis patch

Apply a merge-patch to the Sei genesis JSON file.
Options:
  • -o, --output <path>: Write output to 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 TOML file.
Options:
  • --target <type>: Specify which configuration file to patch (app, client, or config)
    • If not specified, the target is automatically detected based on the patch content
  • -o, --output <path>: Write output to specified file
  • -i, --in-place-rewrite: Modify the configuration file in-place
Examples:

Configuration Targets

The config command can work with three different 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:
  • Proxy app and 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 works as follows:
  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 for patching any arbitrary TOML or JSON file on your system. Requires explicit --target path.
  • genesis patch: Use specifically for Sei genesis files. Automatically uses $HOME/.sei/config/genesis.json.
  • config patch: Use specifically for Sei configuration files with automatic target detection. Automatically uses files in $HOME/.sei/config/.

File Locations

By default, seictl looks for configuration files in the following 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
Where $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 temp file, then rename)
  • Permission Preservation: In-place modifications preserve original file permissions
  • Format Validation: Validates file extensions before processing (must be .toml or .json)
  • Target Validation: Prevents accidental modification of wrong configuration files
  • Auto-detection Safety: Refuses to proceed if patch could apply to multiple targets
  • Early Validation: Checks file format and existence before reading patch data