Skip to content

Repository files navigation

petti

பெட்டி (peṭṭi): noun — A word to describe a box, case, or chest used for storage in Tamil

A TUI view that auto-detects Homebrew, casks, npm, and pip packages you have personally installed. Comes with filtering, dependency signals, export, live theme switching, and read-only uninstall helpers.

demo


Install

Homebrew

brew install petti

If you prefer the explicit two-step form:

brew tap 707/homebrew-petti
brew install 707/petti/petti

Install script

curl -fsSL https://raw.githubusercontent.com/707/petti/main/scripts/install.sh | sh

Install to ~/.local/bin instead:

curl -fsSL https://raw.githubusercontent.com/707/petti/main/scripts/install.sh | sh -s -- --local

From source

git clone https://github.com/707/petti.git
cd petti
go build -o petti ./cmd/petti
./petti

Local development binary

go build -o petti ./cmd/petti
./petti

Run without building

go run ./cmd/petti

Usage

TUI (default)

./petti

Petti detects packages from supported managers, shows them in a TUI, and lets you filter, inspect, sort, export, and review uninstall commands without changing your system.

Version

petti --version

Useful startup flags

./petti --layout full
./petti --layout compact
./petti --theme default
./petti --theme default-light
./petti --theme ember-dark
./petti --theme frost-light
./petti --filter gh
./petti --version
./petti --export-txt packages.txt
./petti --export-json packages.json

Keybindings

KeyAction
/Start search
fSource filter popup
aAction/status filter popup
uUpdated filter popup
sCycle sort
VColumn/select mode
EnterToggle detail pane
iOpen package info panel
dCopy uninstall command
tCycle themes live
eExport visible packages
rRefresh package data
?Toggle help
qQuit
j / k or arrowsMove selection
g / GJump to top / bottom
PgUp / PgDnPage up / down

Mouse support

  • Click a row to select it.
  • Click the selected row again to toggle package info.

Themes

petti currently ships with 6 built-in runtime themes:

  • default-dark
  • default-light
  • ember-dark
  • ember-light
  • frost-dark
  • frost-light

The aliases default, ember, and frost start on the dark variant. Themes can be changed at launch with --theme or cycled live with t.


Supported package managers

  • Homebrew formulae
  • Homebrew casks
  • npm global packages
  • pip / pip3 packages

Dependency column

The DEPENDANCY column uses:

  • Y when the package is a dependency of another installed package
  • N when it is not currently a dependency of another installed package
  • - when the app cannot determine that safely

Platform support

Current intended target systems:

  • macOS
  • Linux
  • WSL2

Notes:

  • Homebrew support depends on brew being installed and available on PATH.
  • On Linux and WSL2, npm and pip are the most direct package sources; Homebrew works if Linuxbrew is installed.
  • Native Windows is not the first-class target yet.

Export

You can export the currently visible package list to text or JSON:

./petti --export-txt packages.txt
./petti --export-json packages.json

From inside the TUI, press e and choose the format.


Project structure

cmd/
petti/ # entrypoint
internal/
app/ # app state, filtering, sorting
cli/ # CLI argument handling and program startup
collectors/ # Homebrew, cask, npm, pip collection and metadata
export/ # txt/json export
model/ # shared package models
tui/ # Bubble Tea UI, rendering, themes, input handling
docs/
tdd-log.md # implementation log
session-memory.md # working notes
scripts/ # repo scripts

Development

Build

make build

Test

make test
make cover-check

Run locally

go run ./cmd/petti

Roadmap

  • npm distribution via a scoped package
  • broader metadata coverage per package manager
  • duplicate flags

Out of Scope

  • Ability to directly install and uninstall via petti

License

MIT

About

Fast terminal UI for browsing manually installed packages across Homebrew, casks, npm, and pip.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages