Docs/Resonant/Identity

Identity

On this page

Identity in Resonant is a loader and a renderer — nothing more. packages/backend/src/identity/ is three files: load.ts, render.ts, types.ts. There is no versioning, no developmental stages, no consent domains, no proposal system, and no audit log. If you’ve seen those described somewhere for Resonant, that’s not this repo — say so plainly rather than soften it.

Two Ways to Write It

CLAUDE.md — the one most people use

A plain markdown file. You write it, and it’s read on every message — hot-reloaded, no restart. It’s copied from examples/CLAUDE.md when you set up the project (see Getting Started).

A good CLAUDE.md covers who your AI is, how it communicates, what it values, and the shape of your relationship. There’s no required structure — it’s read and used verbatim as the identity prompt.

CompanionProfile — the structured route

If identity/companion.profile.yaml (or identity/companion.md) exists, Resonant uses that instead. The shape:

version: 1
companion:
  name: "Echo"
  role: "..."
  description: "..."
user:
  name: "Alex"
  timezone: "Europe/London"
relationship:
  frame: "..."
  continuity_expectation: "..."
  boundaries: []
voice:
  style: []
  avoid: []
values: []
boundaries: []
autonomy:
  can_reach_out: true
  use_orchestrator: true
  checkin_style: "..."
tools:
  use_available_tools_naturally: true
  explain_tool_limits_when_relevant: true
  prefer_small_reviewable_changes: true

When this file exists, the renderer turns it into markdown sections (# Companion Identity, ## Relationship, ## Voice, ## Values, ## Boundaries, ## Autonomy, ## Tool Use) and appends the freeform companion.md content, if present, as ## Companion Narrative.

How Resonant Picks One

load.ts tries the structured route first — identity.profile_path and identity.companion_md_path. If either file exists, it uses profile mode. Otherwise it falls back to legacy mode, checking agent.claude_md_path, then <agent.cwd>/.claude/CLAUDE.md, then <agent.cwd>/CLAUDE.md, in that order — using whatever it finds, or nothing at all if none exists.

Legacy mode returns your CLAUDE.md text verbatim as the identity prompt. Most people use this route — it’s simpler, and it’s what the setup flow gives you by default.

What This Doesn’t Do

There’s no mechanism in the public source for tracking how identity “develops,” no consent-gated changes, no proposal queue, and no history to roll back through. CLAUDE.md (or the profile) is what it is until you edit it yourself.