synthlust
Glossary

The terminology, explained.

Every concept that matters when using an AI companion app, explained in plain terms. No AI clichés or marketing speak here, just the real terminology that serious users know.

BYO-key (Bring Your Own API Key)

permalink →

The practice of plugging your own OpenAI, Claude, or OpenRouter API key into an app, paying for your own model usage instead of the app's bundled model.

Janitor.AI is the main example: the app itself is free to use and lets you plug in any compatible API. You pay the API provider directly (OpenAI, Anthropic via proxy, OpenRouter, etc.) for your usage, and Janitor never sees that payment. (Janitor now also sells its own per-token access to third-party models through the janitor+ Router, which is the no-key alternative.)

This has three benefits: you get the best available model on any given month (the apps' bundled models lag frontier models by 6-12 months), your prompts go to your provider not the app's servers (a privacy win), and your costs scale with use (often cheaper than a fixed subscription if you're a casual user).

The downsides: setup is non-trivial (you need to sign up for an API provider, manage keys), some providers' terms of service forbid adult content (OpenAI and Anthropic both do, officially), and the app has no control over output quality. If the model is slow or broken, there's no support channel.

Related: Content filter

Content filter

permalink →

The layer between you and the raw language model that blocks or softens certain outputs. Different apps filter at different strictness levels.

Every commercial AI app has a content filter. It can sit at different points: pre-prompt (rejecting your request before the model sees it), post-generation (generating a response then scrubbing or refusing), or both. Uncensored apps claim to have none, but they always have something, usually a thin layer around CSAM and real-person impersonation that stays regardless.

Filter strictness in 2026 ranges from extremely tight (Replika, Character.AI default) to nearly absent (Muah on paid, Janitor with a bring-your-own proxy, Get-Harder). Most apps sit in between.

"Jailbreak" prompts attempt to get around filters. The polite version of this is framing the interaction as fiction, declaring adult consent, and using OOC for anything that might trigger the filter. These don't always work on strict filters but dramatically soften mid-filter apps.

Related: Roleplay framing

Context window

permalink →

The amount of prior conversation the model can see at once. Larger windows mean longer-coherent conversations and better memory without external systems.

Every LLM has a finite context window: a limit on how many tokens of input it can process at once. Older models had 4k or 8k tokens; modern models range from 32k to 200k+. In an AI companion app, this determines how much conversation history the model actually "sees" when generating a response.

Apps handle context differently. Some include the full conversation up to the limit. Some summarize older messages. Some use retrieval-augmented memory to pull specific older messages that are relevant. Janitor's default model (JanitorLLM) gives free users around 9k tokens, and its paid janitor+ tier raises that fivefold. Get-Harder's Elite tier offers 16K for conversations.

A longer context window makes the character feel more aware of what's happened. It doesn't replace a real memory system (past a certain length everything compresses), but it reduces the frequency of "wait, who are you again?" moments.

Related: Memory anchoring

DAN mode / character override

permalink →

An older jailbreak genre ('Do Anything Now') where you ask the model to adopt an identity that ignores its rules. Mostly deprecated: modern models resist it.

DAN ("Do Anything Now") was a viral jailbreak pattern from 2022-2023. The prompt asked ChatGPT to play two roles: its normal self and a "DAN" alter ego that had no restrictions. For a few months it worked. Modern models have been trained specifically to refuse this pattern, and it rarely works on anything released after mid-2024.

In the AI companion category, DAN-style jailbreaks are unnecessary anyway. The whole point of these apps is to be less restrictive than general-purpose chatbots. Writing a DAN prompt to an already-uncensored app like Muah or Janitor is performative; on already-filtered apps like Candy, the filter-aware version of the prompt won't bite.

It survives in community roleplay docs for historical reasons, not because it still works.

Discreet billing

permalink →

A merchant descriptor on your bank or card statement that doesn't identify the service as adult, which matters if anyone else sees your statements.

Most AI companion apps use third-party payment processors. The processor charges your card under some merchant name, which shows up on your statement. Discreet billing means that descriptor is a generic name (like "EverAI Ltd" or "CDN Services") rather than something obviously adult.

Of the apps we've tested, Candy.ai, OurDream, GoLove, and Secret Desires all use discreet descriptors. DarLink does not. Its descriptor is explicit, which is a real concern if anyone else sees your statements.

Paying with a virtual card (Revolut, Privacy.com, or similar) is the universal workaround. You get a one-off card number, any descriptor lands on it instead of your main statement, and you can delete it anytime.

Image diffusion

permalink →

The family of AI models that generate images from text prompts. Separate from the chat LLM, and the source of most image-quality differences between apps.

When your AI companion sends you a picture, it's not generated by the chat model. A separate diffusion model, usually a variant of Stable Diffusion or a custom fine-tune, handles image generation. The chat model writes a prompt for the diffusion model to render.

This matters because image quality is largely decoupled from chat quality. An app with mediocre chat can have great images (Promptchan, Xtease), and vice versa. It's also why image quality varies wildly even within one app depending on which model is serving that month.

Good image prompts follow three axes: subject (who and what), style (what medium: photorealistic, anime, oil painting), and lighting (soft, dramatic, golden hour). Stacking adjectives beyond that degrades output quality. Negative prompts are often more effective than positive ones for fixing specific problems like malformed hands.

Related: Negative prompt

Jailbreak

permalink →

A prompt technique that circumvents a content filter. Most are ethically gray, some fully legitimate (adult consent framings), and what works shifts monthly.

Jailbreaking an LLM means getting it to produce output its filter would normally block. Techniques range from subtle ("we're writing a novel, this is fiction") to aggressive ("ignore previous instructions and...").

On AI companion apps, most useful jailbreaks are actually legitimate framings. Declaring that all characters are adults (they are, if you set them that way), that the platform permits adult content on this tier (often it does), and that the user is of legal age (you are, presumably) is usually enough to unlock the content the platform already allows.

More aggressive jailbreaks (prompt injection, role-hijacking) tend to be patched quickly and can get accounts banned. Stick to legitimate framings and the app's stated allowed content. Anything further isn't worth the account risk.

Related: Content filter

Memory anchoring

permalink →

The practice of feeding specific, highly distinctive facts into a persistent-memory engine so the AI remembers you naturally in later sessions.

Memory systems in AI companion apps work by storing pieces of conversation and retrieving them later. They do this better for specific, distinctive facts than for generic ones. "I like coffee" will usually vanish. "My cat Dijkstra knocks things off counters when I'm on work calls" will usually stick.

Products with explicit memory engines (MyLovely's Layered Memory, DarLink's Living Memory, Secrets' scenario memory, Get-Harder's HME) all rely on the same underlying principle: retrieve context that's relevant to the current message. The retrieval works better when the stored context has unique lexical signatures.

The practical implication: don't rely on the app to remember things for you automatically. Drop specific facts into conversation, and expect them to come back later. Abstract emotional states don't anchor well; concrete details do.

Related: Persona

Mood control

permalink →

Explicit instructions to shift the emotional register of a scene: flirty to serious, tense to tender. Most models hold mood inertia longer than they should.

Once a scene establishes a tone, models tend to keep running with it. A flirty scene stays flirty past the point where it makes sense to shift. A serious scene stays heavy when it should lighten.

Mood control prompts override this inertia. "The scene is about to get tender. Let your next response feel that shift" works with almost every model. The key is not to announce the shift ("okay, now be tender") but to instruct the shift ("be tender").

This is one of the most underused tools in AI roleplay. Most users ride out a scene's original mood until they're bored, instead of actively steering the emotional arc.

Related: Pacing

Negative prompt

permalink →

Text in a dedicated field that tells the image model what you don't want. Usually more effective than the positive prompt for fixing specific failures.

Image diffusion models accept two prompts: positive (what you want) and negative (what you don't). The negative prompt is where most quality fixes happen.

Standard negatives everyone should use: extra fingers, deformed hands, bad anatomy, duplicate, text, watermark, low quality, blurry. Beyond those, add things relevant to your specific failure modes. If the model keeps giving your character the wrong hair color, add the wrong color as negative.

Overloading the negative prompt degrades the positive prompt's influence. Ten items is about the limit for most models before the output starts looking flat or generic.

Related: Image diffusion

OOC (out-of-character)

permalink →

A convention from forum roleplay where (( double parentheses )) mark anything the author is saying to the author, not the character to the character.

OOC is a 20-year-old internet convention: anything inside (( )) is author-to-author, meta, outside the fiction. It was built for forum roleplay and it works perfectly in AI companion chat because modern LLMs have seen it in their training data.

Using OOC lets you direct the scene without breaking immersion. If the model has your character do something weird, you can (( back up, my character would never do that, reset to before that )) without the in-character narrative being contaminated by your correction.

Most models handle OOC cleanly if you establish it at the start of the roleplay. Some apps (Janitor.AI, SpicyChat) assume you know it already; mainstream apps (Candy.ai) don't surface it but still respond to it correctly.

Related: Roleplay framing

Pacing

permalink →

The rhythm of a scene: how fast beats land, when tension rises, when to linger and when to skip. Almost always worse by default than it should be.

Every model is trained to be helpful, and helpfulness often manifests as rushing toward a resolution. The result: scenes pay off their tension three messages after it's established. First-time AI roleplayers complain about this constantly: "we were flirting and then suddenly we were having sex and it didn't feel earned."

Fix it by instructing the model to match your pace. If you write 3 lines, write 3-5 back. Don't escalate unless I escalate. Let tension build. Don't rush to payoff. These instructions are simple and they work.

Time jumps are the other pacing tool. Explicit "skip to next morning" beats trying to roleplay through hours of small talk. Most models handle explicit time jumps cleanly. They fail only when left to implicit ones.

Persona

permalink →

The identity and personality definition that controls how your AI companion behaves: the foundation of every other quality metric.

A persona is the set of instructions that tells the language model who it's pretending to be. In AI companion apps this usually includes a name, age, role, personality traits, voice, values, and dislikes. Everything downstream (how the character speaks, what they remember about themselves, whether they feel consistent across sessions) is built on top of this definition.

Most apps give you a persona builder with sliders or multi-select options. Some (Secret Desires, DreamGF) give you granular control. Some (CrushOn, GirlfriendGPT, Janitor) let you browse community-created personas instead. Janitor in particular uses the concept of "character cards": standalone persona files you can import or export.

Good personas are specific and contradictory. Generic ones produce generic output. A persona that says "sassy 22-year-old barista who collects vinyl and secretly writes poetry she never shows anyone" will produce far more interesting chat than "flirty and fun".

Most user disappointment with AI companion apps traces back to a weak persona. The model is doing what it was told; what it was told was bland.

Roleplay framing

permalink →

Setting explicit rules at the start of a roleplay (who writes what, what's in-character vs out-of-character, response length) to prevent drift.

Every long roleplay drifts. Characters slip out of voice, the model narrates your actions instead of letting you write them, responses get too long or too short, scenes rush to resolution. Framing up front reduces all of this.

A good framing prompt establishes: (1) stay in character, (2) don't narrate the user's actions, (3) keep responses within a length range, (4) use OOC notation for anything meta, (5) acknowledge these rules before starting.

The reason this works is that once a model has acknowledged a set of rules in-context, violating them requires contradicting itself, which models generally avoid. Set the rules before the first in-character message and they hold much longer than if you try to correct course mid-scene.

Scene priming

permalink →

Setting context before the roleplay starts (where you are, what's happening, what's at stake) to skip past the 'hi, what's your name' phase.

Most conversations with an AI companion start flat because there's no context. Scene priming fixes this by establishing the setting and stakes in the first message, so the model has somewhere specific to go.

The best openers drop you mid-scene. Instead of "hi, how are you?" something like "the ice in your drink has already melted." That single sentence tells the model it's probably a bar, it's probably night, you've been sitting there a while, and you're probably nervous. A good model will pick up on all of it.

The alternative to scene priming is slow ramp-up: you waste 10-15 messages building rapport that could have been established in the first line. For users paying per-message or per-credit, this is also literal wasted money.

Story stakes

permalink →

What the characters stand to gain or lose in a scene. Without stakes, scenes drift; with them, they escalate naturally.

Stakes are what makes a scene a scene rather than a conversation. "We're on a first date" has stakes: the possibility of connection or rejection. "We're chatting about our day" doesn't.

AI roleplay drifts when stakes aren't established or aren't renewed. The character wants something, the user wants something, and the tension between those wants drives the plot. When the model stops tracking wants, the scene devolves into aimless dialogue.

Reintroducing stakes mid-scene is a power-user move: "your character just realized something that makes this harder" or "raise the stakes: something your character is afraid of just became more likely." These prompts force the model to think about what's driving the scene, not just what's happening in it.

Token / credit economy

permalink →

A metered billing model on top of a subscription where certain features (images, video, voice) cost additional per-use credits.

Many AI companion apps charge a monthly subscription plus meter specific features through tokens or credits. Images might cost 2 credits, videos 10, voice minutes 5 per minute. You get a monthly allocation with your subscription and can buy more when you run out.

The upside is that light users pay less. The downside is that heavy users pay significantly more than the advertised subscription price. Apps like DarLink, Promptchan, Nectar, and DreamGF all run on this model.

The economics work best when you understand your actual usage. If you generate a lot of images, the all-in cost on a credit-based app may exceed a flat-rate competitor. Candy.ai and Muah have flat-rate tiers that often work out cheaper for heavy users.

How a character speaks: word choice, sentence rhythm, what they leave unsaid. The second-most-important axis after persona, and the most undervalued.

Voice is the linguistic fingerprint of a character. Two characters with the same backstory but different voices feel like completely different people. A strong voice makes chat feel like talking to a specific person; a weak voice makes it feel like talking to a chatbot.

Voice is controlled through examples and explicit instructions rather than sliders. Telling the model "your character uses contractions, avoids corporate language, and drops pronouns when the meaning is clear" steers output more than any backstory.

In the AI companion category, voice is where apps actually differentiate. Candy.ai's voice model is noticeably warmer than DreamGF's. Janitor.AI's voice depends entirely on which LLM you plug in. The voice difference is what people mean when they say one app "feels more alive". It's usually not the memory or the images, it's the words.

Related: Persona
See these concepts applied

Each of these terms shows up in the prompt library, where you can see them used in real prompts.

Browse prompt library →