Skip to main content

Catch and yeet

Catch is a tool for installing and managing services on remote machines with minimal fuss. It uses scp over Tailscale to copy files to the remote machine and automatically deploy them as services. The goal is to simplify deploying various types of files, including binaries, Docker Compose files, and more, without the need to configure systemd or other service managers.

Catch is a CLI app written in Go, currently tested on Linux. You can manage services from any machine that supports SSH. For even easier deployment, you can use yeet, our cross-platform companion client.

Loading asciinema cast...

Quickstart

Download and build the latest source code from the GitHub repository.

git clone https://github.com/catchall-sh/catch.git && cd catch

To install catch, run the following command.

go run ./cmd/yeet init <remote-host>

Now we can yeet our service to Catch.

yeet myservice mybinary

Run yeet --help to see the available commands.

For more information, see our installation guide. To learn more about what you can do with Catch, see running services.

Running services

Catch supports various types of services. Refer to the guides below to learn more about each service type and see examples of how to run them.

  • Binaries

        Deploy any executable file. (e.g. Go, Rust, C, etc.)

  • Shell scripts

        Deploy shell scripts as cron jobs or services.

  • Cron jobs

        Deploy a binary or script to run as a cron job.

  • TypeScript

        Deploy TypeScript files with dependencies specified within the file.

  • Docker images

        Deploy a Docker image to the built-in Docker registry.

  • Docker Compose

        Deploy a Docker Compose file to run a Docker stack.

  • Docker Compose and Secret Management

        Deploy using Docker Compose and keep your secrets secret with git-crypt.