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.
See the
seictl GitHub repository.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 (recommended)
Pre-built binaries are available for Linux, macOS, and Windows. Download the latest release from the releases page.Quick install
Linux (x86_64)
Linux (x86_64)
Linux (ARM64)
Linux (ARM64)
Linux (ARMv7)
Linux (ARMv7)
macOS (Apple Silicon)
macOS (Apple Silicon)
macOS (Intel)
macOS (Intel)
Windows (x86_64)
Windows (x86_64)
Verify installation
Verify download (optional)
All releases include achecksums.txt file for verification. For example:
Build from source
Build from source if you prefer this method or need a specific configuration.Prerequisites
- Go 1.26.0 or later. The commands below build
main. Its Go requirement is set ingo.mod.
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 theSEI_HOMEenvironment 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.
--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
.toml or .json).
Genesis commands
genesis patch
Apply a merge patch to the Sei genesis JSON file.
-o, --output <path>: Write the output to the specified file-i, --in-place-rewrite: Modify the genesis file in place
Config commands
config patch
Apply a merge patch to a Sei configuration file in TOML format.
--target <type>: Specify which configuration file to patch (app,client, orconfig)- 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
Configuration targets
Theconfig 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:- Nested merging: Patches are merged recursively into nested structures
- Null deletion: Setting a value to
nullremoves that key from the configuration - Addition: New keys in the patch are added to the configuration
- Replacement: Existing scalar values are replaced with patch values
Examples
Update minimum gas prices
Update minimum gas prices
Enable API endpoint
Enable API endpoint
Modify genesis chain ID
Modify genesis chain ID
Update multiple configuration sections
Update multiple configuration sections
Patch a custom TOML configuration
Patch a custom TOML configuration
Patch a custom JSON data file
Patch a custom JSON data file
Using custom Sei home directory
Using custom Sei home directory
Command comparison
When to use each command
patch: Use it to patch any TOML or JSON file on your system. It requires an explicit--targetpath.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
$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
.tomlor.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