One command for all your projects. No matter the stack.
Stop wasting time remembering if it's
gradle build,mvn package,cargo build,flutter build, ornpm run build. Just usepm build.
- Why ProjectManager?
- Quick Win Example
- Features
- Requirements
- Installation
- Usage
- Supported Project Types
- Environment Variables
- Git Integration
- How It Compares
- Project Structure
- Configuration
- License Key
- Roadmap
- Contributing
You're a developer with multiple projects:
# Project 1 (Gradle)
cd ~/projects/api-users
gradle build
# Wait... was it gradle or gradlew?
# Project 2 (Maven)
cd ~/projects/backend
mvn clean package
# Or was it mvn install?
# Project 3 (npm)
cd ~/projects/frontend
npm run build
# Need to set PORT=3000... or was it 3001?
# Check git status everywhere
cd ~/projects/api-users && git status
cd ~/projects/backend && git status
cd ~/projects/frontend && git statusResult:
- β° 30+ minutes wasted daily navigating folders and looking up commands
- π§ Mental overhead remembering different build systems
- π« Context switching between 5+ different projects
- π Errors from using wrong commands or configurations
Same developer, same projects:
# From anywhere, any folder
pm build api-users
pm build backend
pm build frontend
# Run with correct config automatically
pm run api-users # Uses PORT=3000
pm run backend # Uses PORT=8080
# Check all git repos instantly
pm info api-users # Branch: main, 2 modified
pm info backend # Branch: dev, β clean
pm info frontend # Branch: feature/ui, 3 commits unpushedResult:
- β 5 seconds per command
- β No thinking required
- β Work from anywhere
- β Never forget configurations
Time saved per week:
- Command lookups: ~2 hours
- Folder navigation: ~1 hour
- Configuration mistakes: ~30 min
- Git status checking: ~45 min
Total: ~4 hours/week = 16 hours/month = 2 full workdays
β
Full-stack developers - Multiple technologies daily
β
Team leads - Standardize commands across team
β
Students - Learn new stacks without command confusion
β
DevOps engineers - Manage multiple microservices
β
Anyone with 3+ projects - Simplify your workflow
Monday morning, 3 APIs to start:
cd ~/work/user-service
cat README.md # Find instructions
export PORT=3001
export DB_HOST=localhost
mvn spring-boot:run
cd ~/work/product-service
npm install # Just in case
PORT=3002 npm start
cd ~/work/order-service
# Was this Gradle or Maven?
ls # Check for pom.xml or build.gradle
gradle bootRun --args='--server.port=3003'Time: 10-15 minutes (if everything works)
Mental load: High
Error risk: Medium
Monday morning, same 3 APIs:
pm run user-service
pm run product-service
pm run order-serviceTime: 15 seconds
Mental load: Zero
Error risk: None
Setup time: 5 minutes (one time)
Time saved: Every single day
- π Automatic detection - Detects Gradle, Maven, Node.js, .NET, Python, Rust, Go, pnpm, Bun, Yarn, Docker automatically
- π― Unified commands - Same commands for all projects:
pm build,pm run,pm test - π¦ Centralized management - All projects in one place, accessible from anywhere
- β‘ Fast execution - No folder navigation, instant command execution
- πΎ Persistence - Configuration saved in JSON, survives restarts
- πΏ Git integration - See branch, status, and unpushed commits in
pm info - π§ Environment variables - Configure per-project variables (PORT, DEBUG, API_KEY, etc)
- π©Ί Runtime checker - Detects missing runtimes before execution, shows install instructions
- π₯ pm doctor - Diagnose your environment: verify installed tools, validate project paths, and get AβF health scores
- π Health scores - Project health grading (A/B/C/D/F) based on best practices (.gitignore, README, tests, CI, lockfile)
- π Auto-update - Check for updates on startup, update with
pm update - π Project refresh - Re-detect types and update commands with
pm refresh, warns when projects are outdated - βοΈ Rename & path update - Rename projects or update paths with
pm rename, preserving all data - π¨ Custom commands - Add your own commands with
pm commands add(tunnel, lint, deploy, etc.) - π‘οΈ Data safety - Atomic writes, automatic backup, and recovery from corrupted JSON
- π Safe execution - Directory validation before running commands, metacharacter warnings
- π‘οΈ Robust auto-update - Download integrity validation, redirect loop protection, descriptive network error messages
- π³ Docker support - Detect Docker Compose projects, default commands (build, up, down, clean)
- πͺ Pre-/post-command hooks - Run custom scripts before or after any command with
pm hooks - π€ Shell autocompletion - TAB completion for bash, zsh, fish, and PowerShell with
pm completions - π Security scan - Detect misconfigurations (Dockerfile root, exposed secrets, insecure URLs) with
pm secure, auto-fix with--fix - π Dependency audit - Scan dependencies for known vulnerabilities with
pm auditusing native tools (npm audit, cargo audit, govulncheck, pip-audit, dotnet) - π€ Export & Import - Migrate setups between machines with
pm exportandpm import, supports selective export and path validation - π CI/CD detection - Detect GitHub Actions, GitLab CI, Jenkins, Travis CI, CircleCI with
pm ciand inpm info - π§Ή Linting & Formatting - Run linters with
pm lintand formatters withpm fmt, auto-detects ESLint, Clippy, Prettier, gofmt, Ruff, and more - π¦ Multi-project Workspaces - Detect monorepo modules with
pm modules, multi-language detection,pm build --allandpm test --all - π Env File Detection - Discover
.envfiles withpm env files, view masked contents withpm env show, switch environments withpm env switch - π Secret Scanning - Detect hardcoded secrets (AWS keys, GitHub tokens, Slack tokens) in
.envfiles, integrated inpm doctorandpm secure - ποΈ Database Migrations - Detect migration tools (Prisma, Alembic, Diesel, Flyway, Liquibase, SQLx) with
pm migrate, run and check status - π License Key System - Open Core model with
pm license, RSA-SHA256 offline validation, Community/Pro branding (no feature restrictions) - π Performance Tracking - Auto-record build/test/run times, view history and trends with
pm stats, per-project averages and summaries - π Multi-platform - Works on Windows, Linux, and Mac
- Java 17 or higher (recommended: Java 21 LTS)
- Maven 3.6 or higher
- Git (optional, for repository information)
Quick start β download the latest release and run the installer:
# Windows (PowerShell)
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1
# Linux/Mac
chmod +x scripts/install.sh && ./scripts/install.shπ Full installation guide (step-by-step, build from source, troubleshooting, uninstall): INSTALL.md
| Command | Description |
|---|---|
pm add <name> --path <path> |
Register a new project |
pm add <name> --path <path> --env "KEY=value,..." |
Register with environment variables |
pm list |
List all projects |
pm build <name> |
Build a project |
pm run <name> |
Run a project |
pm test <name> |
Run tests |
pm commands <name> |
View available commands |
pm commands <name> add <cmd> "<line>" |
Add a custom command |
pm commands <name> remove <cmd> |
Remove a command |
pm commands --all |
View commands for all projects |
pm info <name> |
View detailed information (including Git status) |
pm remove <name> |
Remove project |
pm env set <name> KEY=VALUE |
Set environment variables |
pm env get <name> KEY |
Get a variable value |
pm env list <name> [--show] |
List variables (sensitive values masked) |
pm env remove <name> KEY |
Remove a variable |
pm env clear <name> |
Remove all variables |
pm env files <name> |
List .env files in project directory |
pm env show <name> <file> [--show] |
Show .env file contents (masked by default) |
pm env switch <name> <env-name> |
Copy .env.<env-name> to .env |
pm hooks <name> |
List hooks for a project |
pm hooks <name> add <slot> "<script>" |
Add a pre-/post-command hook |
pm hooks <name> remove <slot> "<script>" |
Remove a hook |
pm hooks --all |
List hooks for all projects |
pm completions <shell> |
Generate completion script (bash/zsh/fish/powershell) |
pm rename <old> <new> |
Rename a project |
pm rename <name> --path <path> |
Update project path |
pm refresh <name> |
Re-detect project type and update commands |
pm refresh --all |
Refresh all registered projects |
pm update |
Update to the latest version |
pm doctor |
Diagnose environment (runtimes, paths, health scores) |
pm doctor --score |
Show only health grades (A/B/C/D/F) per project |
pm secure |
Scan projects for security misconfigurations |
pm secure --fix |
Auto-fix .gitignore issues (add .env, *.pem, *.key entries) |
pm audit |
Audit dependencies for known vulnerabilities |
pm ci [name] |
Show CI/CD pipelines and dashboard URLs |
pm lint [name] |
Run linters on project(s) |
pm fmt [name] |
Run formatters on project(s) |
pm modules [name] |
Show workspace modules |
pm migrate |
List detected migration tools per project |
pm migrate <name> |
Run database migration (with confirmation) |
pm migrate <name> status |
Check migration status |
pm build --all |
Build all registered projects |
pm test --all |
Test all registered projects |
pm export |
Export all projects to a portable JSON file |
pm export <names...> [--file <path>] |
Export selected projects to a custom file |
pm import <file> |
Import projects from an exported JSON file |
pm config telemetry [on|off] |
Enable or disable anonymous telemetry |
pm license [info] |
Show current license status |
pm license activate <key> |
Activate a Pro license key |
pm license deactivate |
Remove license, revert to Community Edition |
pm stats <name> |
Show build/test/run time history for a project |
pm stats --all |
Show performance summary across all projects |
pm help |
Show help |
pm version |
Show version |
# Register a project (automatic detection)
pm add my-api --path ~/projects/my-api
# Register with environment variables
pm add my-api --path ~/projects/my-api --env "PORT=8080,DEBUG=true,API_KEY=secret"
# List all projects
pm list
# Build any project
pm build my-api
# Run with environment variables (automatic)
pm run my-api
# View project info + Git status
pm info my-apiExample output:
Project Information
βββββββββββββββββββ
my-api (Maven)
Path: /home/user/projects/my-api
Modified: 5 minutes ago
Commands: 5
Environment Variables: 3
Git:
Branch: feature/new-endpoint
Status: 2 modified, 1 untracked
Unpushed: 3 commits
Commands for my-api (Maven)
Default
build β mvn package
run β mvn exec:java
test β mvn test
clean β mvn clean
Custom
lint β mvn checkstyle:check
Environment Variables
PORT = 8080
DEBUG = true
API_KEY = secret
| Type | Detection Files | Default Commands |
|---|---|---|
| Gradle | build.gradle, build.gradle.kts |
build, run, test, clean |
| Maven | pom.xml |
package, exec:java, test, clean |
| Rust | Cargo.toml |
build, run, test, clean |
| Go | go.mod |
build, run, test, clean |
| Flutter | pubspec.yaml |
build, run, test, clean |
| pnpm | pnpm-lock.yaml |
build, dev, test |
| Bun | bun.lockb, bun.lock |
build, dev, test |
| Yarn | yarn.lock |
build, start, test |
| Node.js | package.json (fallback) |
build, start, test |
| .NET | *.csproj, *.fsproj |
build, run, test |
| Python | requirements.txt, setup.py |
(manual configuration) |
| Docker | docker-compose.yml, docker-compose.yaml |
build, up, down, clean |
Detection priority: Language types always take priority. When a project has both
pom.xmlanddocker-compose.yml, it's detected as Maven (not Docker). Docker is only detected when no language-specific type is found. For JS projects, specific package managers (pnpm, Bun, Yarn) take priority over generic Node.js.
Can't find your stack? ProjectManager works with any project - just configure commands manually.
Stop setting environment variables manually every time. Configure once, use forever.
API with configurable port:
pm add my-api --path ~/my-api --env "PORT=8080,HOST=localhost"
pm run my-api # Automatically uses PORT=8080Project with API keys:
pm add backend --path ~/backend --env "API_KEY=abc123,DB_HOST=localhost,DEBUG=true"
pm run backend # All variables availableJava project with JVM options:
pm add big-project --path ~/big-project --env "MAVEN_OPTS=-Xmx4G -XX:+UseG1GC"
pm build big-project # Uses 4GB RAM automaticallypm env set my-api PORT=8080,DEBUG=true # Set variables
pm env get my-api PORT # Get a value
pm env list my-api # List (sensitive values masked)
pm env list my-api --show # List (all values revealed)
pm env remove my-api DEBUG # Remove a variable
pm env clear my-api # Remove all variables- Register once with variables (or add them later with
pm env set) - Variables saved in configuration
- Automatically injected when you run
pm build,pm run, orpm test - View anytime with
pm infoorpm env list
Know your repository status without leaving your current folder.
What you see in pm info:
- Current branch - Which branch you're working on
- Working tree status - Modified, staged, untracked files
- Unpushed commits - How many commits need to be pushed
Benefits:
- β Check multiple repos instantly
- β Never forget to commit/push
- β
See which branch you're on without
git status
| Task | Without ProjectManager | With ProjectManager |
|---|---|---|
| Build a project | cd folder && gradle build |
pm build myproject |
| Run with config | cd folder && PORT=8080 mvn exec:java |
pm run myproject |
| Check git status | cd folder && git status |
pm info myproject |
| Switch projects | cd ../other && ... |
pm build other |
| Remember commands | Check docs/README | pm commands myproject |
vs Other Tools:
- Make/Task runners: Requires per-project setup, no cross-technology support
- Shell aliases: Limited functionality, manual per-project configuration
- IDE: Locked to one editor, no CLI workflow
- ProjectManager: β Universal, β Portable, β 5-minute setup
ProjectManager/
βββ src/main/java/pm/
β βββ ProjectManager.java # Main class
β βββ core/ # Models (Project, CommandInfo)
β βββ cli/ # CLI interface
β βββ detector/ # Type detection
β βββ executor/ # Command execution
β βββ storage/ # JSON persistence
β βββ workspace/ # Workspace/monorepo detection
β βββ tracking/ # Performance tracking (stats)
β βββ util/ # Utilities (Git, Adapters)
βββ scripts/
β βββ install.ps1 # Windows installer
β βββ install.sh # Linux/Mac installer
β βββ INSTALL.md # Installation guide
βββ docs/
β βββ es/ # Spanish documentation
β βββ README.md
β βββ User-Guide.md
β βββ ROADMAP.md
β βββ SECURITY.md
βββ User-Guide.md # Complete user guide (English)
βββ ROADMAP.md # Future plans and ideas
βββ SECURITY.md # Security policy
βββ CONTRIBUTING.md # Contribution guidelines
βββ pom.xml
Projects are saved in:
- Windows:
C:\Users\User\.projectmanager\projects.json - Linux/Mac:
~/.projectmanager/projects.json
Manual editing supported (advanced users only)
ProjectManager collects anonymous usage statistics to improve the tool. Telemetry is opt-in β disabled by default.
- PM version, OS name/version, Java version
- Command name (e.g.,
build,test) β no arguments - Number of registered projects β no project names or paths
- Project names, file paths, source code
- Environment variables, secrets, credentials
- Personal information, IP addresses, usernames
pm config telemetry on # Enable
pm config telemetry off # Disable
pm config telemetry # Check statusOn first run, PM asks: Enable telemetry? (y/n) β default is no.
Delete ~/.projectmanager/config.json to reset all preferences.
ProjectManager follows an Open Core model. By default, it runs as Community Edition β all features are fully available with no restrictions.
- The banner shows "Community Edition" or "Pro" based on your license status
- License keys are validated offline using RSA-SHA256 signatures (no server calls)
- License data is stored locally at
~/.projectmanager/license.json - Branding only β no features are gated or restricted
- Each license allows 2 activations (e.g., desktop + laptop)
- Use
pm license deactivateto free a slot and move the license to another machine
pm license # Show current license status
pm license info # Same as above (shows edition, holder, activations allowed)
pm license activate <key> # Activate a Pro license key
pm license deactivate # Free this activation slot, revert to Community EditionChanging machines? Run
pm license deactivateon the old machine first, thenpm license activate <key>on the new one.
- Core β Project registration, auto-detection (12 types), unified commands, JSON persistence
- CLI β
pm doctor,pm env,pm refresh,pm rename,pm update,pm commands add/remove - Runtimes β Gradle, Maven, Node.js, .NET, Python, Rust, Go, pnpm, Bun, Yarn, Flutter, Docker
- Integrations β Git status, interactive TTY, multi-platform installers, GitHub Actions
- Security β
pm securescans for misconfigurations,--fixauto-remediates .gitignore issues - Audit β
pm auditchecks dependencies for known vulnerabilities using native ecosystem tools - Portability β
pm export/pm importfor migrating setups between machines or sharing team configs - CI/CD β
pm cidetects pipelines (GitHub Actions, GitLab CI, Jenkins, Travis, CircleCI) and shows dashboard URLs - Lint & Format β
pm lint/pm fmtauto-detect and run linters/formatters (ESLint, Prettier, Clippy, gofmt, Ruff, Black, Checkstyle, Spotless, and more) - Workspaces β
pm modulesdetects monorepo structures (Cargo, npm/pnpm/yarn, Gradle, Go), multi-language detection,pm build --all/pm test --all - Environments β
pm env files/show/switchfor .env file discovery, secret scanning (AWS, GitHub, Slack tokens),pm migratefor database migration tools (Prisma, Alembic, Diesel, Flyway, Liquibase, SQLx) - Telemetry β Opt-in anonymous usage analytics via PostHog,
pm config telemetry on/off, privacy-first design - License Key β Open Core model with
pm license, RSA-SHA256 offline validation, Community/Pro branding (no feature restrictions) - Performance Tracking β
pm statstracks build/test/run times automatically, shows averages, min/max, and history per project - Reliability β Atomic writes, backup/recovery, directory validation, download integrity, 800+ tests
Latest release: v2.0.0 (Performance Tracking) β Full version history in ROADMAP.md
- Project groups (
pm group create backend api-users product-service,pm run-group backend)
See ROADMAP.md for the full roadmap with detailed plans.
We take bugs seriously! If you encounter a problem:
- Check existing issues: Open Issues
- Report a new bug: Create Bug Report
What to include in your bug report:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
pm versionoutput- Operating system
- Error messages (if any)
Example:
Bug: pm build fails on Windows with spaces in path
Steps:
1. pm add myproject --path "C:\My Projects\test"
2. pm build myproject
3. Error: Path not found
Expected: Build succeeds
Actual: Error with path containing spaces
Have an idea to improve ProjectManager? We'd love to hear it!
Contributions are welcome! Please:
- Fork the project
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3). See LICENSE for details.
Commercial licensing is available for organizations that require alternative terms. See COMMERCIAL.md for details or contact: legal@softdryzz.com
SoftDryzz
- GitHub: @SoftDryzz
| π© General | contact@softdryzz.com |
| π‘οΈ Security | security@softdryzz.com |
| βοΈ Licensing | legal@softdryzz.com |
| π€ Founder | cristo@softdryzz.com |
β If ProjectManager saves you time, give it a star on GitHub!
π¬ Questions? Open an issue or check the User Guide