Skip to main content

Troubleshooting

A step-by-step guide to diagnosing issues with your Miren applications and server.

Quick health check

Start with miren doctor to verify your environment is set up correctly:

miren doctor

This checks your configuration, server connectivity, and authentication. It provides context-aware suggestions when it detects issues. You can also run the subcommands individually:

miren doctor config   # Check cluster configuration
miren doctor server # Check server connectivity
miren doctor auth # Check authentication

App not starting

If your app is deployed but not responding:

1. Check the app status

miren app status -a myapp

This shows the current deployment state, version, configuration, and any error messages.

2. Check the logs

# Recent logs
miren logs -a myapp

# Live tail
miren logs -a myapp -f

# Filter for errors
miren logs -a myapp -g error

# Logs from a specific service
miren logs -a myapp --service web

3. Check sandbox state

miren sandbox list

Look for sandboxes that are stuck in pending or not_ready, or that have gone dead. Use --all to include dead sandboxes in the output.

Deploy failed

1. Find the failed deployment

miren app history -a myapp

Failed deployments are marked with a red . Use --detailed for more info including error messages and git SHAs.

2. Check build logs

miren logs build -a myapp VERSION

Replace VERSION with the version from the deployment history. This shows the build output so you can see where things went wrong. See Logs for more on filtering and following logs.

Server-level issues

If you suspect the Miren server itself is having problems:

1. Check server logs on the host

For systemd installations:

sudo journalctl -u miren -f

For Docker installations:

docker logs -f miren

2. Test connectivity

miren debug connection

This tests RPC and HTTP connectivity to the server and reports the server version and auth status.

Gathering a debug bundle

If you've worked through the steps above and need further help, collect a debug bundle to share:

sudo miren debug bundle

This creates a miren-debug.tar.gz archive containing system info, container state, process lists, and server logs.

Review bundles before sharing

Debug bundles collect diagnostic data that may include sensitive information:

  • Process command lines — arguments passed to running processes may contain tokens or credentials
  • Application logs — error messages and stack traces can include request data or internal details

Environment variable values are automatically redacted from container inspect output, but logs and process arguments are included as-is. Review the bundle contents and remove anything sensitive before sharing, especially in public channels like GitHub Issues.

Use sudo for a complete bundle

Without sudo, the command still runs but produces a partial bundle. Root access is needed for:

  • Containerd socket — the primary source of container state
  • System journal — miren server logs via journalctl
  • Docker socket — unless your user is in the docker group

Bundle options

FlagDescriptionDefault
-o, --outputOutput file pathmiren-debug.tar.gz
-s, --sinceInclude logs since this time1 day ago
-d, --docker-containerDocker container namemiren
# Include logs from the last week
sudo miren debug bundle --since "7 days ago"

# Save to a specific path
sudo miren debug bundle -o /tmp/miren-debug.tar.gz

Getting help

If you're stuck, share your debug bundle and what you've tried:

Remember to review debug bundles for sensitive data before attaching them to public issues.