A terminal UI for browsing and running Makefile targets.
# Install
brew install rshelekhov/tap/lazymake
# Run in any directory with a Makefile
lazymakelazymake provides an interactive interface for Makefiles with:
- Target browser with fuzzy search and execution history
- Dependency graph visualization showing what runs when you execute a target
- Variable inspector for debugging complex variable expansions
- Syntax highlighting for recipes (detects Python, Go, shell scripts, etc.)
- Safety warnings for destructive commands (configurable)
- Performance tracking to identify slow targets
In large projects, Makefiles can have dozens or hundreds of targets. Finding the right one means either memorizing names or grepping through the file. This tool gives you a searchable list with descriptions and shows you exactly what will run before you execute anything.
The dependency graph is particularly useful for understanding complex build systems—you can see the full chain of prerequisites, identify bottlenecks, and spot circular dependencies.
brew install rshelekhov/tap/lazymakego install github.com/rshelekhov/lazymake/cmd/lazymake@latest# Use Makefile in current directory
lazymake
# Specify path
lazymake -f path/to/Makefile↑/↓orj/k- NavigateEnter- Execute selected targetg- Show dependency graphv- Open variable inspectorw- Switch between Makefiles (workspace picker)/- Search/filter?- Helpq- Quit
Optional .lazymake.yaml for customization:
safety:
enabled: true
exclude_targets:
- clean # Don't warn about these targets
export:
enabled: true
format: json
shell_integration:
enabled: truePlace in ~/.lazymake.yaml (global) or ./.lazymake.yaml (project-specific).
See configuration guide for all options.
If your targets have comments starting with ##, they'll appear as descriptions in the UI:
build: ## Build the application
go build -o bin/app
test: ## Run test suite
go test ./...This is optional—lazymake works fine without comments.
Press g on any target to see its dependency tree with execution order and parallel opportunities. Useful for understanding what make deploy actually does.
Press v to browse all variables, see their expanded values, and find out which targets use them. Helpful when debugging complex variable substitutions or figuring out where LDFLAGS is defined.
Helps prevent accidental execution of destructive commands. lazymake scans targets for potentially dangerous operations (like rm -rf, DROP DATABASE, etc.) and prompts for confirmation.
Press w to switch between Makefiles in your project. Automatically discovers Makefiles in subdirectories and remembers recent files.
Does it work with my existing Makefile?
Yes. No changes required.
Which Make implementations are supported?
All of them. lazymake parses the file and uses your system's make for execution.
Does it modify my Makefile?
No. It's read-only.
Can I disable safety warnings?
Yes. Add target names to exclude_targets in .lazymake.yaml.
See CONTRIBUTING.md.
MIT - see LICENSE.
Built with Bubble Tea, Lipgloss, Chroma, and Cobra.
Inspired by lazygit and lazydocker.
Made with ❤️ for developers.




