Skip to content

Hermes managed agents should default to a bare runtime profile #370

Description

@mostlydev

Problem

Clawdapus-managed Hermes agents still inherit consumer/personal-assistant first-run behavior from the upstream Hermes image. On a fresh HERMES_HOME, a normal domain question can trigger an introduction, /help guidance, and an offer to build a user profile instead of simply following the agent contract.

Clawdapus already suppresses several individual Hermes UX surfaces—busy acknowledgements, tool progress, memory and lifecycle notifications, cron response wrapping, and selected onboarding prompts. That piecemeal approach does not establish a stable invariant: when Hermes adds another consumer default, it can leak into managed agents until every downstream image or Clawfile is patched.

This happened in a production multi-agent pod after runtime materialization rotated the Hermes home directories. The durable downstream workaround was to add this to every active Hermes image:

CONFIGURE hermes config set onboarding.profile_build off

That fixes the profile offer, but it is still not the desired product boundary. Hermes also injects a first-contact introduction/help prompt when profile building is off, and future upstream UX keys could create the same class of regression.

Desired invariant: bare managed behavior

A Clawdapus-managed Hermes agent should default to a single bare runtime profile:

  • no unsolicited first-contact introduction, /help mention, profile offer, or tutorial
  • no first-time tips or onboarding prompts
  • no busy acknowledgement or status chatter
  • no lifecycle notifications
  • no cron response wrapper
  • no native tool-progress narration
  • no generic Hermes/personal-assistant identity or unsolicited user-profile policy
  • no new upstream consumer UX leaking into managed agents merely because Hermes adds a config key

The agent's explicit contract, SOUL, persona, config, and invocation should be the authority for identity and behavior.

“Bare” should disable unsolicited policy and chatter, not remove capabilities. Memory, tools, commands, explicit user-requested workflows, and hard safety blocks remain available. Consumer/personal-assistant UX should remain possible through an explicit opt-in.

Suggested product shape

Please establish a versioned, testable managed-mode boundary rather than adding only onboarding.profile_build: off to the current list. Possible shapes include:

  • an upstream Hermes managed/bare profile selected by the Clawdapus driver; or
  • a Clawdapus-owned bare profile in hermes-base, with the driver generating the complete config/environment contract.

The precise mechanism is open, but Clawdapus should own the invariant and detect upstream drift.

Acceptance criteria

  • A fresh minimal CLAW_TYPE hermes agent with an empty HERMES_HOME answers its first normal message using only its configured contract—without an introduction, /help guidance, profile offer, or tutorial.
  • The same remains true after claw up or any runtime/home rotation.
  • No unsolicited gateway, lifecycle, cron-wrapper, tool-progress, busy-ack, or status chatter appears in bare mode.
  • An explicit opt-in restores the consumer/personal-assistant experience.
  • Contract/SOUL/persona content remains the source of identity and behavioral policy.
  • Driver tests assert the generated bare configuration and environment.
  • A hermes-base release canary starts with an empty home and exercises the first message and subsequent/busy-state behavior, failing when a Hermes upgrade introduces a new unsolicited UX surface.

Related work

This consolidates and completes the product boundary addressed piecemeal in:

In particular, #276 established that managed pods should default to non-interactive gateway UX. A bare profile makes that promise durable across fresh homes and future Hermes image upgrades.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions