Documentation

Troubleshooting

Start with ownci doctor and ownci status. For logs: ownci logs, or ownci logs --source ownci. Add -v to a failing command to see its debug output.

Symptoms and fixes

You seeFix
docker is not available in this WSL 2 distroDocker Desktop → Settings → Resources → WSL integration → enable the distro.
cannot connect to the Docker daemonStart Docker (the Docker Desktop app, or sudo systemctl start docker).
permission denied connecting to the Docker socketsudo usermod -aG docker $USER, then log out and in.
Docker server OS is "windows"Docker Desktop tray icon → Switch to Linux containers.
running as rootRun ownci as a normal user.
ICU library (libicuuc) not found, or the runner crashes at startInstall ICU (see Requirements) or run <data-dir>/runners/<name>/bin/installdependencies.sh with sudo.
data-dir … is on a Windows mountUse a Linux path: --data-dir ~/.local/share/ownci.
OwnCI is already set up for <repo> …; this data directory holds one runnerUse another --data-dir for a second repository (see Workflows → Several repositories).
… container belongs to another OwnCI data directory / container name … is in use (container-runner mode)Another data directory has a runner of the same name. ownci uninstall --unregister, then ownci setup --repo … --name <unique>.
… is a public repositoryUse a private repository, or --allow-public-repo if you accept the risk.
the GitHub token has no admin accessUse a token with admin access to the repository.
no GitHub token foundexport GITHUB_TOKEN=… or gh auth login.
[FAIL] isolation in doctorownci start repairs the .env and hook; otherwise ownci setup --repo … --force.
[WARN] isolation (image missing)docker pull <image shown by doctor> (ownci start also pulls it).
cleanup FAILED in a job logDocker is unavailable or the image is missing. See <runner>/ownci/last-cleanup.json, fix Docker, run ownci doctor.
runner directory … goes through a symlink (container-runner mode)Docker would mount the target under another name. Use the resolved path: --data-dir $(realpath <dir>).
image … cannot host the runner; it lacks: …The --image misses tools the runner container needs (plain ubuntu:22.04 lacks the docker CLI and ICU). Use the default image, one derived from it, or one like e2e/images/ubuntu22.Dockerfile in the repository.
the runner '…' could not be started (exit code 125)Docker refused the runner container (image missing, a mount refused). Run ownci doctor, then docker pull <image>.
status phase registration_lostThe runner was removed on GitHub: ownci setup --repo … --force.
status phase version_deprecatedThe runner could not self-update: upgrade ownci, then ownci stop and ownci setup --force (it replaces a runner older than the one OwnCI pins).
status phase duplicate_sessionAnother process uses this registration (another machine or a leftover process): stop it.
status phase crashedRepeated crashes. Read ownci logs (status shows the last line, status --json the last 20) and run ownci doctor.
status says stopped (unexpectedly)The supervisor was killed or the machine rebooted: ownci start recovers (it also stops runner processes left over from the killed supervisor).
A job stays queuedIs the runner online (ownci status --remote)? Does the workflow say runs-on: [ownci], and do its other labels match the runner’s (ownci status)? Did WSL or the machine go to sleep?
already running (pid N)ownci status, then ownci stop.

Known limitations

  • One job at a time per runner; use one data directory per repository.
  • Linux and WSL2 only. Tested end to end on WSL2 with Docker Desktop (amd64); native Linux and arm64 are built but not yet tested.
  • The runner is a plain process: it stops when you stop it, when WSL shuts down (the WSL VM can shut down by itself after your terminals close) or when the machine sleeps. Queued jobs wait until it reconnects. Use ownci start --detach and keep WSL running, for example by leaving a terminal open.
  • Container-runner mode starts the runner with run.sh --once, which the runner marks as deprecated. If a future runner drops it, OwnCI will report the runner as crashing.
  • The runner updates itself, so the installed version can be newer than the one OwnCI pinned. ownci status shows the real one.
  • No systemd service or auto-start on boot yet. OwnCI does not install Docker for you.