wyrd/tools
esc

    ↑↓ Move ↵ Open trowel results first Search by Pagefind
    Releases

    Installation

    Set up the repo.wyrd.foo APT repository (once)
    sudo install -d -m 0755 /etc/apt/keyrings
    curl -fsSL https://repo.wyrd.foo/pubkey.gpg |
      sudo tee /etc/apt/keyrings/wyrd-company.gpg >/dev/null
    echo "deb [signed-by=/etc/apt/keyrings/wyrd-company.gpg] \
    https://repo.wyrd.foo/apt stable main" |
      sudo tee /etc/apt/sources.list.d/wyrd-company.list >/dev/null
    sudo apt update
    sudo apt install trowel

    Trowel supports Linux on amd64 and arm64. Packages install /usr/bin/trowel, a trowel.service systemd unit, and an empty /etc/trowel/conf.d for snippets. A fresh installation stays stopped until you write /etc/trowel/config.yml and enable the unit.

    APT

    sudo install -d -m 0755 /etc/apt/keyrings
    curl -fsSL https://repo.wyrd.foo/pubkey.gpg |
      sudo tee /etc/apt/keyrings/wyrd-company.gpg >/dev/null
    echo "deb [signed-by=/etc/apt/keyrings/wyrd-company.gpg] \
    https://repo.wyrd.foo/apt stable main" |
      sudo tee /etc/apt/sources.list.d/wyrd-company.list >/dev/null
    sudo apt update
    sudo apt install trowel

    RPM

    sudo curl -fsSL https://repo.wyrd.foo/wyrd.repo \
      -o /etc/yum.repos.d/wyrd.repo
    sudo dnf install trowel

    Arch User Repository

    paru -S trowel-bin

    Configure and start the service

    DEB and RPM packages ship an annotated example at /usr/share/doc/trowel/config.example.yml. The same file is in every release archive and in the repository.

    sudo install -d -m 0755 /etc/trowel
    sudo cp /usr/share/doc/trowel/config.example.yml /etc/trowel/config.yml
    sudoedit /etc/trowel/config.yml
    sudo trowel -config /etc/trowel/config.yml -validate
    sudo systemctl enable --now trowel

    Add webhooks and relays as files in /etc/trowel/conf.d rather than editing config.yml, for example from a configuration management tool. The unit reloads when they change. See Snippets.

    The unit reads optional NAME=value lines from /etc/trowel/trowel.env, so ${NAME} references in the configuration can stay out of the file itself. Keep that file mode 0600.

    The unit runs as a systemd dynamic user with a read-only view of the system. Secret files must be readable by that user; the simplest way is systemd credentials, which the service reads from $CREDENTIALS_DIRECTORY:

    # sudo systemctl edit trowel
    [Service]
    LoadCredential=github-webhook:/etc/trowel/github-webhook
    Environment=GITHUB_WEBHOOK_SECRET_FILE=%d/github-webhook
    secret_file: ${GITHUB_WEBHOOK_SECRET_FILE}

    Command destinations run as the same dynamic user. When a command needs a fixed account or write access, override the unit:

    [Service]
    DynamicUser=no
    User=deploy
    ReadWritePaths=/srv/deploy

    Upgrades restart a running relay on the new binary. Removing the package stops and disables the unit and leaves your files under /etc/trowel in place.

    Container image

    docker run -d --name trowel \
      -p 127.0.0.1:8080:8080 \
      -v "$PWD/config.yml:/config/config.yml:ro" \
      -e NATS_URL=nats://nats.example.internal:4222 \
      ghcr.io/wyrd-company/trowel:latest

    The image runs as an unprivileged trowel user, reads /config/config.yml and any snippets in /config/conf.d, and has a health check on /readyz. Mount a directory over /config to add snippets, such as -v "$PWD/trowel:/config:ro" with config.yml and conf.d/ inside. Tags are the release version, major.minor, and latest, all from release tags.

    The repository’s docker-compose.yml starts a JetStream-enabled NATS server, creates the stream the example configuration expects, and runs Trowel:

    GITHUB_WEBHOOK_SECRET=change-me docker compose up --build

    Release archive

    Each GitHub release has trowel_<version>_linux_<x86_64|aarch64>.tar.gz and a checksums.txt. The archive holds the binary, the example configuration, and the systemd unit under packaging/.

    sha256sum --check --ignore-missing checksums.txt
    tar -xzf trowel_*_linux_x86_64.tar.gz trowel
    sudo install -m 0755 trowel /usr/local/bin/trowel