Skip to content

Persona bootstrap (first run)

Short guide for first-run voice setup. Deep implementation: Persona system.

What happens

When AGENT_PERSONA_BOOTSTRAP is on (default), web/TUI show a modal/overlay asking how the assistant should sound.

  • Custom promptpersona_generator pipelines write persona/active/* and apply the profile.
  • Skip / default voice — installs the bundled Liminal persona from packages/tools/src/persona_default.ts (profile, soul slices, HUD ui_theme.json, ui_copy.json). Reference copy: persona/default/active/ in the repo. No LLM calls.

Flags

VariablePurpose
AGENT_PERSONA_BOOTSTRAP0 skips bootstrap
AGENT_PERSONA_BOOTSTRAP_ALLOW_SKIP0 disallows skip
AGENT_PERSONA_BOOTSTRAP_FORCE1 or --bootstrap re-shows UI even if already completed

Web startup race

The web server waits for bridge.whenSessionReady() before listen() and gates /api/config, /api/message, and /api/persona/bootstrap on session init. If bootstrap POST returns 500 on first load, restart after a clean build — see Troubleshooting.

After bootstrap

  • Voice + soul slices load from persona/active/.
  • Optional persona/active/ui_theme.json drives web/TUI chrome (GET /api/configpersonaUiTheme).
  • Adjust tone dials via set_runtime_settings(persona_controls) — not remember.

Identity questions later

“Who are you?” should use persona (first system message), harness (Liminal runtime), and base LLM (model slug) as separate layers — see Identity stack.

Liminal AI · Beta docs (v0.1.2) · Marketing: vireondynamics.com/liminal · Compare: vireondynamics.com/liminal/compare