multica-ai/multica · error

resolve hermes profile: %w

Error message

resolve hermes profile: %w

What it means

Error "resolve hermes profile: %w" thrown in multica-ai/multica.

Source

Thrown at server/internal/daemon/daemon.go:6329

	// the agent's custom_env HERMES_HOME feed execenv.ResolveHermesProfile, which
	// reproduces Hermes' own profile semantics (root derivation, explicit vs.
	// sticky selection, reserved/invalid failure). A reserved/invalid selection
	// fails the task closed, matching Hermes' sys.exit(1). The selected source
	// home is exported to hermesEnv["HERMES_HOME"] so ${HERMES_HOME} in a
	// profile's skills.external_dirs expands against the selected profile home,
	// as native Hermes does before loading config.yaml. The parsed occurrence is
	// stripped from the acp argv at launch (only when the overlay is built) so
	// the flag can't re-point HERMES_HOME past the overlay.
	var hermesSourceHome string
	var hermesSourceMustExist bool
	var hermesEnv map[string]string
	var hermesMemoryStore string
	var hermesSessionStore string
	if provider == "hermes" {
		sel := agent.ParseHermesProfileArgs(agentCustomArgs)
		res := execenv.ResolveHermesProfile(agentEnvOverrides["HERMES_HOME"], sel.Name, sel.Found, sel.Inline)
		if res.Err != nil {
			return TaskResult{}, fmt.Errorf("resolve hermes profile: %w", res.Err)
		}
		hermesSourceHome = res.SourceHome
		hermesSourceMustExist = res.MustExist
		// Which home the overlay is seeded from decides whether the task sees
		// the user's provider config at all, and it is derived from the daemon
		// PROCESS environment — invisible from the shell the user tests
		// `hermes acp` in, which is why a mismatch reads as "works by hand,
		// fails under Multica" (GH #6872). One line, at Info, so the answer is
		// in the daemon log before anything fails rather than reconstructed
		// afterwards.
		taskLog.Info("hermes home resolved",
			"source_home", hermesSourceHome,
			"from_custom_env", strings.TrimSpace(agentEnvOverrides["HERMES_HOME"]) != "",
			"must_exist", hermesSourceMustExist,
		)
		hermesEnv = sanitizeAgentEnv(agentEnvOverrides)
		if hermesEnv == nil {
			hermesEnv = map[string]string{}

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Fix the hermes profile configuration and retry.

When it happens

Trigger: Thrown at server/internal/daemon/daemon.go:6329 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15). Data as JSON: /api/errors/f24a7979f594393c. Report an issue: GitHub.