Troubleshooting
This guide covers solutions to common problems you might encounter with Phaset. If you don’t find your issue here, reach out at [email protected] or join our Discord community.
Installation Issues
Section titled “Installation Issues”Command not found: phaset
Section titled “Command not found: phaset”Problem: After installing, running phaset gives “command not found”
Solution: Add ~/.local/bin to your PATH:
export PATH="$HOME/.local/bin:$PATH"Make it permanent by adding this line to your shell profile:
# For Zsh (macOS default)echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
# For Bash (Linux default)echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrcThen restart your terminal or run source ~/.zshrc (or ~/.bashrc).
Node.js version error
Section titled “Node.js version error”Problem: Node.js version 24 or later is required
Solution:
-
Check your current version:
Terminal window node --version -
Install Node.js 24 or later from nodejs.org
-
Verify the installation:
Terminal window node --version
Note: If you have multiple Node versions installed (via nvm, Volta, etc.), ensure version 24+ is active.
Installation fails during download
Section titled “Installation fails during download”Problem: Installation script fails to download Phaset
Solution:
-
Check your internet connection
-
Verify you can access
https://releases.phaset.dev -
Check if you have
curlorwgetinstalled:Terminal window curl --versionwget --version -
Try the manual installation from releases.phaset.dev
Permission denied errors during installation
Section titled “Permission denied errors during installation”Problem: Permission denied when installing or running Phaset
Solution:
-
Ensure you have write permissions to
~/.local/binand~/.phaset:Terminal window mkdir -p ~/.local/bin ~/.phasetchmod 755 ~/.local/bin ~/.phaset -
Don’t use
sudowith the installer—it should install to your user directory -
If running Phaset, ensure write permissions in your working directory for database files
Configuration Issues
Section titled “Configuration Issues”Configuration file not found
Section titled “Configuration file not found”Problem: Indication that the configuration file is not being picked up, though it should have been.
Solution:
- Run
phaset initto create a template configuration file - Ensure you’re running
phaset startfrom the directory containing your config file - Check the file name is exactly
phaset.config.json(case-sensitive)
See also “CLI not picking up local configuration”.
Missing required configuration values
Section titled “Missing required configuration values”Problem: Phaset won’t start, showing errors like Missing email.host value
Solution: Ensure all required fields are configured. The minimum required configuration is:
{ "email": { "host": "smtp.yourprovider.com", "password": "your-smtp-password" }, "phaset": { "bootstrap": { "organizationName": "Your Organization", } }}See the Configuration Guide for complete details.
CLI not picking up local configuration
Section titled “CLI not picking up local configuration”Problem: CLI seems to ignore your phaset.config.json file
Solution:
-
Verify you’re in the correct directory:
Terminal window pwdls -la phaset.config.json -
Check the JSON syntax is valid (common issues: trailing commas, missing quotes)
-
As a workaround, copy the configuration to Phaset’s installation directory:
Terminal window cp phaset.config.json ~/.phaset/ -
Or use environment variables instead (see Configuration Guide)
Invalid JSON syntax
Section titled “Invalid JSON syntax”Problem: Unexpected token or JSON parsing errors
Solution:
- Validate your JSON using a tool like jsonlint.com
- Common issues:
- Trailing commas after the last item in an array or object
- Missing quotes around keys or string values
- Unescaped quotes inside strings
- Comments (JSON doesn’t support comments)
Example of invalid JSON:
{ "email": { "host": "smtp.example.com", // ❌ No comments allowed "port": 465, // ❌ Trailing comma before closing brace }}Authentication & Email Issues
Section titled “Authentication & Email Issues”Not receiving sign-in emails
Section titled “Not receiving sign-in emails”Problem: Magic link emails never arrive
Solution:
-
Check spam/junk folder - sign-in emails may be filtered
-
Verify email configuration:
Terminal window # Check your config has correct SMTP detailscat phaset.config.json | grep -A 6 "email" -
Test SMTP connectivity:
-
Verify firewall allows outbound connections to your SMTP port
-
Many cloud providers block port 25—use 465 (SSL) or 587 (TLS)
-
Try connecting manually:
Terminal window telnet smtp.yourprovider.com 465
-
-
Check SMTP credentials:
- For Gmail, use an app password, not your regular password
- Verify username is correct (often your full email address)
- Check password has no typos
-
Verify admin email:
- Ensure
BOOTSTRAP_ADMIN_EMAILmatches the email you’re trying to sign in with - Check for typos or extra whitespace
- Ensure
-
Check Phaset logs for SMTP errors when you attempt sign-in
Authentication failure loop in web app
Section titled “Authentication failure loop in web app”Problem: After clicking magic link, redirected back to sign-in page repeatedly
Solution:
- Clear browser storage:
- Open browser console (F12)
- Run:
localStorage.clear() - Refresh the page and try signing in again
- Check API/web app configuration match:
- Web app’s
window.APP_CONFIG.apiBaseUrlmust point to your API - API’s
auth.appUrlmust point to your web app’s/app/finishSignInpath - Both must use the same protocol (http/https) and domain
- Web app’s
- Verify CORS settings:
- API’s
server.allowedDomainsmust include your web app’s domain - Check browser console for CORS errors
- API’s
- Check magic link hasn’t expired:
- Default expiry is 15 minutes
- Request a new sign-in link
Magic link says “Invalid or expired token”
Section titled “Magic link says “Invalid or expired token””Problem: Clicking the magic link shows an error
Solution:
- Request a new link - magic links expire after 15 minutes (default)
- Check the URL is complete - email clients sometimes break long URLs across lines
- Verify JWT secret hasn’t changed - if you changed
auth.jwtSecretafter sending the link, tokens become invalid - Check system time - ensure your server’s clock is accurate (JWT validation is time-sensitive)
Cannot access web app (CORS errors)
Section titled “Cannot access web app (CORS errors)”Problem: Browser console shows blocked by CORS policy errors
Solution:
-
Check allowed domains in your API configuration:
"server": {"allowedDomains": ["https://your-frontend-domain.com","http://localhost:5173"]} -
Match the exact domain:
- Include protocol (
http://orhttps://) - Include port if non-standard (
:5173,:3000, etc.) - No trailing slashes
- Include protocol (
-
Restart the API after changing CORS configuration
-
For development only, you can temporarily use
["*"]to allow all domains, but never in production
API & Connectivity Issues
Section titled “API & Connectivity Issues”API won’t start
Section titled “API won’t start”Problem: phaset start fails or exits immediately
Solution:
-
Check for port conflicts:
Terminal window # See what's using port 3000lsof -i :3000Kill the conflicting process or use a different port:
Terminal window phaset start --port 8080 -
Check configuration is valid - see Configuration Issues
-
Check Node.js version - must be 24 or later
-
Check logs for error messages when starting
-
Verify required files exist:
Terminal window ls -la ~/.phaset/phaset_api.mjs
API connection refused or timeout
Section titled “API connection refused or timeout”Problem: Web app cannot connect to API
Solution:
-
Verify API is running:
Terminal window # Check if API is listeningcurl http://localhost:3000 -
Check firewall rules:
- Allow inbound connections on API port (default 3000)
- For cloud deployments, check security groups/firewall rules
-
Verify API URL in web app:
- Open
index.html - Check
window.APP_CONFIG.apiBaseUrlmatches your API endpoint - Include protocol and port:
http://localhost:3000
- Open
-
Check network connectivity:
- For remote API, ensure you can reach it:
curl https://your-api.com - Check DNS resolution:
nslookup your-api.com
- For remote API, ensure you can reach it:
-
For cloud deployments:
- Verify the app deployed successfully
- Check health check endpoint is passing
- Review deployment logs for errors
Port already in use
Section titled “Port already in use”Problem: Error: listen EADDRINUSE: address already in use :::3000
Solution:
-
Find what’s using the port:
Terminal window # On Linux/macOSlsof -i :3000# On Linux (alternative)netstat -tulpn | grep 3000 -
Kill the process:
Terminal window kill <PID> -
Or use a different port:
Terminal window phaset start --port 8080Then update your web app’s
apiBaseUrlaccordingly.
Cannot connect to database
Section titled “Cannot connect to database”Problem: Database-related errors on startup
Solution:
-
Check write permissions in your working directory:
Terminal window ls -la# Verify you own the directory and files -
Verify disk space:
Terminal window df -h . -
Check database directory configuration:
"storage": {"databaseDirectory": "" // Empty = current directory} -
For corrupted database, backup and delete database files to start fresh
Licensing Issues
Section titled “Licensing Issues”License key is invalid or not activated
Section titled “License key is invalid or not activated”Problem: “License key is invalid or not activated” on startup
Solution:
-
Activate your license:
Terminal window phaset activate YOUR-LICENSE-KEY -
Verify key format - should be
PHASET-V1-XXXX-XXXX-XXXX -
Check key matches major version:
- A
V1key only works with Phaset 1.x - A
V2key only works with Phaset 2.x
- A
-
Verify online connectivity - license validation requires internet access
-
Check license status:
Terminal window phaset license
License key is not eligible for this version
Section titled “License key is not eligible for this version”Problem: “License key is not eligible for this version of Phaset”
Solution:
Your license key’s major version doesn’t match the Phaset version you’re running.
- Phaset 1.x requires a
PHASET-V1-...key - Phaset 2.x requires a
PHASET-V2-...key
Either:
- Downgrade to the correct major version
- Purchase a license for the current major version
License validation fails
Section titled “License validation fails”Problem: Cannot validate license due to network errors
Solution:
-
Check internet connectivity:
Terminal window curl https://api.phaset.dev/prod/version/api -
Check firewall allows outbound HTTPS to
api.phaset.dev -
Try manual validation:
Terminal window curl --request POST \--url 'https://api.phaset.dev/prod/licenses/validate?key=YOUR-KEY' -
For airgapped environments, contact [email protected] for alternative licensing
Unable to invite more users or create more organizations
Section titled “Unable to invite more users or create more organizations”Problem: Error occurs when attempting to invite more users or create more organizations
Solution:
- Free license limits:
- 1 organization
- 2 users (including admin)
- Upgrade to a commercial license to remove these limits
- Or remove unused users/organizations if you’re within limits but hitting the cap
Integration & Metrics Issues
Section titled “Integration & Metrics Issues”Webhooks not triggering
Section titled “Webhooks not triggering”Problem: Push/PR/deployment events not appearing in Phaset
Solution:
-
Verify webhook URL is correct:
Terminal window https://your-phaset-api.com/integration/event/{ORG_ID}/{RECORD_ID}/{TOKEN}Replace placeholders with your actual values
-
Check webhook is active in your VCS settings
-
Verify webhook events are selected - see Integration Guide for required events
-
Check webhook delivery logs in your VCS:
- GitHub: Settings → Webhooks → Recent Deliveries
- GitLab: Settings → Webhooks → Recent events
- Look for failed deliveries and error messages
-
Verify network access - ensure your VCS can reach your API
-
Check Record ID matches - webhook URL must use correct Record ID
Metrics not appearing
Section titled “Metrics not appearing”Problem: DORA or engineering metrics show no data
Solution:
-
Verify webhook integration is working - see above
-
Check time range - default is last 30 days:
- Ensure events occurred in this period
- Try expanding the date range
-
Verify Record exists and matches webhook configuration
-
Check event types - some metrics require specific events:
- Deployment Frequency: deployment events
- Change Lead Time: commit + deployment events
- Change Failure Rate: deployment + incident events
-
Allow time for processing - metrics may not show up until the day after (in order to get aggregation etc. correct)
Standards not updating
Section titled “Standards not updating”Problem: Standards checks show outdated or no results
Solution:
- Standards only update via automation - cannot be updated in the UI
- Verify CI integration is configured correctly:
- See Integration Guide for setup
- If GitHub: Verify you are using the provided GitHub Action
- Else: Check your pipeline is running StandardLint manually
- Verify API key and endpoint are correct
- Check StandardLint output for errors:
- Review CI logs for StandardLint execution
- Verify
standardlint.results.jsonfile exists
Web App Issues
Section titled “Web App Issues”Web app shows blank page
Section titled “Web app shows blank page”Problem: Loading the web app shows nothing
Solution:
-
Check browser console (F12) for errors
-
Verify API endpoint is correct in
index.html:<script>window.APP_CONFIG = { apiBaseUrl: 'http://localhost:3000' };</script> -
Check API is running and accessible:
Terminal window curl http://localhost:3000 -
Clear browser cache and reload (Ctrl+Shift+R / Cmd+Shift+R)
-
Try a different browser to rule out browser-specific issues
-
Check static file server is running (if local), for example:
Terminal window python3 -m http.server 5173
Web app loads but shows errors
Section titled “Web app loads but shows errors”Problem: Web app displays error messages or broken features
Solution:
-
Check browser console for JavaScript errors
-
Verify API connectivity - most features require API access
-
Check authentication - try signing out and back in
-
Clear localStorage:
localStorage.clear() -
Verify web app version matches API version - major versions must align
Service Worker errors
Section titled “Service Worker errors”Problem: Console shows service worker registration failures
Solution:
-
Service workers require HTTPS (except localhost)
- For production, ensure you’re using HTTPS
- For local dev, access via
localhostnot127.0.0.1
-
Unregister old service workers:
- Chrome: DevTools → Application → Service Workers → Unregister
- Firefox: about:serviceworkers
-
Clear service worker cache and reload
Cloud Deployment Issues
Section titled “Cloud Deployment Issues”DigitalOcean App Platform deployment fails
Section titled “DigitalOcean App Platform deployment fails”Problem: App fails to deploy or shows errors
Solution:
-
Check deployment logs in DigitalOcean dashboard
-
Verify container image settings:
- Repository:
phasetdev/phaset-api - Tag:
latest - Registry: GitHub Container Registry
- Repository:
-
Check environment variables are set correctly - see Quickstart
-
Verify port configuration - HTTP port should be
3000 -
Check resource limits - ensure sufficient memory allocated
Netlify deployment issues
Section titled “Netlify deployment issues”Problem: Web app deployment fails or shows errors
Solution:
-
Check build logs in Netlify dashboard
-
Verify
_redirectsfile exists in root:/* /index.html 200 -
Ensure all files uploaded - the entire web app folder should be deployed
-
Check for file size limits - free tier has limits on site size
-
Clear Netlify cache and redeploy
Data not persisting (DigitalOcean)
Section titled “Data not persisting (DigitalOcean)”Problem: Data disappears after redeployment
Solution:
This is expected with the quickstart configuration. DigitalOcean App Platform uses ephemeral storage.
For persistent data:
- Deploy to a VM or VPS with persistent storage
- See Installation Deep Dive for production setup
Getting More Help
Section titled “Getting More Help”If you’ve tried the solutions above and still have issues:
Documentation
Section titled “Documentation”- Installation Deep Dive - Complete installation guide
- Configuration Guide - All configuration options
- Integration Guide - Setting up webhooks and automation
Community Support
Section titled “Community Support”- Discord Community - Chat with other users
- GitHub Discussions - Ask questions and share knowledge
Direct Support
Section titled “Direct Support”- Email: [email protected]
- Commercial customers: Priority support included with license
When reporting issues, include:
- Phaset version (
cat ~/.phaset/VERSION) - Operating system and version
- Node.js version (
node --version) - Error messages (full text)
- Relevant configuration (sanitized of secrets)
- Steps to reproduce the issue