Project Aliases (Zsh Plugin)
July 7, 2026 · View on GitHub
A lightweight Zsh plugin to manage per-project shell aliases.
Aliases are loaded automatically when you enter a project folder and removed automatically when you leave.
⚡ Quick Start
# Inside your project folder
echo "alias run='npm run dev'" > .proj_aliases
echo "alias test='npm test'" >> .proj_aliases
cd ~/my-project
# [project-aliases] Warning: Untrusted .proj_aliases found. Run 'palias allow' to trust and load it.
palias allow
# [project-aliases] Loaded and trusted aliases for project: /Users/username/my-project
run
# Executes: npm run dev
cd ..
# [project-aliases] Project aliases removed
✨ Features
- Define aliases per project in a
.proj_aliasesfile. - 🔒 Security-First: Requires explicit trust (
palias allow) before loading a.proj_aliasesfile. If the file is modified externally, the trust is invalidated, preventing silent execution of untrusted code. - Automatically load aliases when entering a trusted project folder.
- Automatically unload them when leaving.
- Keep a clean shell environment — no alias pollution between projects.
- Helper commands:
palias list→ view currently active project aliasespalias edit→ edit currently project aliasespalias reload→ reload aliases for the current project without leaving the folderpalias allow→ trust and load aliases for the current projectpalias deny→ untrust and unload aliases for the current project
📦 Installation
Oh My Zsh
- Clone the plugin into your Oh My Zsh custom plugins folder:
git clone https://github.com/dvigo/project-aliases.git ~/.oh-my-zsh/custom/plugins/project-aliases - Enable it in your
~/.zshrc:plugins=(... project-aliases) - Reload Zsh:
source ~/.zshrc
🎥 Demo
TBD
⚙️ Configuration
No extra configuration is needed.
Simply create a .proj_aliases file in the root of any project you want to use aliases in.
Example .proj_aliases
alias run="npm run dev"
alias lint="eslint src/"
alias up="docker-compose up -d"
alias down="docker-compose down"
🖊️ Usage
Available commands:
palias list # Shows active project aliases
palias edit # Opens the current project's .proj_aliases in your editor
palias reload # Reload aliases from the current project's .proj_aliases
palias allow # Trust and load the current project's .proj_aliases
palias deny # Untrust and unload the current project's .proj_aliases
Example session:
cd ~/dev/my-api
# [project-aliases] Warning: Untrusted .proj_aliases found. Run 'palias allow' to trust and load it.
palias allow
# [project-aliases] Loaded and trusted aliases for project: /Users/username/dev/my-api
up # runs docker-compose up -d
down # runs docker-compose down
# If you modify .proj_aliases, it becomes untrusted again. Re-run allow to load it:
palias allow
cd ..
# [project-aliases] Project aliases removed
🔧 Roadmap
- Add support for
.proj_aliases.d/folder with multiple alias files. - Add an option to persist aliases across shells until manually cleared.
- Add support for project-specific environment variables.
📜 License
GNU General Public License v3.0 — See LICENSE for details.