PATH Config File (`.config.yaml`)
A PATH
stack is configured via two files:
File | Required | Description |
---|---|---|
.config.yaml | ✅ | PATH gateway configurations |
.values.yaml | ❌ | PATH Helm chart deployment configurations |
Table of Contents
- Config File Validation
- Config File Location (Local Development)
shannon_config
(required)morse_config
(required)hydrator_config
(optional but recommended)router_config
(optional)logger_config
(optional)
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: true
gateway_config:
gateway_mode: "centralized"
gateway_address: pokt1up7zlytnmvlsuxzpzvlrta95347w322adsxslw
gateway_private_key_hex: 40af4e7e1b311c76a573610fe115cd2adf1eeade709cd77ca31ad4472509d388
owned_apps_private_keys_hex:
- 40af4e7e1b311c76a573610fe115cd2adf1eeade709cd77ca31ad4472509d388
# (Optional) Quality of Service (QoS) Configuration
hydrator_config:
service_ids:
- "anvil"
# (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) Quality of Service (QoS) Configuration
hydrator_config:
service_ids:
- "F00C"
- "F021"
# (Optional) Logger Configuration
logger_config:
level: "info" # Valid values: debug, info, warn, error
Config File 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: true # TODO_TECHDEBT: Add description and support for other modes. Use true for now.
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
Field | Type | Required | Default | Description |
---|---|---|---|---|
rpc_url | string | Yes | - | URL of the Shannon RPC endpoint |
grpc_config | object | Yes | - | gRPC connection configuration |
lazy_mode | boolean | No | true | If true, disables caching of onchain data (e.g. apps, sessions) |
full_node_config.grpc_config
Field | Type | Required | Default | Description |
---|---|---|---|---|
host_port | string | Yes | - | Host and port for gRPC connections |
insecure | boolean | No | false | Whether to use insecure connection |
backoff_base_delay | string | No | "1s" | Initial backoff delay duration |
backoff_max_delay | string | No | "120s" | Maximum backoff delay duration |
min_connect_timeout | string | No | "20s" | Minimum timeout for connection attempts |
keep_alive_time | string | No | "20s" | Frequency of keepalive pings |
keep_alive_timeout | string | No | "20s" | Timeout for keepalive pings |
gateway_config
Field | Type | Required | Default | Description |
---|---|---|---|---|
gateway_mode | string | Yes | - | Mode of operation: centralized , delegated , or permissionless |
gateway_address | string | Yes | - | Bech32-formatted gateway address (starts with pokt1 ) |
gateway_private_key_hex | string | Yes | - | 64-character hex-encoded secp256k1 gateway private key |
owned_apps_private_keys_hex | string[] | 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
Field | Type | Required | Default | Description |
---|---|---|---|---|
url | string | Yes | - | URL of the full Pocket RPC node |
relay_signing_key | string | Yes | - | 128-character hex-encoded private key for signing relays |
full_node_config.http_config
Field | Type | Required | Default | Description |
---|---|---|---|---|
retries | integer | No | 3 | Number of HTTP request retry attempts |
timeout | string | No | "5000ms" | HTTP request timeout duration |
signed_aats
Field | Type | Required | Default | Description |
---|---|---|---|---|
client_public_key | string | Yes | - | 64-character hex-encoded client public key |
application_public_key | string | Yes | - | 64-character hex-encoded application public key |
application_signature | string | Yes | - | 128-character hex-encoded signature |
hydrator_config
(optional but recommended)
For a full list of supported QoS service implementations, refer to the QoS Documentation.
⚠️ Any ID provided here MUST match a Service ID
from the QoS Documentation. An invalid ID will cause the gateway to error ⚠️
Configures the QoS hydrator to run synthetic Quality of Service (QoS) checks against endpoints of the provided service IDs.
For example, to enable QoS checks for anvil
and F00C
, the following configuration must be added to the .config.yaml
file:
hydrator_config:
service_ids:
- "anvil"
- "F00C"
Field | Type | Required | Default | Description |
---|---|---|---|---|
service_ids | array[string] | No | - | List of service IDs for which the Quality of Service (QoS) logic will apply |
run_interval_ms | string | No | "10000ms" | Interval at which the hydrator will run QoS checks |
max_endpoint_check_workers | integer | No | 100 | Maximum number of workers to run concurrent QoS checks against a service's endpoints |
router_config
(optional)
Enables configuring how incoming requests are handled.
In particular, allows specifying server parameters for how the gateway handles incoming requests.
Field | Type | Required | Default | Description |
---|---|---|---|---|
port | integer | No | 3070 | Port number on which the gateway server listens |
max_request_body_size | integer | No | 1MB | Maximum request size in bytes |
read_timeout | string | No | "5000ms" (5s) | Time limit for reading request data |
write_timeout | string | No | "10000ms" (10s) | Time limit for writing response data |
idle_timeout | string | No | "120000ms" (120s) | Time limit for closing idle connections |
logger_config
(optional)
Controls the logging behavior of the PATH gateway.
logger_config:
level: "warn"
Field | Type | Required | Default | Description |
---|---|---|---|---|
level | string | No | "info" | Minimum log level. Valid values are: "debug", "info", "warn", "error" |