vxcontrol/pentagi · error

failed to get memorist handler: %w

Error message

failed to get memorist handler: %w

What it means

Wraps a failure from fp.GetMemoristHandler during assistant worker setup (backend/pkg/providers/assistant.go). The memorist (memory/summarization) 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:183

		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)
	}

	ctx, observation := obs.Observer.NewObservation(ctx)
	executorAgent := observation.Agent(
		langfuse.WithAgentName(fmt.Sprintf("assistant %d for flow %d: %s", ap.id, ap.fp.ID(), ap.fp.Title())),
		langfuse.WithAgentInput(chain),

View on GitHub (pinned to ea665308ba)

Solutions

  1. Ensure the pgvector extension is installed and migrations ran (`CREATE EXTENSION vector`; check backend startup logs).
  2. Configure a valid embedding provider key (EMBEDDING_* env or settings UI).
  3. Verify Postgres connectivity and the wrapped DB error in logs.
  4. Re-run `docker compose` with the official image that bundles pgvector.

Example fix

// before
memorist, err := ap.fp.GetMemoristHandler(ctx, nil, nil)
if err != nil {
    return fmt.Errorf("failed to get memorist handler: %w", err)
}
// after
memorist, err := ap.fp.GetMemoristHandler(ctx, &taskID, &subtaskID)
if err != nil {
    logger.WithError(err).Error("memorist init failed — check pgvector & embedding config")
    return fmt.Errorf("failed to get memorist handler: %w", err)
}
Defensive patterns

Strategy: validation

Validate before calling

var ext string
if err := db.QueryRow(`SELECT extname FROM pg_extension WHERE extname='vector'`).Scan(&ext); err != nil {
    return errors.New("pgvector extension not installed — memorist handler cannot start")
}

Try / catch

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

Prevention

When it happens

Trigger: Memorist handler factory fails: pgvector extension missing, embeddings table/schema absent (migrations not run), embedder not configured, or DB connection error.

Common situations: Postgres without the pgvector extension installed; fresh DB where migrations didn't run; no embedding provider key configured so the embedder is nil; DB outage.

Related errors


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