Blog Docs Roadmap GitHub
June 01, 2021

Inline client upgrades, UI fixes and improvements

Due to protocol versioning, it is highly recommended to keep clients up to date. This release simplifies the process, bringing inline client upgrade functionality, including an upgrade supervisor, migration and rollback support. The required version is specified by the contract operator-owned directory.

Sequence diagram

This sequence diagram shows the high-level flow of a client upgrade and the behind the scenes interaction it has with other Wireleap components.

sequenceDiagram participant user participant client participant participant dir participant releases Note left of user: start daemon user->>+client: start() client->>+dir: info() dir-->>-client: response client->>client: verify_version() opt upgrade required client-->>-user: notification end Note left of user: upgrade user->>client: upgrade() activate client client->>client: verify_not_running() client->>+releases: GET version/changelog releases-->>-user: changelog activate user user->>client: proceed deactivate user client->>+releases: GET version/client{.hash} releases-->> client{.hash} client->> verify opt rollback on failure client->> start upgrade supervisor deactivate client activate Note left of migration>> verify() Note left of mv client client.prev Note left of mv client>> unpack()>>user: success deactivate end


The upgrade process is interactive so you will have the possibility to accept or decline based on the changelog for the new release version.

wireleap upgrade

If the upgrade was successful, the old binary is not deleted but kept as wireleap.prev for rollback purposes, in case issues manifest post-upgrade.

wireleap rollback

If the upgrade was not successful, it is possible to skip the faulty version explicitly.

# skip upgrades to version 1.2.3
echo "1.2.3" > $HOME/wireleap/.skip-upgrade-version



  • Manual client upgrade support:

    • Added upgrade and rollback commands
    • Added init --force-unpack-only to only overwrite embedded files
    • Bundled exec scripts are now located in scripts/default/
    • Version verification when pulling directory information on startup
  • UI fixes and improvements:

    • Help and usage formatting and content improvements
    • Access keys can now be imported directly from an https:// URL
    • Avoid new access key activation on startup
    • Bundled exec scripts are now located in scripts/default/
    • User defined exec scripts in scripts/ take precedence
    • SetUID bit and root ownership verification on wireleap tun
  • Default circuit.hops changed to 1

  • Fixed issue where some errors during initial splice weren’t reported


  • Fixed issue where some errors during splice weren’t reported.


  • Configuration changes:

    • Metadata fields removed: icon, banner.
    • Metadata fields added: operator_url.
  • Endpoint changes:

    • Individual /info/X field getter support removed.
    • Endpoint /info/ changed to /info.


  • Added update_channels.client for specifying the required version.
  • Removed /info endpoint versioning to allow for client upgrades.