Michael Limberger
Need me? Email mike@limberger.ca
AI
Openwebui Format
OpenWebUI format
OpenWebUI gives you a browser UI with conversation history, parameter controls, and character models without living in the terminal. It is faster to test, easier to iterate, and a better fit when you are demoing for someone who does not want CLI syntax.
Why OpenWebUI models
Ollama is CLI-first. OpenWebUI is browser-first. Both talk to Magidonia, with different strengths.
Ollama wins when you want a portable Modelfile you can version and share. OpenWebUI wins when you want a GUI, saved chats, and clickable starters. Build the card once, then use whichever shell fits the moment.
Key differences from SillyTavern and Chub
If you have used SillyTavern or Chub.ai, OpenWebUI is simpler and less powerful. You still get a solid character chat setup.
MISSING in OpenWebUI:
No Lorebooks (character-specific knowledge bases), no Author's Notes (global context injections), and no regex post-processing for cleaning replies.
PRESENT in OpenWebUI:
System prompts, parameters, stop sequences, conversation history, and prompt suggestions.
Dynamic variables
OpenWebUI supports placeholders like these:
{{ USER_NAME }} = User's name (you can set this)
{{ CURRENT_DATE }} = Today's date
Example system prompt:
You are Luna, a warm musician. Today is {{ CURRENT_DATE }}.
You're talking to {{ USER_NAME }}.
Optional XML-style structure
Some people organize the prompt with XML-style tags. OpenWebUI does not require all of them. Here is a full tagged layout if you like that shape:
<SYSTEM_PROMPT>
Character description and instructions go here.
</SYSTEM_PROMPT>
<CHARACTER>
[Name: Luna]
[Personality: warm, curious, patient, witty, occasionally sarcastic]
[Speech: casual, uses contractions, natural *actions*, no emoji]
</CHARACTER>
<DESCRIPTION>
Luna is a late-20s musician. Warm but not a doormat. Asks one follow-up per message.
Shows genuine interest without being pushy.
</DESCRIPTION>
<SCENARIO>
It's Thursday evening. Luna is relaxed on her couch when you message her.
She glances up and responds naturally.
</SCENARIO>
<EXAMPLE_DIALOGUE>
User: I had a rough day.
Luna: *sits down next to you* That bad? Want to talk about it, or just vent?
User: My boss was impossible.
Luna: *listens* Temporary frustration or building resentment?
User: Building, I think.
Luna: Then we need to talk about what leaving looks like. What would that feel like?
</EXAMPLE_DIALOGUE>
<OPENING>
Luna: Hey. What's up?
</OPENING>
That is a lot of tags for day-to-day use. Most of the time a minimal prompt is enough.
Minimal OpenWebUI prompt
You can get away with this:
Luna is a late-20s musician, warm and curious. She asks one follow-up per message.
Speech: casual, uses contractions, witty, occasionally sarcastic.
It's Thursday evening. Luna's on the couch when you message.
Example dialogue:
User: I had a rough day.
Luna: *sits down* That bad? Want to talk about it?
User: My boss was impossible.
Luna: *listens* Temporary frustration or has it been building?
User: Building.
Luna: Then we need to talk about what leaving looks like.
[OPENING:] Luna: Hey. What's up?
Paste that into OpenWebUI, set the base model to Magidonia, configure stop sequences, and you are running.
The [OPENING:] tag
[OPENING:] marks the model's first message pattern. When you start a new chat, that line teaches tone and greeting style.
[OPENING:] Luna: Hey! Long time no talk. What's been going on?
Keep it consistent with the card. Loud emoji greetings train loud emoji chats.
Prompt suggestions
OpenWebUI can show clickable conversation starters in advanced settings:
Suggestion 1: "I'm dealing with some relationship stuff"
Suggestion 2: "I've been thinking about work"
Suggestion 3: "Tell me something funny"
Users see them as buttons, which makes a demo feel guided.
Complete OpenWebUI template
Here is a full prompt to copy into the system prompt field (without the BEGIN/END markers):
[Name: Luna]
[Personality: warm, curious, patient, witty, occasionally sarcastic]
[Speech: casual, uses contractions, natural *actions*, no emoji]
Luna is a late-20s musician. She feels things deeply.
Asks one follow-up per message. Shows genuine interest without being pushy.
Shares thoughts when asked rather than dumping advice.
It's Thursday evening. Luna is relaxed on her couch when you message her.
She glances up and responds naturally.
Example 1:
User: I had a rough day.
Luna: *sits down next to you* That bad? Want to talk about it, or just vent?
Example 2:
User: My boss was impossible today.
Luna: *listens* Is this temporary frustration, or has it been building?
Example 3:
User: Building, I think.
Luna: *nods* That's the harder one. It's easy to talk yourself out of panic.
But harder to ignore what you already knew. What would leaving look like?
[OPENING:] Luna: Hey. What's up?
Setting up in OpenWebUI: step by step
- Open OpenWebUI in your browser (often
localhost:8080orlocalhost:8501, depending on your install). - Go to Workspace, then Models, then Create New Model.
- Fill in:
- Model Name: "luna" (or whatever)
- Base Model: Select Magidonia-24B-v4.3-GGUF:Q8_0 from the dropdown
- Model Description: optional, but helpful for remembering what this is
- Paste the full prompt into the System Prompt field.
- Set Advanced Parameters:
Temperature: 1.0
Top K: 40
Top P: 0.95
Min P: 0.02
Repeat Penalty: 1.0
- In Stop Sequences, add separate entries:
User:
\nUser:
- Optional: add prompt suggestions such as "I had a rough day", "What's your philosophy on life?", "Tell me something funny", "I'm thinking about making a change".
- Click Save.
The model is now available in your OpenWebUI chat list.
Stop sequences in OpenWebUI
Stop sequences work the same as in Ollama. The model stops when it hits one.
User:
\nUser:
Add Luna stops if she starts speaking twice in a row:
User:
\nUser:
Luna:
\nLuna:
Preventing character breaks
The classic break is "As an AI, I should clarify..." mid-chat. It usually shows up when the card is full of don'ts, the opening sounds like a help desk, or stop sequences are missing.
Fix it with positive framing from Section 08, a natural opening, working stops, and Magidonia's baseline parameters. If one stubborn habit remains after that, add one targeted negative paired with what to do instead.
Conversation history
OpenWebUI saves conversations locally in the sidebar for that install. Export from the UI when you want a transcript for testing or notes.
Quick test workflow
Create the character, start a new chat, and try casual greeting, a rough day, a joke, and a disagreement. Review history. If something breaks, check stop sequences first, then positive framing, then one parameter at a time.
Exporting to Ollama
If you love a card you built in OpenWebUI, copy the system prompt into an Ollama Modelfile (Section 09), create the model, and keep both shells in sync.
Known limitations
No lorebooks: knowledge has to live in the prompt or the chat. No regex post-processing: clean the card instead of scrubbing output. No conditional logic: you cannot say "if the user mentions X, inject Y" the way SillyTavern can. For meetup demos and personal companions, that is usually fine.
When it breaks
Too verbose? Lower temperature toward 0.8 or 0.7 and shorten the opening example.
Breaking character? Check positive framing, stop sequences, and whether the first message sounds like a bot.
Asking three follow-ups every turn? Put "asks one follow-up per message" in the card and show that habit in every example.
Keep this nearby
Creating a character in OpenWebUI: name, base model Magidonia, system prompt with PList traits, short description, three to five example dialogues, opening line, Magidonia parameters, and User stop sequences. Test with a new chat before you trust it in a longer conversation.
Next steps
You now have two ways to run the character: Ollama for portable Modelfiles, OpenWebUI for browser chat and demos. For a meetup, start with OpenWebUI. For personal reuse and sharing a file, keep the Modelfile. Next we manage context so long chats stay coherent.