Skip to main content

PATH Config File (`.config.yaml`)

CONFIGURATION FILES

A PATH stack is configured via two files:

FileRequiredDescription
.config.yamlPATH gateway configurations
.values.yamlPATH Helm chart deployment configurations

Table of Contents

All configuration for the PATH gateway is defined in a single YAML file named .config.yaml.

Exactly one of shannon_config or morse_config MUST be provided. This field determines the protocol that the gateway will use.

Example Shannon Config (click to expand)
# (Required) Shannon Protocol Configuration
shannon_config:
full_node_config:
rpc_url: https://shannon-testnet-grove-rpc.beta.poktroll.com
grpc_config:
host_port: shannon-testnet-grove-grpc.beta.poktroll.com:443
lazy_mode: false

gateway_config:
gateway_mode: "centralized"
gateway_address: pokt1up7zlytnmvlsuxzpzvlrta95347w322adsxslw
gateway_private_key_hex: 40af4e7e1b311c76a573610fe115cd2adf1eeade709cd77ca31ad4472509d388
owned_apps_private_keys_hex:
- 40af4e7e1b311c76a573610fe115cd2adf1eeade709cd77ca31ad4472509d388

# (Optional) Logger Configuration
logger_config:
level: "info" # Valid values: debug, info, warn, error
Example Morse Config (click to expand)
# (Required) Morse Protocol Configuration
morse_config:
full_node_config:
url: "https://pocket-rpc.liquify.com" # Required: Pocket node URL
relay_signing_key: "<128-char-hex>" # Required: Relay signing private key
http_config: # Optional
retries: 3 # Default: 3
timeout: "5000ms" # Default: "5000ms"

signed_aats: # Required
"<40-char-app-address>": # Application address (hex)
client_public_key: "<64-char-hex>" # Client public key
application_public_key: "<64-char-hex>" # Application public key
application_signature: "<128-char-hex>" # Application signature

# (Optional) Logger Configuration
logger_config:
level: "info" # Valid values: debug, info, warn, error

Config File Validation

VSCode Validation

If you are using VSCode, we recommend using the YAML Language Support extension for in-editor validation of the .config.yaml file. Enable it by ensuring the following annotation is present at the top of your config file:

# yaml-language-server: $schema=https://raw.githubusercontent.com/buildwithgrove/path/refs/heads/main/config/config.schema.yaml

Config File Location (Local Development)

In development mode, the config file must be located at:

./local/path/.config.yaml

Protocol Selection

The config file MUST contain EXACTLY one of the following top-level protocol-specific sections:

  • morse_config
  • shannon_config

shannon_config (required)

Configuration for the Shannon protocol gateway.

shannon_config:
full_node_config:
lazy_mode: false
rpc_url: "https://shannon-testnet-grove-rpc.beta.poktroll.com"
grpc_config: # Required
host_port: "shannon-testnet-grove-grpc.beta.poktroll.com:443" # Required: gRPC host and port

# Optional backoff and keepalive configs...
insecure: false # Optional: whether to use insecure connection
backoff_base_delay: "1s" # Optional: initial backoff delay duration
backoff_max_delay: "120s" # Optional: maximum backoff delay duration
min_connect_timeout: "20s" # Optional: minimum timeout for connection attempts
keep_alive_time: "20s" # Optional: frequency of keepalive pings
keep_alive_timeout: "20s" # Optional: timeout for keepalive pings

gateway_config: # Required
gateway_mode: "centralized" # Required: centralized, delegated, or permissionless
gateway_address: "pokt1up7zlytnmvlsuxzpzvlrta95347w322adsxslw" # Required: Bech32 address
gateway_private_key_hex: "<64-char-hex>" # Required: Gateway private key
owned_apps_private_keys_hex: # Required for centralized mode only
- "<64-char-hex>" # Application private key
- "<64-char-hex>" # Additional application private keys...

full_node_config

FieldTypeRequiredDefaultDescription
rpc_urlstringYes-URL of the Shannon RPC endpoint
grpc_configobjectYes-gRPC connection configuration
lazy_modebooleanNofalseIf true, disables caching of onchain data (e.g. apps, sessions)

full_node_config.grpc_config

