Skip to content
Switch branches/tags

Latest commit

* Update to abscissa 0.6.0-beta.1 and clap 0.3

Overhaul command line argument processing to use clap instead of

* Attempt to update to modelator 0.3.2

Need this to resolve the dependency conflict on clap.
Does not compile because of the API break.

* refactor modelator code with latest api

* cli: De-hardcode crate version

The version string for chain config memos that was previously obtained
from abscissa is obtained with the crate_version! macro from clap.

* hermes: Fix panic in terminal color initialization

* Resurrect the version subcommand

Tests rely on the `version` subcommand being implemented.

* Manually implement clap::Parser for listen command

This is cumbersome, but it's the only way to support multiple
occurrences of --event flag as of clap 3.0.0-beta.5.
Should be fixed by the clap 3.0.0 release.

* Add changelog entry

* Fix `default_value` for `Order` in a couple commands

* Fix handling of timeout options in `ft-transfer`

* Wait a bit longer in passive connection test to avoid spurious failures

* cli: Suppress terminal color in abscissa

To avoid a panic in the terminal component initialization over
an attempt to install a global eyre handler after the application has
already done so, we need to tell the terminal to not use colors.

* Improve info message in `listen` command

* Rename --version flag of `create channel` cmd

To avoid confusion with the --version flag conventionally used to print
the program version, the new long name is --channel-version.
The --version flag is still supported with the present meaning on the
`create channel` subcommand, but this alias is no longer described
in built-in help.

* Updated the guide on availability of --help flags

* Revert guide updates, to be done in the release PR

Co-authored-by: Ranadeep Biswas <>
Co-authored-by: Romain Ruetschi <>

Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Cosmos ecosystem

Build Status End to End testing Apache 2.0 Licensed Rust Stable Rust 1.56+

Rust implementation of the Inter-Blockchain Communication (IBC) protocol.

This project comprises primarily four crates:

  • The ibc crate defines the main data structures and on-chain logic for the IBC protocol.
  • The ibc-relayer crate provides an implementation of an IBC relayer, as a library.
  • The ibc-relayer-cli crate is a CLI (a wrapper over the ibc-relayer library), comprising the hermes binary.
  • The ibc-proto crate is a library with Rust types generated from .proto definitions necessary for interacting with Cosmos SDK and its IBC structs.
  • The ibc-telemetry crate is a library for use in the hermes CLI, for gathering telemetry data and exposing that in a Prometheus endpoint.

See the table below for more details.

Includes TLA+ specifications.

Crate name Type Version Docs
ibc (modules) lib IBC Crate IBC Docs
ibc-relayer lib IBC Relayer Crate IBC Relayer Docs
ibc-relayer-cli bin: hermes IBC Relayer CLI Crate IBC Relayer CLI Docs
ibc-relayer-rest lib IBC Relayer REST Crate IBC Relayer REST Docs
ibc-proto lib IBC Proto Crate IBC Proto Docs
ibc-telemetry lib IBC Telemetry Crate IBC Telemetry Docs


The crates in this project require the latest stable version of Rust: 1.56.0.

Hermes Guide

The relayer CLI binary, called hermes, has a comprehensive guide at


IBC is specified in English in the cosmos/ibc repo. Any protocol changes or clarifications should be contributed there.

This repo contains the TLA+ specification and Rust implementation for the IBC modules and relayer. If you're interested in contributing, please comment on an issue or open a new one!

See also


We follow Semantic Versioning, though APIs are still under active development.



Copyright © 2021 Informal Systems Inc. and ibc-rs authors.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use the files in this repository except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.