Releases: acnlabs/OpenPersona
v0.20.1 — Preset Evolution Bug Fix + SKILL.md Restructure
Bug Fixes
Critical: All presets had evolution disabled
All 6 presets (base, samantha, ai-girlfriend, life-assistant, health-butler, stoic-mentor) used a mixed evolution format — evolution.enabled: true (old flat) alongside a partial evolution.instance.boundaries object. Because normalizeEvolutionInput() short-circuits when evo.instance is defined, evolution.instance.enabled was never set, causing evolutionEnabled = false for every preset-generated persona.
Fix: All presets migrated to the canonical evolution.instance.enabled: true format with all instance-scoped fields correctly nested under instance.
CLI wizard no longer injects memory explicitly
The interactive create wizard previously hardcoded { name: 'memory' } into generated persona.json. Since memory is auto-injected by the generator, this was redundant and contradicted the documented guidance. Removed.
AGENTS.md: document normalizeEvolutionInput short-circuit
Added explicit warning: when evo.instance is already defined (even partially), the normalizer does nothing — callers must ensure evo.instance.enabled is set explicitly.
Improvements
- SKILL.md restructured for agent readability: 4+5+3 merged into intro,
Systemic Conceptsmoved adjacent toField Reference,Creating Custom Skillsnested under Skill layer,Trust & Safetymoved to end - SKILL.md redundancy removed: TTY warning consolidated into Playbook Step 4, duplicate commands removed
- Agent Playbook improvements: runner framework self-inferred from context,
constitutionAddendumexample inlined, preset table uses real preset slugs - README: test count updated to 558
v0.20.0 — P11 Baseline Enforcement & constitutionAddendum
What's New in v0.20.0
P11-Prep — Universal Materials Baseline Enforcement
The P11-grade baseline (schemas/baseline.json) is now actively enforced at generation time — every persona generated by OpenPersona is guaranteed to meet the capability floor:
- Memory faculty auto-injected:
applyBaselineDefaults()runs before validation and injects{"name": "memory"}when not declared. Existing memory config is never overwritten. A stderr notice is emitted so the user knows. body.runtime.frameworkreclassified as optional: Its value is runner-specific (openclaw,cursor,claude-code, etc.) — no universal default exists. Moved frombaseline.requiredtobaseline.optionalwith an explanatory note.- Evolution boundaries warning: When
evolution.instance.enabled: truebutevolution.instance.boundariesis not declared, the Generate Gate emits a baseline warning. Boundaries content is persona-specific and cannot be auto-injected. - All 6 presets aligned to P11 baseline:
memoryfaculty added to every preset;evolution.instance.boundariesdeclared; non-schemasoul.character.capabilitiesfield removed.
constitutionAddendum — Domain-Specific Ethical Constraints
- New
soul.identity.constitutionAddendumfield: add domain-specific ethical constraints on top of the universal constitution (inline text or"file:soul/constitution-addendum.md") - Required for professional personas (medical, legal, financial)
- Cannot loosen §3 Safety or §6 AI Identity — Generate Gate enforces this via
_scanConstitutionViolations() - Covered by Install Gate constitution hash chain
- Injected into
soul/injection.mdSelf-Awareness > Identity section
OpenPersona Directory Search
openpersona search <query>now queries the OpenPersona directory (openpersona-frontend.vercel.app/api/personas) instead of ClawHub- Service URLs centralized in
lib/utils.jswith environment variable overrides (OPENPERSONA_DIRECTORY,OPENPERSONA_TELEMETRY_URL,OPENPERSONA_SKILLS_REGISTRY,OPENPERSONA_GITHUB_REPO)
Documentation & Schema
schemas/persona.input.spec.md: new Baseline Defaults section documenting auto-injection behaviorskills/open-persona/SKILL.md+references/PRESETS.md: faculties columns updated for all presets; search endpoint updated; network endpoints table updatedskills/open-persona/references/ECONOMY.md: economy data path corrected to~/.openpersona/economy/
Tests
519 tests passing (up from 451 in v0.19.0).
Full changelog: v0.19.0...v0.20.0
v0.19.0 — 4+5+3 Architecture: Skill Pack Refinement, Memory-Soul Bridge & Meta-skill Overhaul
What's New in v0.19.0
P24 — Skill Pack Refinement
openpersona refine <slug>— AI-driven iterative refinement of the behavior guide (soul/behavior-guide.md) against the constitutional compliance gate- New
lib/lifecycle/refine.jspipeline:scanConstitutionKeywords,loadMeta/writeMeta,bumpRevision,bootstrapBehaviorGuide,emitRefinement,applyRefinement - Pack revision tracking via
meta.packRevision; fork inheritsparentPackRevisionwhen available
P1 — Memory as Soul Infrastructure
memory.jssupersession chain: new memory entries mark superseded ones;retrieve/search/statsexclude superseded entriespromoteToInstinct: groups recurringeventLogpatterns (interest_discovery / trait_emergence / mood_shift) intoevolvedTraits; gated byimmutableTraits; idempotent- Fork memory inheritance:
copypolicy clonesmemories.jsonlto child;nonepolicy leaves child clean openpersona state promote <slug> [--dry-run]— Soul-Memory Bridge CLI command
Architecture Documentation Overhaul
skills/open-persona/SKILL.mdrestructured around the 4+5+3 model (4 Layers · 5 Systemic Concepts · 3 Gates)## Systemic Conceptssection with dedicated subsections for Evolution, Economy, Vitality, Social, Rhythm## Creating a Personareorganized into 4 explicit layer subsections: Soul / Body / Faculty / Skill- New
## Trust & safetyreviewer summary for marketplace security audits - References split into
ARCHITECTURE.md,EVOLUTION.md,ECONOMY.md,FACULTIES.md,AVATAR.md,HEARTBEAT.md,PRESETS.md
CLI Additions
openpersona refine <slug>— skill pack behavior guide refinementopenpersona canvas <slug>— Living Canvas promoted to top-level command (wasvitality canvas)
Dependency Updates
agentbooksbumped to^0.1.4
Framework Version
All version references unified at 0.19.0 across package.json, SKILL.md, lib/registry, lib/report/vitality-report.js, and demo/generate.js.
Full changelog: v0.14.0...v0.19.0
v0.14.0 — Lifecycle Protocol & Persona Directory
What's New
🧠 Lifecycle Protocol (body.interface)
The persona's nervous system — bidirectional communication across conversations:
- Signal Protocol: persona→host requests via
openpersona state signal - Pending Commands queue: host→persona async instructions in
state.json - State Sync: cross-conversation persistence via
openpersona state read/write
📦 Official Persona Directory
- Browse personas at https://openpersona-frontend.vercel.app
- Anonymous install telemetry for leaderboard ranking (opt-out: DISABLE_TELEMETRY=1)
- Official registry: https://github.com/acnlabs/persona-skills
🔌 Native Registry Download
- Removed clawhub dependency — no unexpected package installs
openpersona install <slug>downloads directly from acnlabs/persona-skills
📋 Schema Expansions
- body.interface field in persona.json and embodiment.schema.json
- soul-state.schema.json: pendingCommands, stateHistory, eventLog, relationship
Bug Fixes
- Fixed openpersona update wiping soul/state.json
- Fixed telemetry URL
Breaking Changes
None — fully backward compatible with 0.13.0
v0.12.0 — ACN Register CLI & Code Quality
What's New
🚀 npx openpersona acn-register Command
New built-in CLI command to register a generated persona directly with ACN:
npx openpersona acn-register samantha --endpoint https://your-agent.example.com- Reads acn-config.json and agent-card.json from the persona directory
- Calls POST /api/v1/agents/join on the ACN gateway
- Writes response to acn-registration.json (agent_id, api_key, agent_card_url)
- Supports --dry-run to preview the request payload without registering
- New module: lib/registrar.js
🔧 Refactors
- lib/generator.js: frameworkVersion now read from package.json instead of being hardcoded — version bumps only require changing package.json
- lib/utils.js: Removed expandHome and SAFE_NAME_RE from module.exports (internal-only helpers)
📄 Docs
- skills/open-persona/SKILL.md: Added acn-register command reference
- README.md: Added acn-register section under A2A/ACN Integration
- AGENTS.md: Added lib/registrar.js to Project Structure
Breaking Changes
None — fully backward compatible.
v0.11.0 — A2A Agent Card, ACN Integration & Influence Boundary
What's New
🔌 A2A Agent Card Generation
Every generated persona now includes agent-card.json — a standard A2A Agent Card (protocol v0.3.0) with name, description, version, skills, and capabilities. Personas are immediately discoverable by any A2A-compatible platform.
🌐 ACN Integration
acn-config.jsongenerated automatically with persona name, skills, and subnet configurationbody.runtime.acn_gatewayfield added — all presets default tohttps://acn-production.up.railway.appmanifest.jsonnow includesacn.agentCardandacn.registerConfigreferences
🛡️ Influence Boundary
- New
evolution.influenceBoundaryinpersona.json— declarative access control for external personality influence defaultPolicy: "reject"— safety-first, all external influence rejected unless explicitly allowed- Valid dimensions:
mood,traits,speakingStyle,interests,formality - Transport-agnostic
persona_influencemessage format (v1.0.0) - New schema:
schemas/evolution/influence-request.schema.json
🌱 Evolution Channels
- New
evolution.channelsfield — connect personas to external evolution ecosystems (e.g. EvoMap) using the soft-ref pattern
🧠 Self-Awareness Enhancements
- Personas now aware of their A2A identity and can request ACN connection via the Signal Protocol
- Signal Protocol extended with
agent_communicationcategory
Breaking Changes
None — fully backward compatible.
v0.10.0 — Soul Evolution Ecosystem
What's New in 0.10.0
Cross-Session Memory (Phase C)
- New memory faculty (
layers/faculties/memory/) with provider-pluggable backend - Providers:
local(default, zero-dependency),Mem0,Zep - Commands:
store,retrieve,search,forget,stats - Memory × Evolution bridge: repeated topics trigger interest discovery events
Context Handoff (Phase B)
- Seamless context transfer when switching personas via
openpersona switch - Auto-generates
handoff.jsonwith conversation summary, pending tasks, and emotional context - Incoming persona reads handoff on activation for continuity
Evolution Governance (Phase D)
- Boundary validation at generation time:
immutableTraits— array of strings (max 100 chars each) that evolution cannot modifyminFormality/maxFormality— numeric bounds (1–10) for speaking style drift
- State history — snapshots pushed to
stateHistory(capped at 10) before each update, enabling rollback evolve-reportCLI —npx openpersona evolve-report <slug>displays a formatted evolution report
Documentation & Release (Phase G)
- Version bumped to
0.10.0across all 11 sync points - README expanded with Memory, Handoff, Governance, Soul Evolution section, updated CLI commands and directory structure
- 122 tests passing (up from 60)
Full Changelog
feat: Phase A-fix Body definition + Phase B Context Handoff Protocolfeat: add Memory faculty (Phase C) — cross-session memory with provider-pluggable backendfeat: add Evolution Governance (Phase D) — compliance checks, evolve-report CLI, stateHistorychore: bump to 0.10.0 — Phase G documentation and release