gaffa

Crates.iogaffa
lib.rsgaffa
version0.1.5
created_at2025-07-24 15:36:56.106475+00
updated_at2025-07-30 11:15:27.398801+00
descriptionCross-platform process manager for Procfile-based process-collections.
homepage
repositoryhttps://github.com/oryon-dominik/gaffa
max_upload_size
id1766200
size220,960
Dominik Geldmacher (oryon-dominik)

documentation

README

Gaffa

A cross-platform process manager for procfile based applications in a single terminal. Has an interactive terminal UI.

There are some good Procfile-based process management tools around already:

but they didn't work on the windows machines i have to work on. I do not need a lot of features, just some convenience to run my processes in a single terminal with a single command from my justfile.

A gaffa is someone who manages a group of performers, think of a rock band or circus. Whatever you like. 🧙‍♀️

Features

  • Cross-platform: Works on Windows, macOS, and Linux without tmux dependency

  • Process Management: Start, stop, and restart processes individually in interactive mode

  • Live Monitoring: Process status, uptime, and restart counts

  • Interactive Mode: Terminal UI with keyboard shortcuts and mouse scrolling

Installation

Available on crates.io: gaffa

cargo install gaffa

Or build from source:

git clone https://github.com/oryon-dominik/gaffa.git
cd gaffa
cargo build --release

Usage

# Run all processes from Procfile
gaffa run

# Run specific processes
gaffa run web worker

# Interactive mode
gaffa run --interactive

# Log output to a file
gaffa run --log-file log.txt

# Custom Procfile
gaffa run --procfile custom.procfile

# Set environment variables
gaffa run --env PORT=8000 --env PYTHONUNBUFFERED=1

# Load environment from file
gaffa run --env-file .env

# Full command example
gaffa run devserver tailwind --procfile procfile --log-file logs/gaffa.log --env PYTHONUNBUFFERED=1 --interactive

Output Buffering

Some processes buffer their output when not connected to a terminal. To see real-time output:

  • Python: Set PYTHONUNBUFFERED=1 environment variable
Commit count: 0

cargo fmt