vxcontrol/pentagi · error

failed to get installer handler: %w

Error message

failed to get installer handler: %w

What it means

Wraps a failure from fp.GetInstallerHandler during assistant worker setup (backend/pkg/providers/assistant.go). The installer agent's LLM handler could not be constructed, typically due to an unavailable or misconfigured LLM provider. The assistant worker cannot start without it.

Source

Thrown at backend/pkg/providers/assistant.go:177

		return fmt.Errorf("failed to unmarshal primary agent msg chain %d: %w", ap.msgChainID, err)
	}

	adviser, err := ap.fp.GetAskAdviceHandler(ctx, nil, nil)
	if err != nil {
		logger.WithError(err).Error("failed to get ask advice handler")
		return fmt.Errorf("failed to get ask advice handler: %w", err)
	}

	coder, err := ap.fp.GetCoderHandler(ctx, nil, nil)
	if err != nil {
		logger.WithError(err).Error("failed to get coder handler")
		return fmt.Errorf("failed to get coder handler: %w", err)
	}

	installer, err := ap.fp.GetInstallerHandler(ctx, nil, nil)
	if err != nil {
		logger.WithError(err).Error("failed to get installer handler")
		return fmt.Errorf("failed to get installer handler: %w", err)
	}

	memorist, err := ap.fp.GetMemoristHandler(ctx, nil, nil)
	if err != nil {
		logger.WithError(err).Error("failed to get memorist handler")
		return fmt.Errorf("failed to get memorist handler: %w", err)
	}

	pentester, err := ap.fp.GetPentesterHandler(ctx, nil, nil)
	if err != nil {
		logger.WithError(err).Error("failed to get pentester handler")
		return fmt.Errorf("failed to get pentester handler: %w", err)
	}

	searcher, err := ap.fp.GetSubtaskSearcherHandler(ctx, nil, nil)
	if err != nil {
		logger.WithError(err).Error("failed to get searcher handler")
		return fmt.Errorf("failed to get searcher handler: %w", err)

View on GitHub (pinned to ea665308ba)

Solutions

  1. Verify Docker access from the backend container (mount /var/run/docker.sock or set DOCKER_HOST).
  2. Pre-pull the sandbox image and check registry connectivity.
  3. Fill the missing env config per .env.example and restart.
  4. Read the wrapped error in logs to pinpoint the failing dependency.

Example fix

// before
installer, err := ap.fp.GetInstallerHandler(ctx, nil, nil)
if err != nil {
    return fmt.Errorf("failed to get installer handler: %w", err)
}
// after
installer, err := ap.fp.GetInstallerHandler(ctx, &taskID, &subtaskID)
if err != nil {
    return fmt.Errorf("failed to get installer handler: %w", err) // typically docker socket or sandbox image issue
}
Defensive patterns

Strategy: validation

Validate before calling

cli, err := client.NewClientWithOpts(client.FromEnv)
if err != nil { return fmt.Errorf("docker unavailable for installer handler: %w", err) }
if _, err := cli.ImageInspect(ctx, sandboxImage); err != nil { return fmt.Errorf("sandbox image missing: %w", err) }

Try / catch

installer, err := ap.fp.GetInstallerHandler(ctx, nil, nil)
if err != nil {
    logger.WithError(err).Error("installer handler init failed")
    return fmt.Errorf("failed to get installer handler: %w", err)
}

Prevention

When it happens

Trigger: Installer handler factory fails: Docker client error (it installs packages in the sandbox), missing tool configuration, or dependent DB/template lookups error.

Common situations: Docker unavailable in the deployment (rootless setups, socket not mounted); incomplete .env after manual install; sandbox image pull failure during handler warm-up.

Related errors


AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01). Data as JSON: /api/errors/942d426e34e3a0bd. Report an issue: GitHub.