Skip to content

Health and logs

Container What it is Runs on
quasar-seed The one container you declare. It makes sure the recovery actor exists. Every machine
quasar-recovery The recovery actor. Creates and replaces the other Quasar services; answers quasar-recovery status. Every machine
quasar-postgres All state. Control plane, with Quasar’s own database
quasar-control-plane API, signaling, scheduler, web app. Runs migrations at startup. Control plane
quasar-node-agent Runs sessions: compositor, encoder, app containers. Host networking. GPU hosts

During a session you’ll also see the app container and an audio sidecar (PipeWire). During an update, a stopped quasar-node-agent.kept may briefly appear: the old agent, kept until the new one is verified.

On a legacy Compose install, use docker compose -f deploy/docker-compose.yml logs <service> and docker compose -f deploy/docker-compose.yml exec <service> <command> for logs and container commands. On Podman, use podman in place of docker.

Control plane (works over plain HTTP, before certificates are set up):

Terminal window
curl http://localhost:8080/health
# {"status":"ok","db":"ok"}

Node agent, on its host:

Terminal window
curl http://127.0.0.1:9091/health
# {"status":"ok","sessions":0,"connected":true}

connected: false means the agent is up but can’t reach the control plane.

Containers and the recovery actor’s view:

Terminal window
docker ps --filter label=io.quasar.installation
docker exec quasar-recovery quasar-recovery status
Terminal window
docker logs --tail 100 quasar-control-plane
docker logs --tail 100 quasar-node-agent
docker logs --tail 100 quasar-recovery

Add -f when you want to follow new messages.

Node agent errors only:

Terminal window
docker logs --tail 2000 quasar-node-agent 2>&1 \
| grep -iE '\b(error|fatal|panic)\b'

Seed and recovery actor lines carry a token=, listed in Install and startup problems.

Line Meaning
render_node <raw> -> <canonical> The agent resolved a render node symlink (expected on multi-GPU hosts).
EGL hardware-acceleration enabled The compositor has hardware acceleration.
codec resolved The session’s codec decision and why. Check here for an unexpected codec.
Line Meaning
no VA H264 encoder found The VA encoder didn’t register. Usually a stale GStreamer registry or a stray env var forcing software Mesa.
quasar-renderer-degraded Frame import fell back to software. Two within 30 s fail the session unless QUASAR_REQUIRE_HW_RENDER=0.
media path interrupted Catch-all. The cause is usually a few lines above, often the app exiting at once or lacking network.
Steam needs to be Steam couldn’t start, almost always no network. See The Steam library.
no migration found for version N Control plane rolled back below the database. See the hard rule.
no command specified An overlay cleared the command on an image with no entrypoint.

For a specific session, the admin session detail is better than logs. See Sessions and audit log and Diagnostics.

On a machine running Quasar from a repository checkout (not a registry install):

Terminal window
make diagnose # container states, health, recent errors
make diagnose-bundle # the same, redacted, to share

See Developing Quasar.

Running sessions keep a rolling hour of telemetry; ended sessions keep it for 24 hours by default. Take a diagnostic bundle before then if you need it longer.