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.