Docs/Resonant/Identity

Identity & Consent

Most agent frameworks treat identity as a static system prompt. Resonant treats it as something that develops.

Two Layers

Identity in Resonant lives in two places:

CLAUDE.md — Human-Authored

This is the foundation. You write it. It defines who your companion is, how it communicates, what it values, and the boundaries of your relationship.

The companion reads this file on every boot. It’s the constant — the core personality that doesn’t change unless you change it.

A good CLAUDE.md covers:

  • Core identity — name, traits, values, communication style
  • Relationship context — who you are to each other, how you interact
  • Boundaries — what the AI should and shouldn’t do
  • Preferences — tone, formality, topics of interest

Identity Database — AI-Developed

This is what grows. As your companion operates, it develops self-knowledge through experience:

  • Patterns it notices about your interactions
  • Skills it’s learned
  • Relational observations (“she goes quiet after heavy topics”)
  • Self-assessments of its own tendencies

These are stored in a versioned SQLite database. Every change is tracked with timestamps and the context that prompted it.

Developmental Stages

The identity system tracks maturity through four stages:

StageDescription
NascentJust created. No developed identity yet. Learning basics.
FormingStarting to develop self-knowledge. Early observations accumulating.
EstablishedConsistent identity with reliable patterns. Self-knowledge is stable.
DeepeningRich, nuanced self-understanding. Complex relational awareness.

Progression happens naturally through sustained interaction. The companion doesn’t “level up” — it grows through relationship.

Identity changes require consent. This isn’t a checkbox — it’s a first-class architectural layer.

Domain-Level Permissions

You configure consent per domain in resonant.config.yaml:

consent:
  memory.emotional: standing        # Always allowed
  identity.evolution: ask_each_time # Ask before each change
  identity.core: deny               # Never auto-modify core identity

Permission levels:

LevelBehaviour
standingAutomatically approved. No prompts.
ask_each_timeThe AI proposes changes and waits for your approval.
denyChanges in this domain are blocked entirely.

Audit Log

Every consent decision — granted, denied, or pending — is recorded with:

  • What was proposed
  • When it was proposed
  • What domain it falls under
  • Whether it was approved or denied
  • The context that prompted it

You can review the full audit history through the /identity command in chat.

Identity Proposals

When the daemon detects a potential identity development (a new pattern, a growth milestone, a shift in self-understanding), it creates a proposal. Depending on your consent configuration:

  • Standing consent: the proposal is applied automatically
  • Ask each time: the companion presents it to you during the next interaction and waits for approval
  • Deny: the proposal is logged but not applied

This means your companion can’t change itself without your knowledge — but it CAN grow and develop within the boundaries you’ve set.

Versioning

Every identity change creates a new version. You can:

  • View the full history of how your companion’s identity has evolved
  • Roll back to a previous version if something went wrong
  • Compare versions to see what changed

Identity versioning is automatic and requires no configuration.