Advanced Features
The projax CLI includes several intelligent features that make managing projects easier.
Intelligent Script Selection
When you run prx <project> without specifying a script, the CLI automatically selects the appropriate script:
- If project has "start" but no "dev" → automatically runs "start"
- If project has "dev" but no "start" → automatically runs "dev"
- If both exist or neither exists → shows interactive menu to select from all available scripts
Examples
# Auto-selects "start" if no "dev" exists
prx 1
# Auto-selects "dev" if no "start" exists
prx 2
# Shows menu if both exist
prx 3
This makes it easy to quickly start projects without remembering script names.
Background Script Execution
Run scripts in the background with minimal logging. The script output is redirected to log files, allowing you to continue using your terminal.
Background Mode Flags
Multiple flags are supported for convenience:
-M(shortest)--background-b--daemon
Features
- Script runs detached from your terminal
- Output saved to log files in
~/.projax/logs/ - Process tracked with PID
- You can continue using your terminal immediately
Example
# Start dev server in background
prx 1 dev -M
# Output shows:
# ✓ Started "My Project" (dev) in background [PID: 12345]
# Logs: /Users/username/.projax/logs/process-1234567890-dev.log
# Command: npm run dev
Viewing Logs
# Logs are stored in:
~/.projax/logs/process-<timestamp>-<script>.log
# View recent log
tail -f ~/.projax/logs/process-*.log
Port Conflict Detection & Remediation
The CLI automatically detects and helps resolve port conflicts when running scripts.
How It Works
- Proactive Detection: Before running a script, checks if known ports are in use
- Reactive Detection: If a script fails with a port error, extracts the port number from the error message
- Process Identification: Finds the process using the port (cross-platform)
- Remediation Options:
- Interactive: Prompts to kill the process and retry
- Auto-resolve: Use
--forceor-Fflag to automatically kill and retry
Port Detection Sources
- Automatically extracted from config files during scanning
- Detected from error messages when scripts fail
- Stored in database for quick reference
Examples
Interactive Resolution
prx 1 dev
# ⚠️ Port 3000 is already in use by process 12345 (node)
# Kill process 12345 (node) and continue? (y/N)
Auto-resolve Port Conflicts
prx 1 dev --force
# Port 3000 is already in use by process 12345 (node)
# Killing process 12345 on port 3000...
# ✓ Process killed. Retrying...
Supported Error Patterns
The CLI recognizes various port error formats:
EADDRINUSE: address already in use :::3000Port 3000 is already in useError: listen EADDRINUSE: address already in use 0.0.0.0:3000- And many more common port error formats
Port Scanning & Indexing
The CLI automatically scans and indexes ports from project configuration files.
Automatic Scanning
Ports are scanned when:
- Adding a project (
prx add) - Scanning for tests (
prx scan) - Running in background when listing projects (
prx list) if ports are stale (>24 hours)
Supported Config Files
- Vite:
vite.config.js/ts-server.port - Next.js:
next.config.js/ts- dev server port - Webpack:
webpack.config.js-devServer.port - Angular:
angular.json-serve.options.port - Nuxt:
nuxt.config.js/ts-server.port - Package.json: Scripts with
--port,-p,PORT=patterns - Environment Files:
.env,.env.local,.env.development-PORT,VITE_PORT,NEXT_PORT, etc.
Port Information Display
- Shown in
prx listtable view - Detailed view with
prx list --ports - Grouped by script name when applicable
Multi-Project Type Support
The CLI supports multiple project types and automatically detects the appropriate runner:
Node.js Projects
- Reads
package.json - Detects package manager (npm, yarn, pnpm)
- Runs scripts with appropriate command
Python Projects
- Reads
pyproject.toml - Supports Poetry
- Runs scripts with Poetry or python commands
Rust Projects
- Reads
Cargo.toml - Runs common
cargocommands (build, run, test, etc.)
Go Projects
- Reads
go.modor Makefile - Runs
gocommands or Makefile targets
Makefile Projects
- Detects Makefile
- Runs Makefile targets
Project Identification
Projects can be identified by:
- ID: Numeric ID assigned when added
- Name: Custom name or directory name
Both methods work for all commands:
prx 1 dev # By ID
prx "My Project" dev # By name
Related Documentation
- Shell Integration - Integrate with your shell
- Examples - See these features in action