Starship
Configuration
Relayers Directive Syntax

Relayers YAML Syntax

We will go into details of the relayers top level directive in the Starship config file.

Note: By default the relayers will open up a transfer port

name

Name of the relayer, this is used as a unique identifier for the relayer.

relayers:
- name: hermes-osmo-juno
  ...

type

Type of the relayer to spin up. Currently we support:

relayers:
- name: hermes-osmo-juno
  type: hermes
  ...
- name: ts-relayer-cosmos-juno
  type: ts-relayer
  ...

image (optional)

If one wants to use a specific version of the relayer we support, then it can be mentioned via this image directive.

Supported version of relayers can be found:

relayers:
- name: hermes-osmo-juno
  type: hermes
  image: ghcr.io/cosmology-tech/starship/hermes:1.10.0
  ...
- name: ts-relayer-cosmos-juno
  type: ts-relayer
  image: ghcr.io/cosmology-tech/starship/ts-relayer:0.9.0
  ...

replicas

Number of relayers to spin up. Currently we just support 1 replica for now.

relayers:
- name: hermes-osmo-juno
  type: hermes
  replicas: 1
  ...

chains

List of chains to connect to each other, via the Relayer. Must be id of chains defined in the chains directive.

chains:
- name: osmosis-1
  ...
- name: juno-2
  ...
- name: gaia-4
  ...
 
relayers:
- name: hermes-osmo-juno
  type: hermes
  replicas: 1
  chains:
  - osmosis-1
  - juno-2
- name: ts-relayer-osmo-gaia
  type: ts-relayer
  replicas: 1
  chains:
  - osmosis-1
  - gaia-4

config (optional, hermes only)

For type: hermes relayer, we support overriding the default config params with the config directive. User specified overrides are performed at the start.

Note: Currently we only allow overrides of non chain specific values

relayers:
- name: hermes-osmo-juno
  type: hermes
  replicas: 1
  chains:
  - osmosis-1
  - juno-1
  config:
    global:
      log_level: "error"
    rest:
      enabled: false
    telemetry:
      enabled: false
    ## event_source is a custom configuration, in hermes is set of each of the chains
    ## one just needs to mention the mode (push or pull), and we do the rest
    ## For reference: https://github.com/informalsystems/hermes/releases/tag/v1.6.0
    event_source:
      mode: "pull" # default is "push"

All allowed config params can be found in the default values (opens in a new tab) (Basically everything in config.toml (opens in a new tab) file for the hermes relayer)

ports (optional, hermes only)

Ports directive in the relayers directive is used for kubectl port-forward forwarding kubernetes service ports to local host.

relayers:
- name: hermes-osmo-juno
  type: hermes
  replicas: 1
  chains:
  - osmosis-1
  - juno-1
  ports:
    rest: 3001
    exposer: 3002

Available endpoints on

One can use the exposer endpoint on the relayer to create channel from outside. Note: Still an experimental feature on exposer

ics (optional, hermes only)

ICS directive in the relayers directive is used for hermes relayer to specify the ICS setup to use

chains:
- id: neutron-1
  name: neutron
  numValidators: 1
  ics:
    enabled: true
    provider: cosmoshub-4  # chain id of the provider chain
- id: cosmoshub-4
  name: cosmoshub
  numValidators: 1
 
relayers:
- name: neutron-cosmos
  type: hermes
  replicas: 1
  chains:
    - neutron-1
    - cosmoshub-4
  ics:
    enabled: true
    consumer: neutron-1
    provider: cosmoshub-4

If ics is enabled, then the consumer and provider chain must be specified. With that, we automagically open the consumer and provider ports for the relayer.