0.10.0

Riptide 0.10 is released and brings new features, such as Hooks, a riptide log command and a facelifted CLI and Proxy server.

Compatibility and Upgrading

Please note that this release now requires Python 3.11 or above. We recommend using Python 3.13 (3.14 is also supported, but some dependencies may not support it yet).

This means some LTS Linux distributions are no longer supported out of the box, requiring third-party package repositories if you want to continue using Riptide without upgrading your distribution. Most notably Ubuntu 22.04 is not supported.

You can check your Python version using this script:

$ . <riptide virtualenv dir>/bin/activate # Windows: source <riptide installation dir>\Scripts\activate.ps1
$ python3 --version
Python 3.13.9

If you were using Python 3.11 or above or were using NixOS/nix-darwin, follow the usual upgrade procedure:

If you were using a Python version lower than 3.11:

  • Delete ~/virtualenvs/riptide or whereever you installed Riptide. If this directory did not exist, you can find the correct directory under Linux and macOS with which riptide (this may output the path to a symlink, you may need to check where it is pointing).

  • Install Python 3.11 or above. Make sure it is set as the default python3 version.

  • Follow the steps of the “Installing Riptide” section up to and including pip3 install riptide-all, after this you are done, do not follow any additional steps:

Changelog

New Features

  • Hooks: Riptide can now automatically run commands when certain Riptide or Git events occur.

  • New command: riptide log: This command displays service log files.

Major Improvements & Changes

  • The CLI and Proxy Server pages were redesigned, including a new Riptide logo.

  • When using Docker, all containers now get a special static binary mounted: ripsu. This binary is a minimal su implementation, which means that Docker images no longer need to contain su to be usable with Riptide. Additionally this su implementation treats signals more transparently than some other su implementations, causing signals like SIGINT to be directly sent to the command running. This is supported for amd64 and aarch64 images.

  • Running commands has been vastly improved. Commands now truly behave as if they were running natively in the shell on Linux and macOS, with all signals getting propagated properly and proper TTY handling. This also means that piping and other kinds of stdin, stdout or stderr redirection is now fully supported.

  • Riptide now supports platform-specific additional volumes (Command/Service.additional_volumes.<key>.host_system).

  • Riptide now supports the DOCKER_DEFAULT_PLATFORM environment variable. It will be used to tell Docker which image architecture to pull images for, instead of the system’s architecture.

Improvements

  • Services and commands are now sorted in most CLI and Proxy Server output listings.

  • Riptide now sets the process title to riptide on macOS and Linux, to have Terminals that support it show riptide instead of a generic python3.x. Additionally when running Commands Riptide will set the process title to the command key for a seamless experience.

  • The Riptide configuration directory can now be specified with the environment variable RIPTIDE_CONFIG_DIR.

  • Add special handling for SSH agents on macOS (thanks to @jeliebig): /run/host-services/ssh-auth.sock is now mounted for SSH agents on macOS.

  • The pre_start error messages were improved.

  • Added additional validation for additional volumes handling.

  • riptide_upgrade will now prompt you to restart the Proxy server.

  • Riptide’s CLI follows the conventions of the environment variables NO_COLOR and FORCE_COLOR.

Bugfixes

  • Fix infinite exception loop when starting containers in the foreground.

  • Fix handling of invalid env files.

  • The parent() variable helper now correctly returns None if you use it on a configuration object with no parent.

  • null values can now be properly used in configuration objects where supported.

  • Better error message when trying to use binary files with config.

  • Prevent volume_name for additional mounts from being used for volumes that use file paths, as this doesn’t work.