Port Management
The API server automatically manages port allocation and discovery.
Port Discovery
The API server automatically finds an available port in the range 38124-38133.
Port Selection Process
- Starts checking from port 3001
- Tests each port sequentially
- Selects the first available port
- If no port is available, throws an error
Port File
The selected port is written to ~/.projax/api-port.txt for discovery by other components:
# Read the port
cat ~/.projax/api-port.txt
# Output: 3001
Port Range
Default port range: 38124-38133
This range is chosen to:
- Avoid conflicts with common development ports (3000, 8080, etc.)
- Provide multiple instances if needed
- Stay within common development port ranges
Port Discovery Methods
CLI Discovery
The CLI discovers the API port by:
- Reading
~/.projax/api-port.txt - If not found, trying common ports (3001-3005)
- Checking health endpoint on each port
Desktop App Discovery
The Desktop app uses the same discovery method as the CLI.
Health Check
Verify the API is running on a specific port:
curl http://localhost:38124/health
Expected response:
{
"status": "ok",
"timestamp": "2024-01-01T12:00:00.000Z"
}
Port Conflicts
If a port is already in use:
- The API tries the next port in sequence
- If all ports are in use, startup fails with an error
Resolving Port Conflicts
-
Find what's using the port:
# macOS/Linux
lsof -i :38124
# Windows
netstat -ano | findstr :38124 -
Kill the process (if safe to do so)
-
Restart the API server
Multiple Instances
While not recommended, you can run multiple API instances:
- Each instance will find its own available port
- Each writes to a different port file (if configured)
- CLI/Desktop connect to the first available instance
Related Documentation
- Installation - Set up the API server
- Integration - Integrate with the API