Service Types

How yeet decides what kind of service a payload becomes.

Yeet detects payload type and installs the service accordingly. For step-by-step usage, start with Payloads.

You should be able to look at a payload and predict which host mechanism catch will use before the command changes anything.

Binary

  • ELF or Mach-O binary.
  • Catch installs it as a systemd service on the host.
  • Use yeet run <svc> ./bin/<svc>.
  • Build for the catch host architecture first.

Script

  • Shebang file (e.g., #!/usr/bin/env bash).
  • Catch treats it like a binary and installs it as a systemd service.
  • The interpreter must exist on the host.

Docker Compose

  • Any YAML with a top-level services: key.
  • Catch installs it as a Docker Compose service.
  • Use --pull on yeet run when you want to refresh images; otherwise run reuses existing images.
  • See Containers.

Docker image

  • If the payload looks like an OCI image ref (e.g. nginx:latest, ghcr.io/org/app:1.2.3), catch pulls the image on the host.
  • For local images, use yeet docker push <svc> <image>:<tag> --run.
  • For Dockerfiles, use yeet run <svc> ./Dockerfile (builds for the host arch and pushes).
  • See Containers.

TypeScript

  • .ts files are run via a Deno container.
  • Catch runs it as a container-backed service.
  • See Containers.

Python

  • .py files are run via a uv container image.
  • Catch runs it as a container-backed service.
  • See Containers.

VM

  • vm://ubuntu/26.04 creates a long-lived Ubuntu VM service.
  • vm://nixos/26.05 creates a long-lived NixOS VM service.
  • Imported images run as vm://<name> after yeet vm images import.
  • Requires a Linux catch host with KVM available.
  • Uses yeet-owned VM image bundles published from yeetrun/yeet-vm-images.
  • yeet init checks the host for KVM, TUN/TAP, and required VM tooling; on capable Debian/Ubuntu hosts it can prompt for missing VM tools.
  • See VMs.

Zstd

  • Yeet detects and unpacks Zstd-compressed binaries.

Cron

  • yeet cron installs a cron-style job as a timer on the host.
  • See Cron Jobs.

Notes

  • Yeet detects file type by extension or content.
  • Architecture must match the target host; mismatches fail early.
  • ZFS is storage backing for service roots and VM disks, not a service type.
  • If a service already exists, its type is fixed. Replace it with a new service name or remove the old one first.