Troubleshooting
Server won’t start
Section titled “Server won’t start”Port 8080 already in use
Section titled “Port 8080 already in use”Error: listen tcp :8080: bind: address already in useUse a different port via flag or environment variable:
./myworkshop serve --port 9090# orPORT=9090 ./myworkshop servePID file already present
Section titled “PID file already present”If a previous server process crashed without cleaning up, ~/.worky/server.pid may still exist:
worky stop # attempts a clean shutdown# or remove manuallyrm ~/.worky/server.pidChecks not passing
Section titled “Checks not passing”FileExists / DirExists
Section titled “FileExists / DirExists”✗ file "done.txt" does not existVerify the path is relative to the working directory where the workshop binary runs, not the binary location.
EnvVar checks
Section titled “EnvVar checks”✗ environment variable KUBECONFIG is not setThe variable must be set in the same shell session that runs ./myworkshop check. Variables exported in another terminal are not visible.
Command checks
Section titled “Command checks”✗ command "kubectl" not foundThe command must be on PATH in the current shell. Verify with:
which kubectlNetwork / HTTP checks
Section titled “Network / HTTP checks”✗ dial tcp localhost:8080: connect: connection refusedThe service is not yet running on that port. Start the service before running check, or add Retries and RetryDelay to the check so worky waits for it.
Check timeout
Section titled “Check timeout”✗ timed out after 5sThe check’s Timeout duration was exceeded. Either increase Timeout in the check definition or investigate why the external process is slow to respond.
No checks defined
Section titled “No checks defined”no checks defined for chapter 02-deployThe chapter struct has an empty or nil Checks slice. Add at least one worky.Check entry to the chapter, or remove the chapter if it is informational only.
Progress and state issues
Section titled “Progress and state issues”Chapter stuck / unexpectedly locked
Section titled “Chapter stuck / unexpectedly locked”Run ./myworkshop status to see which chapters are complete and which are unlocked. If a chapter that should be unlocked appears locked, check that the preceding chapter’s checks all pass:
./myworkshop check 01-setupUnknown chapter ID
Section titled “Unknown chapter ID”unknown chapter: deployThe ID passed to check or status must match exactly the ID field in Config.Chapters. Use the full ID as defined (e.g. 01-setup, not setup).
Corrupted progress file
Section titled “Corrupted progress file”If ~/.worky/progress.json is corrupted (e.g. truncated after a crash), worky will fail to load state. Reset progress to start fresh:
./myworkshop resetOr delete the file manually:
rm ~/.worky/progress.jsonDetached mode
Section titled “Detached mode”Viewing logs
Section titled “Viewing logs”./myworkshop logsLogs are written to ~/.worky/server.log when the server is started with --detach.
Stopping the server
Section titled “Stopping the server”./myworkshop stopIf stop fails or the process is unresponsive:
kill $(cat ~/.worky/server.pid)rm ~/.worky/server.pidFurther reading
Section titled “Further reading”- Built-in checks — full list of built-in check functions and their error messages
- Patterns — timeout, retry, and custom check patterns