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
- Verify Docker access from the backend container (mount /var/run/docker.sock or set DOCKER_HOST).
- Pre-pull the sandbox image and check registry connectivity.
- Fill the missing env config per .env.example and restart.
- 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
- Ensure the Docker socket is mounted and permissioned
- Pre-pull sandbox images to avoid registry outages
- Keep DOCKER_HOST consistent between compose services
- Complete tool env configuration before starting flows
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
- failed to get coder handler: %w
- failed to get pentester handler: %w
- failed to get ask advice handler: %w
- Internal
- failed to stop flow %d: %w
AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01).
Data as JSON: /api/errors/942d426e34e3a0bd.
Report an issue: GitHub.