Skip to content

a-chacon/procman

Repository files navigation

Procman

A terminal user interface (TUI) for managing Procfile-based applications. procman allows you to monitor, search, and interact with multiple processes simultaneously in a single dashboard.

Captures

Grid

procman grid mode

Fullscreen

procman fullscreen process

Interactive

procman interactive mode

Features

  • Procfile Support: Automatically loads and manages processes defined in your Procfile.
  • Interactive Terminal: Full VT100 terminal emulation for interacting with processes (perfect for debuggers like gdb or lldb).
  • Log Management:
    • Real-time log streaming with ANSI color support.
    • Search through logs with highlighting.
    • Filter logs to focus on specific output.
  • Process Control: Start, stop, and restart individual processes with single keybindings.
  • Flexible Layout: Toggle between a grid view of all processes and a fullscreen view for deep dives.

Installation

For now, you can install procman via Cargo:

cargo install proc-man

Or with the official script (Linux and MacOS for the momment):

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/a-chacon/procman/releases/latest/download/proc-man-installer.sh | sh

Quick Start

  1. Ensure you have a Procfile in your project root.

  2. Run procman:

    procman

    Or specify a custom path to your Procfile:

    procman ./path/to/my/Procfile
    

For Rails Apps

To use procman as a drop-in replacement for Foreman in your Rails application, replace the contents of your bin/dev script with the following. This script automatically checks if procman is installed and installs it via the official installer if missing:

#!/usr/bin/env sh

# Check if procman is installed; if not, install it automatically
if ! command -v procman >/dev/null 2>&1; then
  echo "procman not found. Installing..."
  curl --proto '=https' --tlsv1.2 -LsSf https://github.com/a-chacon/procman/releases/latest/download/proc-man-installer.sh | sh
fi

# Default to port 3000 if not specified
export PORT="${PORT:-3000}"

# Start processes via procman
exec procman Procfile.dev "$@"

Usage

procman is designed to be intuitive and fast. Inspired by tools like btop, you can perform actions by simply pressing the bolded letter displayed in each label on the screen.

  • interactive: Enter interactive mode to talk to the process (e.g., a debugger). Press Ctrl-A to exit.
  • fullscreen / Enter: Expand the selected process to fill the screen.
  • search: Find and highlight specific text in the logs.
  • filter: Hide lines that don't match your criteria.
  • start: Start a stopped process.
  • stop: Terminate a running process.
  • restart: Quickly stop and start the process.
  • q / Ctrl-C: Exit procman.

Navigation is handled via arrow keys or hjkl. You can also jump directly to a process by pressing its corresponding number 1-9.

License

This project is licensed under the GNU General Public License v3.0.

By using this software, you agree to the terms outlined in the license.

About

(TUI) Process manager for Procfile-based applications

Topics

Resources

License

Contributing

Stars

44 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages