Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.ixo.world/llms.txt

Use this file to discover all available pages before exploring further.

Source: packages/oracle-runtime/src/plugins/user-preferences/
AttributeValue
Visibilityalways
Stabilitystable
Categorycore
Default stateOn
Depends on

Summary

Per-room user behavioural preferences (tone, length, format, language, what to call the agent). state.userPreferences is hydrated by the agent builder before the agent is compiled, so the system prompt sees the value on turn 1. The agent calls set_user_preferences when the user asks to change behaviour, and the change persists across sessions.

Environment variables

This plugin has no required env vars.

What it contributes

  • Tools: set_user_preferences.
  • Sub-agents: none.
  • Middleware: none directly (preferences are hydrated by the runtime’s agent builder, not a plugin middleware).
  • Nest modules: UserPreferencesHttpModule — registers the GET /user-preferences controller for client-side reads.
  • HTTP routes: GET /user-preferences.
  • Shared state: none.

Opt out / Opt in

const app = await createOracleApp({
  config,
  features: { 'user-preferences': false }, // never load
  // features: { 'user-preferences': true }, // force load (default)
});

When to use it

  • User states how they want you to behave: “be more terse”, “respond in Spanish”, “call me Alex”, “stop using emojis”.
  • User asks to change the voice, formality, or language of your replies — save it so it persists across sessions, not just this turn.

When NOT to use it

  • Facts about who the user is (name, role, project) — those go to memory, not preferences.
  • Artifacts you have produced or how the user reacted to them — also memory, not preferences.
  • One-turn formatting requests (“just for this answer, use bullets”) — adapt locally without saving.

Add HTTP endpoints

Pattern this plugin uses for GET /user-preferences.

memory

Where to put facts (vs preferences).