Personas: soul_document, human_profile, and avatar fields
Added soul_document, human_profile, and avatar as structured fields on the persona object. Apps no longer need to maintain local copies of personality data, user relationship context, or avatar URLs.
What changed:
POST /personasandPUT /personas/{id}accept all three new fields (optional)- All persona responses now include
soul_document(nullable JSON),human_profile(nullable text), andavatar(nullable text) GET /personas/activereturns all three fields so apps can reconstruct the full agent state without a local database
Field semantics:
-
soul_document— The agent’s structured personality document. JSON with keysvoiceAndStyle,antiPatterns,learnedAdaptations,boundaries,customInstructions. Each is an array of{ "text": string, "source": string }entries. This is persona-level state (same for all sessions) — apps write this when the user edits their AI’s personality. -
human_profile— Free-form text the AI writes about the specific user it talks to: goals, communication preferences, values, context. Since each user has exactly one non-preset persona, this is effectively user-scoped. Apps write this when the AI learns something meaningful about the user during conversation. -
avatar— URL of the persona’s avatar image. Shared across all apps using this persona so every app shows the same avatar without maintaining a local copy.
Why: TIE is the single source of truth for a user’s AI agent across all platform apps. Previously, personality data, user profiles, and avatar URLs lived in each app’s local database, causing drift between apps. Now any app that shares a persona sees the same state without a sync step.
Migration: No action required. Existing personas return null for all three fields until updated. Apps can migrate by pushing their local values to TIE on next sync.