FieldTypeRequiredDefaultDescription
host_portstringYes-Host and port for gRPC connections
insecurebooleanNofalseWhether to use insecure connection
backoff_base_delaystringNo"1s"Initial backoff delay duration
backoff_max_delaystringNo"120s"Maximum backoff delay duration
min_connect_timeoutstringNo"20s"Minimum timeout for connection attempts
keep_alive_timestringNo"20s"Frequency of keepalive pings
keep_alive_timeoutstringNo"20s"Timeout for keepalive pings

gateway_config

FieldTypeRequiredDefaultDescription
gateway_modestringYes-Mode of operation: centralized, delegated, or permissionless
gateway_addressstringYes-Bech32-formatted gateway address (starts with pokt1)
gateway_private_key_hexstringYes-64-character hex-encoded secp256k1 gateway private key
owned_apps_private_keys_hexstring[]Only in centralized mode-List of 64-character hex-encoded secp256k1 application private keys

morse_config (required)

Configuration for the Morse protocol gateway.

morse_config:
full_node_config:
url: "https://pocket-rpc.liquify.com" # Required: Pocket node URL
relay_signing_key: "<128-char-hex>" # Required: Relay signing private key
http_config: # Optional
retries: 3 # Default: 3
timeout: "5000ms" # Default: "5000ms"

signed_aats: # Required
"<40-char-app-address>": # Application address (hex)
client_public_key: "<64-char-hex>" # Client public key
application_public_key: "<64-char-hex>" # Application public key
application_signature: "<128-char-hex>" # Application signature

full_node_config

FieldTypeRequiredDefaultDescription
urlstringYes-URL of the full Pocket RPC node
relay_signing_keystringYes-128-character hex-encoded private key for signing relays

full_node_config.http_config

FieldTypeRequiredDefaultDescription
retriesintegerNo3Number of HTTP request retry attempts
timeoutstringNo"5000ms"HTTP request timeout duration

signed_aats

FieldTypeRequiredDefaultDescription
client_public_keystringYes-64-character hex-encoded client public key
application_public_keystringYes-64-character hex-encoded application public key
application_signaturestringYes-128-character hex-encoded signature

hydrator_config (optional)

info

For a full list of supported QoS service implementations, refer to the QoS Documentation.

Configures the QoS hydrator. By default, all services configured in the shannon_config or morse_config sections will have QoS checks run against them.

Manually Disable QoS Checks for a Service

To manually disable QoS checks for a specific service, the qos_disabled_service_ids field may be specified in the .config.yaml file.

For example, to disable QoS checks for the Ethereum service on a Morse PATH instance, the following configuration would be added to the .config.yaml file:

hydrator_config:
qos_disabled_service_ids:
- "F00C"
FieldTypeRequiredDefaultDescription
run_interval_msstringNo"10000ms"Interval at which the hydrator will run QoS checks
max_endpoint_check_workersintegerNo100Maximum number of workers to run concurrent QoS checks against a service's endpoints
qos_disabled_service_idsarray[string]No-List of service IDs to exclude from QoS checks. Will throw an error on startup if a service ID is provided that the PATH instance is not configured to use.

router_config (optional)

Enables configuring how incoming requests are handled.

In particular, allows specifying server parameters for how the gateway handles incoming requests.

FieldTypeRequiredDefaultDescription
portintegerNo3070Port number on which the gateway server listens
max_request_body_sizeintegerNo1MBMaximum request size in bytes
read_timeoutstringNo"5000ms" (5s)Time limit for reading request data
write_timeoutstringNo"10000ms" (10s)Time limit for writing response data
idle_timeoutstringNo"120000ms" (120s)Time limit for closing idle connections

logger_config (optional)

Controls the logging behavior of the PATH gateway.

logger_config:
level: "warn"
FieldTypeRequiredDefaultDescription
levelstringNo"info"Minimum log level. Valid values are: "debug", "info", "warn", "error"

data_reporter_config (optional)

Configures HTTP-based data reporting to external services like BigQuery via data pipelines (e.g., Fluentd with HTTP input and BigQuery output plugins).

data_reporter_config:
target_url: "https://fluentd-service.example.com/http-input"
post_timeout_ms: 5000
FieldTypeRequiredDefaultDescription
target_urlstringYes-HTTP endpoint URL where data will be reported (must start with http:// or https://)
post_timeout_msintegerNo10000Timeout in milliseconds for HTTP POST operations. If zero or negative, default of 10000ms is used
info

Currently, only JSON-accepting data pipelines are supported as of PR #215.