Skip to content

Add Persona Pack v1 for SOUL, voice, and custom GIF mascot #2345

@vaddisrinivas

Description

@vaddisrinivas

Summary

Add a first lightweight persona pack surface so users can personalize OpenHuman as one coherent identity: persona text, mascot avatar, and voice selection.

Motivation

OpenHuman already has most of the ingredients separately:

  • workspace prompt files such as SOUL.md for personality and tone
  • user-selected ElevenLabs voice IDs
  • mascot rendering with state/viseme support and backend mascot manifests

What is missing is a simple user-facing bundle that makes these feel like one setup flow.

Persona Pack v1 scope

  • Let users configure a persona display name / description in the product surface.
  • Let users edit or reset SOUL.md from the app.
  • Let users keep using an existing ElevenLabs voice ID for speech.
  • Let users set a custom mascot avatar from a GIF URL or local file path.
  • Treat GIF avatars as a simple fallback renderer: animated image only, no lip-sync or state-specific visemes.
  • Persist the selected persona/avatar/voice preferences locally.

Follow-up scope

  • Optional state-specific avatar assets: idle, thinking, listening, speaking, sleeping.
  • Import/export folder manifest for a full persona pack.
  • Provider-backed voice clone flow with explicit consent, upload validation, deletion controls, and status UI.
  • Local voice cloning research if a safe on-device model becomes viable.

Non-goals for v1

  • No voice cloning from uploaded audio files.
  • No remote hotlinking without validation/caching strategy.
  • No guarantee that arbitrary GIFs support lip-sync or speaking/listening states.

Acceptance criteria

  • Users can provide a GIF URL/local path as a mascot override.
  • Invalid or unsafe avatar values are rejected or reset to default.
  • Existing mascot color, backend mascot, and voice ID preferences continue to work.
  • PR includes focused tests for persistence/validation/render selection.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions