UnrealHQ

Complete Setup & Feature Guide

Welcome to UnrealHQ

UnrealHQ lets you create AI character bots that live in Discord. Each character is its own Discord bot — with its own name, avatar, personality, memories, and codex entries. Your characters are live on Discord where your friends can talk to them too, or you can chat with them right here on the web.

Whether you want a roleplay companion, a group chat personality, a writing partner, or just a character you've designed to hang out in your server — this is the place to build it.

No coding required. Everything is done through a web dashboard. You don't need to write a single line of code, install Node.js, or touch a terminal. If you can fill out a form, you can create a bot.

What is BYOA?

BYOA stands for Bring Your Own API. Instead of paying us a subscription, you get an API key from an AI provider (like ElectronHub, OpenAI, or Anthropic) and plug it in. The bot uses your key to generate responses.

Why this model?

  • You pick your model. Want Claude for creative writing? GPT-4o for fast responses? A cheap model for casual chat? Your call.
  • You control your costs. Pay only for what you use, directly to the AI provider. No middleman markup.
  • No message limits from us. We don't throttle you. Your only limit is your API budget.
  • Privacy. We never see your API responses. The bot talks directly to your provider.
New to API keys? We recommend starting with ElectronHub — they offer many models at affordable rates, and setup takes about 2 minutes. Create an account, generate an API key, and you're set.

Quick Start (5 Minutes)

Here's the fastest path from zero to a working character bot in your Discord server:

Step 1: Create Your Account

Go to the Dashboard and sign up with email or connect your Discord account. Either works — you can link Discord later if you start with email.

Step 2: Get an API Key

Sign up at ElectronHub (or any provider you prefer), create an API key, and save it in your Dashboard settings.

Step 3: Create a Character

Go to the Character Creator. At minimum, fill in a name, description, and first message. You can always add more depth later.

Step 4: Create a Discord Bot

Head to the Discord Developer Portal, create a new application, grab the bot token, and enable the Message Content intent. (Full walkthrough in the Create a Discord Bot section below.)

Step 5: Register, Link, Launch

Paste your bot token in the Bot Manager. Link your character to the bot using the dropdown. Hit Start. Your bot is live.

Step 6: Invite & Chat

Click the Invite link in the Bot Manager to add your bot to a Discord server. @mention it in any channel and start chatting!

That's it! Everything else in this guide is about making your characters deeper and more powerful. But if you just want to get going, those 6 steps are all you need.

API Providers

UnrealHQ supports multiple AI providers. You can set your key from the Dashboard settings page, or with Discord commands:

ProviderCommandNotes
ElectronHub/setkey electronhub sk-...Default provider. Many models, great pricing.
OpenAI/setkey openai sk-...GPT-4o, GPT-4, o1, etc.
Anthropic/setkey anthropic sk-ant-...Claude models. Great for creative writing.
OpenRouter/setkey openrouter sk-or-...Access 100+ models from one key.
Custom/setkey custom your-keyAny OpenAI-compatible endpoint.
Picking a model: After setting a key, use /setmodel model-name to choose your model. Examples: /setmodel claude-3-5-sonnet-20241022 or /setmodel gpt-4o. Different models have different strengths — Claude is usually preferred for RP/creative writing, GPT-4o for speed and general conversation.

Which provider should I use?

If you're just starting out, ElectronHub is the easiest choice — it gives you access to models from multiple providers through a single key, and pricing is very competitive. If you already have an OpenAI or Anthropic key, those work too.

Create a Discord Bot

Each character lives as its own Discord bot application. Here's the step-by-step:

Step 1: Create a Discord Application

  1. Go to the Discord Developer Portal
  2. Click "New Application" in the top right
  3. Name it your character's name (this shows up in the bot's Discord profile)
  4. Upload an avatar for your character under "General Information"

Step 2: Create the Bot User

  1. Go to the "Bot" tab in the left sidebar
  2. Click "Reset Token" and copy the token
  3. Under "Privileged Gateway Intents", enable:
    • Message Content Intent (required — the bot must read messages)
    • Server Members Intent (recommended for name resolution)
Save your token! Discord only shows the token once. If you lose it, you'll need to reset it (which invalidates the old one). Paste it somewhere safe before closing the page.

Step 3: Generate an Invite Link

  1. Go to the "OAuth2" tab
  2. Under "OAuth2 URL Generator", check "bot" in scopes
  3. Under "Bot Permissions", check "Administrator" (or at minimum: Send Messages, Read Messages, Manage Messages)
  4. Copy the generated URL — that's your invite link
Why Administrator? It's the simplest option. But if you prefer minimal permissions, the bot needs: Send Messages, Read Message History, Read Messages/View Channels, Manage Messages (for auto-deleting key commands), and Embed Links.

Register on UnrealHQ

Once you have a Discord bot token, head to the Bot Manager and paste it in the registration field. UnrealHQ will:

  • Validate the token with Discord
  • Pull your bot's name and avatar automatically
  • Set up all backend configuration
  • Generate an invite link for you

Link a Character & Launch

In the Bot Manager, use the character dropdown to assign one of your characters to the bot. Then hit Start. Your bot comes online in Discord immediately, speaking as that character with its full personality, codex entries, and commands.

You can swap characters anytime — just stop the bot, change the linked character, and start it again.

Key vs Token: Two different things! The bot token is from Discord (identifies which Discord bot to log in as). The API key is from your AI provider (powers the AI responses). Users set their own API keys with /setkey — you as the creator only handle the bot token.

Limit: Each creator can register up to 3 bots.

Building Characters

Starfall Haven lets you build AI characters with serious depth. Every field maps to the TavernCardV2 spec, so you can import and export characters freely.

Character Fields Explained

Name — Your character's display name. Max 20 characters. This is how they'll appear in Discord.

Description — Who the character is. Background, appearance, history, relationships. This is the core identity block and the most important field. Be detailed here.

Personality — How they behave. Speech patterns, quirks, emotional tendencies, mannerisms. Bullet traits work well: "sarcastic, fiercely loyal, uses 90s slang."

Scenario — The current situation. Where are we? What's happening? This sets the stage. Example: "{{char}} and {{user}} are roommates in a cramped Tokyo apartment. It's raining outside."

First Message — The opening message when someone first talks to the bot. This sets the tone and should establish the scene. Write it in the character's voice.

Example Dialogue — Sample exchanges showing how the character should talk. The AI uses these as style references. Format them like this:

{{user}}: Hey, what's up?
{{char}}: *leans against the doorframe* Oh, you know. Just contemplating the void. The usual Tuesday stuff.

System Prompt — Advanced override. If set, this replaces the auto-assembled system prompt entirely. For power users who want total control over what the AI sees. Most people should leave this blank and let UnrealHQ build the prompt from the other fields.

How prompting works: The AI doesn't receive everything at once as a wall of text. UnrealHQ assembles the prompt from separate fields, and codex entries only inject when their triggers fire. This keeps token usage efficient even for deeply detailed characters.
Use {{char}} and {{user}}. These are placeholder tokens that get replaced at runtime. {{char}} becomes the character's name, {{user}} becomes the person talking. Use them in your description, scenario, and example dialogue so the character works regardless of actual names.

Codex Entries

The codex is where character depth really comes alive. It's a collection of entries that get injected into the AI's context based on different rules. Think of it as your character's encyclopedia — but the AI only reads the relevant pages.

Constants (Always Active)

These entries are always injected into every message's context, no matter what. Use them for core world facts, fundamental character traits, and rules that should never be forgotten.

Example: "{{char}} is a vampire who cannot enter sunlight. This is non-negotiable and affects all interactions."

Contextual (Smart Matching)

These entries are flagged for future semantic matching — the AI will eventually pull them in based on conversation meaning, not just exact keywords. For now they work like keyword entries but are marked for the upcoming smart matching upgrade.

Keyword Triggered

These entries only inject when specific keywords from their trigger list appear in the conversation. This is classic codex behavior — precise and token-efficient.

Example: An entry about the character's secret base with triggers: "base, hideout, lair, headquarters" — only activates when someone mentions those words.

Codex Settings

Primary Keys — Comma-separated trigger words. At least one must match for the entry to fire.

Secondary Keys — If set, at least one secondary key must ALSO match (in addition to a primary). Great for precise two-condition triggers. Example: primary "sword" + secondary "broken" only fires when both concepts appear.

Priority — Higher priority entries are injected first when there's a token budget concern. Put your most important lore at higher priority.

Position — "Before Character" means the AI sees this info before the character definition. "After Character" places it later in context. Generally, world-building goes before and character-specific details go after.

Case Sensitive — Whether triggers match exact case or ignore it. Usually leave this off unless you need to distinguish between "Rose" (a character) and "rose" (a flower).

Importing Codex Entries

You can import codex entries in two ways:

  • Embedded in a character card — When you import a TavernCardV2 JSON, the codex entries come with it automatically.
  • Standalone codex file — Click "Import Codex (.json)" in Starfall Haven. This handles standard World Info export formats, including older formats with different field names.

Alternate Greetings

Characters can have multiple first messages (greetings). Each greeting sets up a different scenario or starting point. When a user first talks to the bot, it uses the default greeting — but creators can define alternatives for variety.

Add alternate greetings in the Character Creator under the "Alternate Greetings" section. Each one is a complete opening message, just like your main first message.

Use case: Your character is a detective. Greeting 1 starts at a crime scene. Greeting 2 starts in their office. Greeting 3 starts at a bar after hours. Same character, different entry points into the story.

Custom Commands

Creators can define custom commands unique to their character. These are special triggers that make the bot respond in a specific way.

Add them in the Character Creator under "Custom Commands." Each command has a trigger word and a system instruction that tells the AI how to respond when that command is used.

Example: A character named "Chef Marco" could have a !recipe command that tells the AI: "Generate a creative recipe in {{char}}'s dramatic Italian style, with commentary about the user's cooking skills."

Custom commands override built-in commands if they share the same trigger name. This lets you personalize the experience per character.

Memory System

UnrealHQ has a multi-layered memory system that goes far beyond "remember last 30 messages." Your characters actually remember what happened.

Three Layers of Memory

1. Recent Messages — The last N messages (default 30, configurable with /setcontext). These are sent to the AI as-is, with full detail.

2. Summaries — When older messages pile up, the AI compresses them into narrative summaries. These get injected as "memory blocks" so the character remembers the gist without needing every message. Think of it as the character's long-term memory.

3. Personal Notes — You can pin your own notes to a channel via the Memory Manager. Pinned notes are injected as established facts — perfect for things like "we agreed the character's birthday is March 5th" or "my OC's name is Luna."

Auto-Summarize

After a configurable number of unsummarized messages (default 50), the bot automatically generates a summary and archives older messages. This happens silently in the background — the conversation just keeps flowing.

Manual Controls

!summarize 40 10 — Summarize the last 40 messages, keep the 10 most recent visible.
!memory — Check your memory stats (total messages, summaries, context window size).

Memory Manager (Web)

The Memory Manager page gives you full control:

  • View and edit individual messages in any channel
  • Edit AI-generated summaries to fix inaccuracies
  • Add, edit, or pin personal memory notes
  • Delete messages or entire conversations
  • Look up any channel by Discord Channel ID
  • Import and export conversation history
Per-channel isolation: Memories are completely separate per channel. You can have a romance storyline in #private-rp and a business relationship in #work — the bot treats them as entirely different timelines. Thread conversations are isolated too.

Group Chat & Multi-User Awareness

UnrealHQ bots are built for group dynamics. They don't just talk to one person — they're aware of everyone in the room.

How It Works

The bot saves every message in a channel to its history, even messages not directed at it. This means:

  • Cross-user context: If User1 tells the bot "I love pizza" and User2 later asks "what does User1 like?", the bot knows.
  • Natural group dynamics: The bot can address multiple people by name, react to conversations between users, and make everyone feel included.
  • Individual recognition: Each person's preferences, relationship history, and personality are tracked separately.

Each User Gets Private Memory Notes

Even in a shared channel, each user's pinned memory notes are private. Your notes about the RP are injected only into YOUR interactions with the bot.

Multi-bot rooms: You can have multiple UnrealHQ bots in the same channel. With bot visibility settings, they can even see and react to each other's messages for group roleplay scenes.

Auto-Respond Mode

By default, bots only respond when @mentioned or replied to. Auto-respond mode lets the bot participate naturally, responding to any message in the channel as if they're part of the conversation.

CommandWhat It Does
!auto onEnable auto-respond in this channel
!auto offDisable auto-respond
!auto cooldown 30Wait at least 30 seconds between auto-responses
!auto chance 50Only respond to ~50% of messages (more natural)
!autoShow current auto-respond settings
Who pays for auto-respond? The bot uses the message sender's API key. If they don't have one set, the bot silently skips that message. Everyone who wants to interact needs their own API key set via /setkey.

User Personas

Personas let you define how YOU present yourself to the bot. It's your RP identity — a name and description injected into the bot's context so it knows who it's talking to.

Creating a Persona

Go to the Dashboard and open Settings. Under User Personas, create a persona with a name (max 30 characters) and a description of your character. You can create multiple personas for different scenarios.

Activating a Persona

In the Memory Manager, select which persona to use in each channel. The bot will see your persona description alongside the conversation, so it knows to treat you as that character.

How It Works

  • Personas are private — other users can't see yours
  • You can use different personas in different channels
  • The persona is injected alongside the character's constant codex entries
  • Deactivate by selecting "No persona" in the channel settings
Example: You have three personas: "Detective Luna" for a mystery RP, "Commander Reyes" for a sci-fi channel, and your real name for casual chat. Switch between them per channel.

Publishing & Bot Profiles

Once your bot is working, you can publish it so other people can discover and invite it to their servers.

Publishing Your Bot

In the Bot Manager, each bot card has a publish section. Write a short public description, then click Publish. Your bot will appear on the Browse page for anyone to find.

Bot Profile Pages

Published bots get their own profile page with:

  • Character name, avatar, and description
  • Tags for discoverability
  • Creator info
  • Online/offline status
  • Direct invite link
  • Customizable CSS theme (6 themes to choose from)

Configure profile settings in the Bot Manager — choose a theme, write a longer description, and add tags.

Keep it private if you want. Publishing is totally optional. If your bot is just for you or your friend group, leave it unpublished. It'll still work perfectly — it just won't show up on Browse.

Blacklist System

Creators can block specific Discord users from interacting with their bots. If someone is being disrespectful or abusing your character, you can blacklist their Discord User ID.

How to Blacklist

In the Bot Manager, expand the "Blocked Users" section on any bot card. Enter a Discord User ID (the 17-20 digit number, not their username) and click Block. The bot will silently ignore all messages from that user.

Getting a Discord User ID

In Discord, enable Developer Mode (User Settings → Advanced → Developer Mode). Then right-click any user and select "Copy User ID."

Settings Reference

The Control Room settings panel lets you configure everything in one place.

AI Configuration

SettingDefaultWhat It Does
ProviderElectronHub, OpenAI, Anthropic, OpenRouter, or Custom
API KeyYour provider API key (stored securely, masked in UI)
ModelThe AI model name (e.g., gpt-4o, claude-3-5-sonnet)
Temperature0.8Creativity. Lower = focused/predictable. Higher = creative/varied. Set to whatever you want.
Max Tokens500Maximum response length in tokens (~4 chars per token). No hard cap — set as high as your provider allows.
Context Window25How many recent messages the bot sees. Increase for longer memory, decrease to save tokens.
Custom Base URLFor self-hosted or custom OpenAI-compatible endpoints

All settings can also be changed via Discord commands (/setkey, /setmodel, /settemp, /setcontext).

Account

  • Username and linked Discord ID are displayed
  • Discord OAuth supported — link your Discord for one-click login
  • Sessions last 31 days before re-login
  • After 5 failed login attempts, account locks for 30 minutes

All Commands

Setup Commands

CommandDescription
/setkey [provider] <key>Set your API key
/setmodel <model>Change AI model
/settemp <0.1-2.0>Set creativity/temperature
/setcontext <5-100>Set context window size
/settingsView all your current settings
/reloadRefresh character data from database

Memory Commands

CommandDescription
!memoryView memory stats for this channel
!summarize [count] [keep]Manually summarize messages

Auto-Respond Commands

CommandDescription
!auto on/offToggle auto-respond mode
!auto cooldown <seconds>Minimum wait between auto-responses
!auto chance <1-100>Response probability percentage

Roleplay & Fun Commands

CommandDescription
!commandsList all available commands
!relationshipCharacter analyzes your relationship
!thoughtsCharacter's internal monologue about you
!analyzePersonality analysis from the character's POV
!augenGenerate an alternate universe scenario
!comfortWords of encouragement from the character
!futureCharacter imagines your shared future
!lovemapThings the character loves about you
!petnamesGenerate pet names for you
!youin3wordsCharacter describes you in 3 words
!describeDetailed description of an item or outfit
!msgSimulate receiving a text message
!twtCharacter writes a tweet
!igCharacter writes an Instagram caption

Slash Commands (Discord UI)

CommandDescription
/delete <count>Delete the bot's last N messages from history (requires Manage Messages permission)
/hide <count>Hide (exclude) messages from context without deleting (requires Manage Messages permission)

Export & Import

Export Conversations

Back up your chat history from the Memory Manager. Each channel can be exported individually in two formats:

  • JSONL — Standard chat format. Each line is a message object. Compatible with other platforms.
  • JSON — Full structured export with metadata. Useful for archiving or analysis.

Import Chat History

Bring your existing conversations to UnrealHQ! The Vault accepts JSONL and JSON (array or wrapped format). The importer auto-detects the format.

Import/Export Characters

Starfall Haven supports full TavernCardV2 import and export. Import a character card and all fields come across — description, personality, scenario, example dialogue, codex entries, and alternate greetings.

Import Standalone Codex Entries

Got an existing codex file? Click "Import Codex (.json)" in Starfall Haven. It handles all common World Info formats, including older ones with different field names. Choose to merge with existing entries or replace them entirely.

FAQ & Troubleshooting

The bot isn't responding to my messages

  • Make sure you're @mentioning the bot or replying to one of its messages (unless auto-respond is on)
  • Check that you've set an API key with /setkey
  • Verify the bot is actually running (check the Bot Manager — it should show a green "Running" badge)
  • Make sure the bot has permission to read and send messages in that channel

I'm getting API errors

  • Double-check your API key is correct and hasn't expired
  • Make sure you've selected a valid model for your provider (/setmodel)
  • Check that you have credits/balance with your API provider
  • If using a custom endpoint, verify the base URL is correct

The bot's responses feel too short/generic

  • Increase max tokens (/settemp doesn't control length — max tokens does, set it in Dashboard settings)
  • Add more detail to your character's description and personality fields
  • Add example dialogue showing the style and length you want
  • Try a more capable model (Claude and GPT-4o tend to give richer responses than smaller models)

The bot forgot something important

  • Use codex constant entries for facts that should never be forgotten
  • Pin important details as memory notes in the Memory Manager
  • Increase the context window (/setcontext) so the bot sees more history
  • Check if auto-summarize compressed something important — you can edit summaries in the Memory Manager

Can I use the same character on multiple bots?

Yes! Characters and bots are separate. One character can be linked to multiple bots, and you can swap characters on a bot anytime.

How do I invite my bot to a server?

Use the Invite button in the Bot Manager. If you created your own invite link in the Discord Developer Portal, that works too.

Is there a message limit?

Not from us. Your only limit is your API provider's rate limits and your credit balance. UnrealHQ doesn't throttle or cap messages.

Can other people use my bot without paying?

No. The bot uses each message sender's own API key. If someone doesn't have a key set, the bot silently skips their message. Everyone who wants the bot to respond to them needs to set their own key with /setkey.

Get Started