Documentation
Docs / Guides / Troubleshooting

Troubleshooting

This guide covers the most common problems people run into and how to resolve them. Start with the symptom that matches yours, then follow the steps. If nothing here fits, jump to Collecting logs before asking for help.

Quick checks

Before digging in, confirm the basics. Most issues are resolved by one of these:

$ app --version
app 3.4.1

$ app status
state:   running
listen:  0.0.0.0:8080
uptime:  2h 14m

Connection refused or timeouts

If clients cannot reach the service, the problem is usually one of three things: the process is not running, it is bound to a different address, or a firewall is in the way.

SymptomLikely causeWhat to do
ECONNREFUSEDNothing is listening on that portCheck app status and confirm the port in your config.
ETIMEDOUTFirewall or security group blocking trafficOpen the port for your client's IP range and retry.
EADDRINUSE in logsAnother process holds the portRun lsof -i :8080 and stop the other process, or change the port.
Works locally, not remotelyBound to 127.0.0.1Set listen_address to 0.0.0.0 or a specific interface.

Authentication failures

A 401 Unauthorized or 403 Forbidden response almost always means the credentials are missing, expired, or scoped too narrowly.

  1. Confirm the token is present in the Authorization header with the Bearer prefix.
  2. Check the token has not expired. Tokens are valid for 24 hours by default.
  3. Verify the token's scope includes the action you are attempting.
Note: Tokens are shown only once when created. If you have lost one, generate a new token and revoke the old one.

Slow responses

When requests take longer than expected, look at these in order:

Collecting logs

If you need to open a support request, include the output of the diagnostic command. It gathers the configuration (with secrets redacted), recent logs, and version information in one file.

$ app diagnose --since 1h --output app-diag.tar.gz

To increase log detail temporarily, set the level to debug. Remember to switch it back, since debug logging is verbose and can fill disks quickly.

log:
  level: debug   # default: info

Still stuck?

Search the error code reference for the exact message you are seeing. If that does not help, open an issue on the project tracker and attach the diagnostic bundle from the previous section. Include the version, your operating system, and the exact steps that led to the problem.