# Install virtualfish with Homebrew

Python virtual environment manager for the fish shell. Version 2.5.9 via Homebrew; verified from local package data.

## Install

```sh
sudo av install brew:virtualfish
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install virtualfish
```

  Evidence: local Homebrew formula metadata

## Package facts

- **Package key:** brew:virtualfish
- **Package manager:** Homebrew
- **Version:** 2.5.9
- **Source summary:** Python virtual environment manager for the fish shell
- **Homepage:** <https://virtualfish.readthedocs.io/en/latest/>
- **Repository:** <https://github.com/justinmayer/virtualfish>
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- vf (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 2.5.9
## Project history and usage

VirtualFish is a Python virtual-environment manager for the fish shell. It occupies the same niche as virtualenvwrapper, but for fish users who want `vf` commands, prompt integration, optional auto-activation, and project helpers that fit fish's syntax and startup model.

### Project history

The upstream README says VirtualFish is maintained by Justin Mayer and was originally created by Daisy Leigh Brenecki. Public discussion from 2012 describes it as a fish-shell replacement inspired by Doug Hellmann's virtualenvwrapper, which matches the project's long-running positioning as fish-native virtualenv workflow glue.

PyPI's visible release history starts with 1.0.0a1 in March 2015, while the current repository documents fish 3.1 or newer as a requirement and points users to the Read the Docs manual. The 2.x line added the current plugin-oriented shape, including project management, environment-variable automation, and compatibility aliases.

### Adoption history

VirtualFish is a niche tool by design: its audience is Python developers who already prefer fish over bash or zsh. Its sustained packaging in PyPI and Homebrew, and its explicit IRC/support channel alongside fish, show a small but persistent shell-specific community rather than broad mainstream Python tooling dominance.

The tool has also aged alongside Python's built-in fish activation scripts. Python's venv module can generate `activate.fish`, but VirtualFish remains useful when users want a named environment registry, `vf new` and `vf activate`, automatic activation from `.venv` marker files, or virtualenvwrapper-style habits in fish.

### How it is used

The quickstart is intentionally short: install the package with pip, run `vf install`, add VirtualFish to the prompt if desired, then create an environment with a command such as `vf new myvirtualenv`. Users can enable plugins for auto-activation, projects, environment variables, and compatibility aliases.

The package is most often used interactively rather than as a dependency of applications. Its value is reducing shell friction: fish users get completions, prompt state, and activation/deactivation behavior without sourcing bash-oriented scripts.

### Why package nerds care

VirtualFish is package-nerd significant because it preserves an older virtualenvwrapper style of environment management inside a shell that deliberately differs from POSIX shell syntax. It is a reminder that packaging workflows are shaped as much by shell ergonomics as by Python packaging standards.

### Timeline

- 2012: Daisy Leigh Brenecki publicly described starting a fish-shell replacement for virtualenvwrapper-style workflows.
- 2015-03-22: The earliest VirtualFish files currently listed on PyPI were uploaded.
- 2020-04-01: GitHub releases list VirtualFish 2.0.0.
- 2024-05-13: GitHub releases list VirtualFish 2.5.9.

### Related projects

- virtualenv provides the underlying environment model. virtualenvwrapper is the older Bourne-shell-oriented inspiration. Python's standard-library venv module provides fish activation scripts for simpler workflows.

### Sources

- Python venv activation documentation: https://docs.python.org/3/library/venv.html
- Stack Overflow answer by Daisy Leigh Brenecki describing early VirtualFish: https://stackoverflow.com/questions/10956335/how-to-get-virtualenv-to-work-with-fish-shell
- VirtualFish GitHub README: https://github.com/justinmayer/virtualfish
- VirtualFish PyPI project: https://pypi.org/project/virtualfish/
- VirtualFish documentation: https://virtualfish.readthedocs.io/
- VirtualFish plugins documentation: https://virtualfish.readthedocs.io/en/latest/plugins.html


## Security Notes

generalized runtime or code generation signal.

- **Geiger risk:** yellow / medium
- generalized runtime or code generation signal


## Configuration and credential file locations

These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.


## Configuration files

- Unix: $XDG_CONFIG_HOME/fish/conf.d/virtualfish-loader.fish, ~/.config/fish/conf.d/virtualfish-loader.fish

## Combined YAML source

View the package source record on GitHub. [combined/virtualfish.yml](https://github.com/mxcl/pkgdb/blob/main/combined/virtualfish.yml)


## Sources

- pkg.so package database
- Geiger risk classifier
- curated configuration and credential file locations
- curated package history
- pkgdb category and tag curation
- cross-ecosystem install command graph
