# Chazz.ai: complete documentation Operated by Cognitive Industries (ABN 62 794 528 747), Australia. contact@cognitive-industries.org https://chazz.ai · policy for automated readers: https://chazz.ai/for-ai This file is the entire in-app documentation of the service in one fetch. It is generated from the same source the app renders, so it is never a summary of the product and never out of date with it. The short version, with the operator's policy for crawlers and agents, is at https://chazz.ai/llms.txt © 2026 Cognitive Industries. Quoting with attribution to Chazz.ai is fine. See https://chazz.ai/terms. --- ## Contents ### Getting started - What chazz.ai is: A roleplay platform built around characters that remember, worlds that keep moving, and content you can build yourself. - Accounts, guests and signing in: What you can do without an account, what changes when you register, and how sign-in works. - Finding your way around: The sidebar, in-page tabs, page guides, help tips and the support assistant. ### Chatting - Explore: The home catalogue: every public character, scenario, modifier and lore pack, with filters and a random pick. - Chats: Your conversation inbox: reopen, search, rename and delete saved threads. - The chat screen: Where a conversation actually happens: sending, editing, regenerating, continuing, and the header controls. - Chat modes: What Simulation, Hardcore and Companion each change, and why "Realistic" is not a fourth option. - How settings are resolved: Four layers decide what a turn actually runs with, and the later ones win field by field. - World toggles: The five scenario-engine layers: scenes, inventory, reality envelope, evolution and living world. - Memory and recall: What a character remembers, the six sliders that control it, and how depth changes the price. - The director: In a scene with several characters, a small model decides who speaks next instead of a fixed rule. - Personas: who you are: Define the character you play, and characters will treat you as them. - Branches and rewinding: Regenerate a reply and the story forks. Each branch keeps its own history and its own memory. - Companion: A reserved space that is not built yet. ### Creating - Customize: The create-and-edit form for characters, scenarios and modifiers. - Characters: Every field on a character, what the model actually sees, and which fields accept macros. - Scenarios: The situation a conversation starts in: premise, place, atmosphere, and an optional opening line. - Modifiers: Reusable instruction layers you stack onto any chat to change tone or rules. - Lore packs: Background facts that stay out of the prompt until the conversation touches them. - Library: Everything you made and everything you saved, in four tabs. - Sharing what you made: Hand a character, scenario, modifier or lore pack to one person with a link, without publishing it. ### Macros and scripting - Macros in card text: Small braces inside a description or greeting that pick a variant, fill in a name, or change the text for the reader. - LoreScript: A small language that lets a lore entry decide for itself when to fire and what to say. - The lore studio: The editor for lore packs and scripts: completion, hover docs, live diagnostics and a reference tab. ### Shared and long-form play - Multiplayer: A shared room where several people talk to the same AI character at once. - Campaigns: A persistent, procedurally generated world played as a text adventure, with its own credit economy. - Turing Test: A timed anonymous scene with a stranger who may be a person or an AI. Guess correctly to win. ### Stories and images - Stories: Long-form narrated pieces you can read, listen to, and publish. - Writing and generating stories: Three ways to make a story: by hand, from a prompt, or from a conversation you already had. - Story audio and voices: Multi-voice narration, how speakers are detected, and exactly what it costs. - Images: A community gallery, a text-to-image generator, and your own image library. ### Credits and commerce - How credits work: One turn, one price: model cost, plus a length surcharge, times memory depth, plus whatever actually ran. - Choosing a model: What the picker offers, what "premium" means, and the substitutions the server can make behind your choice. - Store: Credit packs, plans, coupons, and the rules for the free welcome credits. - Plans and subscriptions: What a paid plan changes, and where the live prices actually come from. - Marketplace: Buy and sell characters, scenarios, modifiers, lore packs and stories for credits. - Gifts: Send credits or something you made to someone else, as a redeemable code. - Creator Program and creator profiles: Trade accumulated credits for prepaid gift cards, and what a public creator page shows. - Cosmetics: Themes, frames, badges and effects bought with credits, plus bundles, sets and loadouts. - Credits for a public post: Post about chazz somewhere public, clear 50 likes or upvotes, send us the link, collect 500 credits. ### Account and safety - Settings: the full reference: Every section of the Settings page and what each control actually changes. - Content ratings and moderation: How content is rated, who decides, and what a rating changes for readers and creators. - Age and identity verification: What is required varies by country, across five tiers, from nothing at all to a full identity check. - Privacy, data and the vault: What is stored, what is public, what encryption covers, and how to delete everything. - Getting help and reporting content: The assistant, bug reports, support tickets, and how to report a piece of content. - The chat-app bots: Playing chazz.ai from Discord, Telegram and the rest, and connecting your account to them. ### Admin tools - Admin: dashboard, config and tooling: The operator console: platform health, global configuration, the model catalogue, analytics and developer tools. - Admin: content catalogues: Curating characters, scenarios, modifiers, lore packs, stories, images and campaigns. - Admin: users, moderation and support: Accounts, the content report queue, and the support inbox. - Admin: coupons and payouts: Issuing coupons and reviewing Creator Program payout requests. - Admin: the bot fleet: Watching, throttling and switching off the Discord, Telegram and Kik bots. --- # Getting started What the platform is, what an account gets you, and how to find your way around. ## What chazz.ai is A roleplay platform built around characters that remember, worlds that keep moving, and content you can build yourself. chazz.ai is a roleplay platform. You talk to AI characters, and the conversation keeps state: characters remember what happened, the scene has a location and a clock, and, if you turn it on, the world keeps moving between your messages. Everything you interact with is made of four building blocks, and you can create all four yourself: - Character: Who you are talking to. Name, description, greeting, personality, voice. See Characters. - Scenario: The situation the conversation starts in: premise, location, atmosphere, and optionally an opening line. See Scenarios. - Modifier: A reusable slice of instruction stacked on top, for tone or rules. See Modifiers. - Lore pack: Background facts that get injected only when the conversation touches them. See Lore packs. The main surfaces Where | What it is for Explore | Browse and filter every public character, scenario, modifier and lore pack. Chats | Your saved conversations. Customize | Build a character, scenario or modifier. Library | Everything you made, plus everything you saved from Explore. Images | A community gallery, a text-to-image generator, and your own image library. Stories | Long-form narrated pieces you can read, listen to, or generate. Multiplayer | A shared room where several people talk to one character. Campaign | A persistent, procedurally generated world played as a text adventure. Turing Test | A timed scene with a stranger who may or may not be a person. Store | Credits and plans. Settings | Your account defaults for every new chat, plus privacy and safety controls. Two things worth knowing up front - Almost everything is priced in credits (CGC). Free models genuinely cost nothing at default settings. See How credits work. - Your Settings page holds defaults, not rules. Every conversation can override any of them from its own settings panel. See How settings are resolved. If you just want to start: open Explore, tap a character, and send a message. Nothing you do there affects your saved conversations until you actually reply. --- ## Accounts, guests and signing in What you can do without an account, what changes when you register, and how sign-in works. There are three kinds of visitor, and the difference matters for what you can reach and what you get. - Signed out: Can browse Explore, read Stories, view the public image gallery, and open the Store. Cannot save anything. - Guest (anonymous session) (no credits): A throwaway session with no email attached. Chats live on your device. Guests receive zero free credits. - Registered account: Everything. Saved chats, a library, personas, the credit wallet, the 100 welcome credits, multiplayer, campaigns and the marketplace. Guests get no free credits at all. The welcome credits are for newly registered accounts only: 50 at sign-up and 50 on your first return visit. Source: worker/src/freeIntro.ts:64, where an anonymous caller returns before any grant is made. How routes are gated Three different rules are in play, and they behave differently when you are not eligible: - Open: Anyone, signed out included: Explore, a chat screen, Images, Stories, Store, Marketplace, a creator profile, Settings. - Prompted: The page loads for a guest but pops a sign-in prompt for the parts that need an account: Chats, Customize, Library, Companion. - Members only: Guests and anonymous sessions are redirected back to Explore: Campaign, Turing Test, Multiplayer, Cosmetics, Gifts, Creator Program, and every story-authoring route. - Admin: Every /admin route. See Admin: dashboard, config and tooling. Signing in 1. Open the sign-in screen: From Settings or any prompt. It lives at /auth. 2. Authenticate: Sign-in runs through the shared Cognitive Industries account system, so one account works across every app on the platform. 3. Land back in the app: The provider returns you to /auth/callback, which finishes the exchange and drops you where you were. Signing in from Settings sends you back to Settings afterwards, because the sign-in button carries a redirect. Source: web/src/views/user/Settings.tsx:361. Upgrading a guest session A guest can link an account at any time from Settings. Some features refuse to run until you do. The client-side chat vault, for one, requires a linked account. Applies to: /auth, /auth/callback --- ## Finding your way around The sidebar, in-page tabs, page guides, help tips and the support assistant. The sidebar is the top-level map. Inside a page, tabs do the second level of navigation. Most pages that hold more than one kind of thing use them rather than separate routes. Pages that use in-page tabs - Explore: Characters · Scenarios · Modifiers · Lore. The Characters tab also has a grid/swipe view switch. See Explore. - Customize: Character · Scenario · Modifier. See Customize. - Library: Characters · Scenarios · Modifiers · Lore Packs. See Library. - Images: Explore · Generate · Library, and Library splits again into your creations and your favourites. See Images. - Marketplace: All · Characters · Trained · Scenarios · Modifiers · Lore Packs · Stories · Campaigns. See Marketplace. - Gifts: Send · Sent · Received. See Gifts. - Campaign: The new-campaign browser splits into Worlds and Join Campaign. See Campaigns. - Turing Test: Play · Spectate. See Turing Test. - Multiplayer: The character picker in the create-session dialog splits into My Library and Public. See Multiplayer. One page has no tabs at all: Settings is a single long scroll. Use the section list in Settings: the full reference to jump. The four help surfaces Help arrives from more than one place, and they answer different questions: - These docs: The full reference. Every page, tab and setting, with what it does and what it costs. - Page guides: A short three-step orientation for the page you are on, opened from the help control in the header. - Inline help tips: The small question-mark icons beside individual settings. They explain one control. - Support: An assistant that answers usage questions, plus a bug report form and a human support ticket. See Getting help and reporting content. If a page guide and these docs disagree, trust the docs. Every number here is read from the code and carries a source reference in the module. --- # Chatting Conversations, modes, memory, personas and every knob that changes how a character replies. ## Explore The home catalogue: every public character, scenario, modifier and lore pack, with filters and a random pick. Explore is the front page and the main way to find something to play. It is open to everyone, including signed-out visitors. Tabs - Characters: People to talk to. Tapping one starts a brand-new conversation. - Scenarios: Situations. Tapping one opens a setup dialog so you can choose who is in it. - Modifiers: Tone and rule layers. Tapping one opens a preview. - Lore: Background packs. Tapping one opens a preview. On the Characters tab a second control switches between a grid and a swipe view. In swipe view, a right swipe opens the character. Filters The filter bar is shared by every tab, so the same controls behave the same way everywhere: - Search: Free text against names and descriptions. Debounced, so it fires shortly after you stop typing. - Tag chips: Narrow to a topic. Combine freely. - Featured: Only items an admin has promoted. - Community Made: Only items made by users, hiding the platform's own seeded content. - Gender: Characters tab only. Any / Female / Male / Other. - Content rating: A restricted-content switch that only appears if your account is eligible to see it. See Content ratings and moderation. - Clear all: Drops every active filter. Filtering happens on the server, not in your browser, so a filter applies across the whole catalogue and not just the page you have loaded. Lists page in at 24 items and load more as you scroll. Source: web/src/views/user/Explore.tsx:24. Random The Random button pulls one item at random from whatever your current filters allow. It deliberately bypasses the cache, so pressing it twice gives you two different things. Adding to your library The preview dialog offers Add to Library, Add to Current Chat, and Start New Chat (or Start New Adventure for a scenario). Saving to a library needs a registered account, so guests get a sign-in prompt instead. See Library. Applies to: / --- ## Chats Your conversation inbox: reopen, search, rename and delete saved threads. Chats lists your saved conversations, most recently active first. Tapping a row reopens that exact thread with its history, scenario and settings intact. What you can do here - Search: Matches conversation titles and character names. Use it before starting a new thread with someone you have already talked to. - Rename: Give a thread a title that tells you which storyline it is. Useful when one character has several arcs running. - Delete: Removes the conversation. This is not reversible. - New Chat: Opens the setup dialog, where you can pick several characters, a scenario, modifiers and lore packs at once. The list loads your 50 most recent conversations. Source: web/src/views/user/Chats.tsx:75. Guests can open this page, but their conversations live on the device rather than on your account, and starting a multi-character chat asks them to sign in first. Applies to: /chats --- ## The chat screen Where a conversation actually happens: sending, editing, regenerating, continuing, and the header controls. A chat is one thread with one cast. Everything you set here (mode, modifiers, lore packs, model, memory depth) belongs to this conversation, not to every chat with that character. The header The header is the command centre. It holds the conversation settings panel, the memory view, the lore and modifier pickers, the persona picker, and the restart control. Sending and shaping replies - Send: Your message goes in and the character replies. Replies stream in token by token, per speaker. - Regenerate (costs credits): Throws away the last reply and generates a different one. This is a new generation, so it is charged like a new turn. - Edit: Change the text of any message, yours or the character's. The engine rebuilds its working transcript from the edit, so the next reply actually sees the change. - Continue (costs credits): Press the send button with an empty box: the character keeps going from where the last reply stopped instead of starting a new beat. The button shows a play icon when it will do this, and a paper plane when there is a message to send. Editing a message rewrites what the engine remembers from that point on. If the character has already reacted to the original text, the reaction stays in the transcript. Edit backwards from the newest message when you want a clean change. Multiple characters in one chat A conversation can hold up to 4 characters, and up to 2 of them may answer in a single turn. Each extra speaker in a turn adds a flat surcharge. See How credits work. Multi-character surcharge: +2 CGC on any turn with more than one speaker. Source: worker/src/pricing.ts:114, applied at worker/src/pricing.ts:183. Formatting your messages Chat text renders a small set of markers, which characters also use back at you: You type | You get **bold** | bold *italic* | italic, the usual way to write an action ~~strike~~ | struck through ~thought~ | an inner thought `code` | monospace Text in quotes is treated as speech and text outside it as narration, which is what the audio pipeline uses to pick a voice. See Story audio and voices. Applies to: /chat/:characterId --- ## Chat modes What Simulation, Hardcore and Companion each change, and why "Realistic" is not a fourth option. A mode is a broad statement about how the story should behave. A conversation can carry more than one at a time. - Simulation: The living world keeps moving. Time passes, other things happen, the scene has its own momentum. - Hardcore: Consequences are permanent. What happens is not quietly undone to keep things comfortable. - Companion: A deep ongoing relationship. The emphasis is on continuity with one person over a long stretch. There is a fourth value, realistic, but it is not a separate mode. It expands into all three of the above. Source: shared/types.ts:855 for the type, shared/types.ts:859 normalizeChatModes for the expansion. Where you set them - When starting a chat, in the setup dialog, unless you have turned that dialog off in Settings. - Mid-conversation, from the chat header settings. - For a whole multiplayer room, from the host settings panel. See Multiplayer. Modes are a nudge, not a mechanic. If you want the world to literally advance on its own, that is the Living world toggle rather than Simulation mode. See World toggles. --- ## How settings are resolved Four layers decide what a turn actually runs with, and the later ones win field by field. Every turn resolves its settings through four layers. Each layer only fills in what the layer above it left unset, so a single knob you changed never drags the others with it. - Engine fallbacks. The last resort, used only when nothing else has a value. - Your account defaults. What you set on the Settings page. These apply to every new chat. - The creator's recommended settings. A character may ship with tuned settings, folded into a new conversation at creation, but only if you have left "Use creator's recommended settings" on. - This conversation's own edits. Anything you changed from the chat header. Always wins. Nested groups merge rather than replace: toggling one world switch never resets the others, and moving one memory slider never resets the rest. Source: worker/src/engine/store.ts:41 loadSettings. The engine fallbacks Only reached when neither your account nor the conversation has a value: - Reply length (min 10, max 600): 100 tokens - Creativity (range 0 to 1.5): 0.7 - World toggles: Scenes on; inventory, reality envelope, evolution and living world off - Memory: The included baseline. See Memory and recall - Persona: None Source: shared/chat-settings.ts:139 DEFAULT_SETTINGS, with limits at shared/chat-settings.ts:95 SETTINGS_LIMITS. A quirk worth knowing The creativity slider on the Settings page runs 0.1 to 0.9 and shows a percentage, while the underlying value is allowed anywhere in 0 to 1.5. A conversation's own settings panel can therefore reach values the account-defaults slider cannot. Source: web/src/views/user/Settings.tsx:557. --- ## World toggles The five scenario-engine layers: scenes, inventory, reality envelope, evolution and living world. Five switches decide how much simulation runs behind a conversation. They are set as account defaults on Settings and can be overridden per conversation. - Scenes (included): Characters can move between named places and scene transitions fire. Off, every move is silently suppressed and the world can never change location. On by default. - Inventory (free): Items can be picked up, dropped and handed over, and the prompt gains "in sight" and "you are carrying" lines. Off, item actions are suppressed and items vanish from the prompt entirely. Off by default. - Reality envelope (free): Implausible actions are refused instead of being quietly treated as speech, and you cannot act on another character's behalf. Off, nothing is ever refused. Off by default. - Evolution (+1 CGC when it runs): Characters and the world drift over time, and the scene block gains a line describing the current mood. Off by default. - Living world (normal message cost per beat): The world moves on its own when you go quiet: the clock advances and a present character may speak unprompted. Off by default. Runtime behaviour verified in worker/src/engine/scenario.ts: suppression at :250-253, scene block rendering at :415-427, action resolution at :647-649, evolution at :391-393, ambient beats at :1549-1552. What the two paid ones actually cost Evolution bills +1 CGC, and only on turns where an evolution update actually changed something. It is free on Premium and Ultimate. Source: worker/src/pricing.ts:120, applied at worker/src/pricing.ts:185. Living world has no surcharge at all. Its ambient beats are separate replies, billed at the normal per-message model cost only when a world event actually fires. Source: worker/src/pricing.ts:117-118 and shared/constants.ts:832 (LIVING_WORLD_SURCHARGE = 0). Turning something on does not retroactively charge you. Evolution and the director bill per run, so a quiet stretch of conversation costs nothing extra. Pacing the living world The Living World panel (and the same controls in chat settings and account defaults) decides when the world is allowed to move: - Waits for: How long the room has to be quiet before a beat. Default one minute. - Beats before it waits for you: How many beats in a row it may take while you say nothing. It then goes still until you speak. Default 3. - Each unanswered beat waits longer: The gap grows by this much per unanswered beat, and drops back to what you set the moment you send a message. Default +50%. - Variety: How far a beat may stray from the conversation, and how much the timing is scattered. - Don't wait for silence: The world acts on its own schedule and can cut in mid-conversation, paced by a minimum gap instead of by silence. The beat budget still applies. Pause in the panel header holds the whole world, no beats and no clock, until you press play. Your own messages still work normally while it is held. --- ## Memory and recall What a character remembers, the six sliders that control it, and how depth changes the price. Memory is not one thing. A conversation keeps recent messages word for word, summarises older ones, and separately extracts durable facts that can be recalled later. Six sliders control the balance. The six sliders - Memories recalled per reply (default 6, range 0 to 12): How many stored memories are pulled into each reply. - Active memory pool (default 60, range 10 to 200): How many memories are kept per character before the oldest are dropped. - Verbatim recent messages (default 12, range 2 to 16): How many of the most recent messages stay word for word. - Compact at (messages) (default 32, range 8 to 48): When the rolling window grows past this, older talk is summarised. - Reflection cadence (turns) (default 4, range 1 to 20): How often characters silently reflect and drift their sense of self. - Summary size cap (chars) (default 2000, range 500 to 3000): Longest each compaction summary is allowed to be. Defaults from shared/chat-settings.ts:116 DEFAULT_MEMORY; ranges from shared/chat-settings.ts:95 SETTINGS_LIMITS. How depth is priced The defaults above are the included baseline. At or below them, memory adds nothing to the price. Pushing past them applies a continuous multiplier to the base message cost, because deeper memory ships proportionally more context to the model every single turn. - The multiplier ramps smoothly from ×1 at the baseline to ×2 at full depth. - It is rounded to the nearest 0.05, so a meaningful slider nudge always shows a visible change. - Turning sliders down never discounts. The generous baseline is the discount instead. - The header badge shows a tier name (Standard, Extended, Deep or Maximum) plus the live multiplier. Maximum memory multiplier is ×2. On a free (0-credit) model the base is floored to 1 before multiplying, so deepening memory costs at least 1 CGC per turn even there. Source: shared/chat-settings.ts:296 and shared/chat-settings.ts:311. Reflection cadence prices inversely: reflecting more often than the default is what costs, because each reflection is an extra background pass. Source: shared/chat-settings.ts:262-264. Memory scope Scope is a preference for whether memories should stay inside one thread or follow the cast: - This conversation only: Memories are isolated per thread. The default for character chats. - Share with the same characters: One pool across every conversation with that same set of characters. - Per scenario and cast: A separate pool for each combination of scenario and cast. Chosen automatically whenever a scenario is involved. Today the reply path stores its memory per conversation (and per branch), so the scope you choose is recorded on the conversation but does not yet change what a reply can recall. Treat "This conversation only" as describing current behaviour for every option. Source: the engine persists memory per conversation in worker/src/engine/store.ts:224 saveSessionAndLiving; the scope key is computed in the client at web/src/hooks/useChat.ts:526 and is not read by the worker's reply path. Memory extraction When the engine performs a memory extraction pass it charges +2 CGC, and only on turns where it actually ran. Source: worker/src/pricing.ts:121, applied at worker/src/pricing.ts:186. The engine clamps memory depth down to what the chosen model's context can actually hold, and you are billed on the post-clamp value. Picking a small-context model does not let you pay for depth it cannot use. Source: worker/src/pricing.ts:159-162. --- ## The director In a scene with several characters, a small model decides who speaks next instead of a fixed rule. When more than one character is in a scene, something has to decide who answers. By default a deterministic rule does it: whoever was addressed, whoever has the strongest claim on the topic, whoever has not just spoken. The director replaces that rule with a short call to a small, cheap model. It reads the cast, the last few lines and your latest message, and returns who should speak and optionally who should follow up. It does not write the reply, only picks the mouth. When it runs All of the following must be true, or the deterministic rule is used instead: - The conversation is a normal chat, not a campaign or a story pass. - At least two characters are present. A solo chat never runs the director. - You did not address anyone by name. Naming someone always wins outright. - For a cast of three or more it is always available; for a cast of exactly two it is a Premium and Ultimate feature. Source: worker/src/routes/chat.ts:346-347 for the eligibility rule, worker/src/engine/scenario.ts:787 liveDirector for the pass itself, and worker/src/engine/scenario.ts:1450-1458 for the runtime conditions. +1 CGC, charged only on responses where the director actually ran, and free on Premium and Ultimate. Source: worker/src/pricing.ts:119, applied at worker/src/pricing.ts:184. The settings toggle Default Director on Settings, and the matching switch in a conversation's own settings, record your preference and feed the estimated-cost readout. What the server actually does on a turn is decided by the rule above, cast size and plan, so on a solo chat the toggle changes nothing either way. If the wrong character keeps answering in a crowded scene, address someone by name. That path bypasses both the director and the heuristic. --- ## Personas: who you are Define the character you play, and characters will treat you as them. A persona is the character you play. When one is active it is injected into the prompt, so characters address you as that person instead of as a generic "you", react to how you look, and treat two of your personas as two separate people. A persona carries the same fields a character card does, asked from your side of the table: a portrait, an appearance, age, gender and pronouns, personality, how you speak, mannerisms, what you want, what draws and repels you, your background, your standing with others, and anything else you want every character to know. All of it is optional. A name on its own is a working persona. Setting one 1. Create it: Open Your Persona on Settings, then Create Persona. The full editor opens on Create and brings you back where you started when you save. 2. Or play as a character: Pick Play as a character instead and choose any card from your library or the public catalogue. Its name, looks, personality, background and portrait are copied into a new persona for you to edit. 3. Pick an account default: The persona chosen there is used by every new chat. 4. Override per conversation: The chat header persona picker changes it for that thread only. Your portrait Upload one, or generate it from the appearance you wrote for the usual image cost. It shows in the picker, on the chat header and in the multiplayer roster your co-players see. Gender and pronouns are worth filling in. With no persona at all the model is told NOT to assume a gender for you, so it keeps addressing you neutrally; setting either one turns that into a plain instruction to follow. Copied is copied. A persona made from a character is not a link to that card: editing it never changes the card, and the card changing never rewrites who you are halfway through a story. The three states a conversation can be in - Follow the account default: The conversation stores a sentinel meaning "use whatever my account default is", so changing your default changes this chat too. - A specific persona: This thread pins that persona regardless of your account default. - Deliberately none: This thread runs with no persona even if your account has a default. The sentinel is the literal string __default__ stored on the conversation; the server strips it before merging so the account value survives. Source: worker/src/engine/store.ts:51 and shared/chat-settings.ts:84. Personas are owner-checked on every turn. A persona id that is not yours, or has been deleted, resolves to nothing and the turn simply runs without one. Source: worker/src/engine/store.ts:70 resolveUserPersona. Personas need a registered account. Guests see the section but get a sign-in prompt. --- ## Branches and rewinding Regenerate a reply and the story forks. Each branch keeps its own history and its own memory. Regenerating does not overwrite history. It forks the conversation: the old reply stays on its own branch and the new one starts a new branch from the same point. You can move between them. What a branch carries - Its own visible transcript: its inherited history up to the fork, then its own messages. - Its own engine state: session, world clock, and living memory. - Nothing from a sibling branch. A fork never sees what a parallel version of events said. The lineage walk is exact: from the branch up through its parents, including each parent's messages only up to the fork point. Source: worker/src/engine/store.ts:104 visibleBranchMessages. Every regeneration is a fresh generation and is billed as a normal turn. Producing five variants of one reply costs five turns. Multi-character regeneration In a chat with several characters, regenerating streams the new beats onto the forked branch, so the alternative version stays coherent across the whole cast rather than only replacing one line. --- ## Companion A reserved space that is not built yet. The Companion page currently renders a single "Coming Soon!" message and nothing else. There are no controls and nothing to configure. Source: web/src/views/user/Companion.tsx, where the whole file is seven lines. Companion mode is a different thing and does work today: it is one of the chat modes, and it emphasises long-running continuity with one character. See Chat modes. Applies to: /companion --- # Creating The four pieces you build worlds from: characters, scenarios, modifiers and lore packs. ## Customize The create-and-edit form for characters, scenarios and modifiers. Customize is where you build things. It has four tabs (Character, Scenario, Modifier and Persona) and doubles as the editor: opening an existing item hides the tab strip and shows what you are editing instead. The Persona tab builds YOU rather than something you publish. It has the same boxes a character card has, it is always private, and it saves back to wherever you opened it from. See Personas: who you are. Lore packs are not made here. They have their own editor, reached from the Lore Packs tab of your Library. See Lore packs. Saving - Saving a new character takes you straight into a chat with them. - Each tab keeps its own required fields, and the save button stays disabled until they are filled. - Everything you create starts as yours and private unless you turn on the public switch. Images - Upload (free): Drop or pick a file. Maximum 5 MB, images only. - Generate (25 CGC): Generate an image for the item. Only offered when editing an existing item, not while creating one. - Copyright confirmation: Uploading requires ticking a box confirming you own the image or have permission to use it. Image generation is 25 CGC. Source: worker/src/pricing.ts:122 (IMAGE_GENERATION_COST), mirrored at shared/constants.ts:945. Upload limit: web/src/views/user/Customize.tsx:239. Generating a draft with AI From your Library you can ask for a generated draft rather than starting from an empty form. Two flavours exist, and the advertised prices differ: What | Random | From your prompt Character | 8 CGC | 15 CGC Scenario | 5 CGC | 8 CGC Modifier | 5 CGC | 8 CGC Creating anything needs a registered account. A guest who opens this page gets a sign-in prompt. Applies to: /customize, /customize/import --- ## Characters Every field on a character, what the model actually sees, and which fields accept macros. A character is the largest of the four building blocks. Only some of its fields reach the model. The rest are catalogue metadata or engine wiring. Identity - Name (no macros): Required. What the character is called. - Character Image (no macros): Upload or generate. A public character needs one. - Description (macros): Required. Who they are. The single most important field. - Tagline (no macros): Required. One short sentence, the line under the name on the card. The Description opens behind it on a tap. - Opening (no macros): Written or Generated. Written posts one of your greetings; Generated posts nothing and has the character write its own first beat at the start of every chat. - Greeting (macros): Required for a written opening. Their first line. The best place for macros: a varied greeting makes a second playthrough feel different. - Alternate Greetings (macros): Other ways the chat can open, one per box. A new chat starts on one of them and the reader can flick through the rest until they answer. - Scenario (macros): The default situation this character starts in. Fed to the model on every path. - Who the reader plays (no macros): A role the card hands the reader, such as "the new deckhand". Used only when they have no persona of their own and have not turned it off. - Gender (no macros): Unspecified / Female / Male / Non-binary. Also drives the Explore gender filter and voice selection. - Voice (no macros): Which voice reads their lines. Leave it automatic and one is picked to match. Behaviour - System Prompt (macros): Direct instruction to the model about how to play this character. - Writing Style (macros): How their prose should read. - Personality Traits (macros): Comma-separated adjectives. - Speech Style (macros): How they talk. - Goals / Likes / Dislikes (macros): What they want and how they react. - Hard Rules (macros): Things they will not do. - Immutable Facts (macros): Things about them that must never drift, even with evolution on. - Forbidden Drifts (macros): Directions the character must not evolve towards. Two fields are currently inert. Speech Patterns and Example Dialogue are stored and editable but are not read by the engine when building a prompt. Put the same information into Writing Style, Speech Style or the System Prompt instead. A generated opening costs the reader one message, because a real turn writes it. It leans on the Scenario and Description, which are all it has to open from, so a card with neither has nothing to work with. Wiring - Tags (no macros): Catalogue metadata. Drives Explore filters. - Make Public (no macros): Publishes to Explore and the catalogue. - Default Scenario: Which scenario a new chat starts in. - Default Modifiers: Modifiers automatically applied to a new chat. - Lore Packs: Packs attached to this character. See Lore packs. - Authored Chat Settings: Optional recommended model, creativity, length, world toggles, memory, voice, style and director. Applied to a new chat only if the person chatting has left "Use creator's recommended settings" on. See How settings are resolved. Which fields accept macros is not a guess. macros: true in shared/field-script/fields.ts is the single source of truth, and the editor reads it directly. See Macros in card text. A character's extra engine fields are stored as one blob and replaced wholesale on save. An edit form that lacks an input for a field must echo the existing value back or it is lost. This matters if you edit the same character from two different surfaces. --- ## Scenarios The situation a conversation starts in: premise, place, atmosphere, and an optional opening line. A scenario is the frame around a conversation. It says where you are, what is going on, and how it feels, without saying who is in it, so the same scenario can be replayed with different casts. Fields - Name (no macros): Required. - Description (macros): Required. The short pitch shown on the card. - Context / Premise (macros): Required. The actual situation the model is told about. - Location (macros): Where it takes place. - Atmosphere (macros): The mood. - Greeting Override (macros): Replaces the character's own greeting for this scenario. - Icon / Image (no macros): Card art. - Max Characters (no macros): How many characters this scenario supports. - Modifiers / Lore Packs: Applied automatically whenever this scenario is used. - Tags · Public (no macros): Catalogue metadata and publication. The opening beat A scenario chat opens with a scene-set: narration that establishes the situation before anyone speaks. It is attributed to the scenario itself rather than to any character in the cast, and the chat renders it under the scenario's name. If you leave the greeting override empty, the opening is generated from the premise instead of using a canned line, so it lands inside the scene you actually wrote. Write the premise in the present tense and from nobody's point of view. "The tram has been stopped for forty minutes and nobody has said why" gives the engine more to work with than "You are on a tram." --- ## Modifiers Reusable instruction layers you stack onto any chat to change tone or rules. A modifier is a small, reusable slice of instruction. Where a character says who someone is and a scenario says where they are, a modifier says how the whole thing should be played. You can stack several. Fields - Name · Icon (no macros): Required name; icon is card art. - Description (macros): What it does, for the card. - Prompt Instructions (macros): The text actually injected into the prompt. This is the modifier. - Injection Position (no macros): Prepend or Append, deciding whether the instruction lands before or after the surrounding block. Defaults to Append. - Trait Additions (macros): Traits added to the characters in scope. - Trait Removals (macros): Traits suppressed. - Priority (no macros): Ordering when several modifiers stack. - Tags · Public (no macros): Catalogue metadata and publication. Trait Additions and Trait Removals are stored and editable but are not currently consumed by the engine when building a prompt. Put the effect you want into Prompt Instructions. Keep each modifier about one thing. Three narrow modifiers you can mix beat one broad one you have to rewrite for every chat. --- ## Lore packs Background facts that stay out of the prompt until the conversation touches them. A lore pack is a set of entries. Each entry has trigger conditions and a body of text. When the conversation matches an entry's triggers, its text is injected into the prompt for that turn, and stays out of it otherwise, which is what keeps a big world from eating the whole context window. How an entry fires - Keywords: The classic mechanism: list words, and the entry fires when they appear in the scanned conversation window. - A script: An entry can decide for itself instead, looking at the whole window, keeping state between turns, counting, rolling dice, or building its text on the fly. See LoreScript. Scripting is additive. Keyword entries still work exactly as they always did; a script is something you reach for when keywords are not expressive enough. Where the text lands An entry chooses its injection position. Six of the seven positions put text somewhere inside the system prompt; the seventh puts it in the transcript instead. In order, top to bottom: - before_char: Above the character card, at the very top of the prompt. - after_char: Immediately below the character card. - em_top: Concatenated onto after_char, so in practice it behaves as a second after_char. - an_top: Below the scene block and the modifier layers, immediately above the long block of scene instructions. - an_bottom: Immediately below the scene instructions. - em_bottom: Concatenated onto an_bottom, so in practice it behaves as a second an_bottom. - at_depth (the default): Not in the system prompt at all. It is spliced into the transcript N lines from the end, as if someone had said it. You choose the role it is attributed to. An entry that does not choose a position gets at_depth at depth 1 with the role system. Depth 1 rather than 0 so your own message stays the last line the model reads. Source: worker/src/engine/lore.ts:47-49, mirrored for scripts at shared/lore-script/stdlib.ts:56-58. Verified order from worker/src/engine/scenario.ts:904-915 and worker/src/engine/session.ts:327-332; the transcript splice is worker/src/engine/session.ts:198 spliceAtDepth. If an entry is being ignored, position is usually the cause before wording is. Everything in the system prompt competes with a long block of scene instructions and several more blocks after it. at_depth sits in the conversation itself, a line or two from the end, which is the hardest place for the model to skip. Move an entry into a system-prompt slot only when you want it to read as part of the setup rather than as something that just happened. em_top and em_bottom are named for an example-messages block that the engine does not currently render. They still work, they just land in the neighbouring slot rather than around examples. Where to build one Lore packs are created and edited from the Lore Packs tab of your Library, not from Customize. There is no AI generate path for lore packs. They are built by hand or by script. --- ## Library Everything you made and everything you saved, in four tabs. Your Library merges two things per tab: items you created, and items you added from Explore. Added items carry a badge so you can tell them apart. Tabs Characters · Scenarios · Modifiers · Lore Packs. Actions - New Chat: Opens the setup dialog. - New: Splits into Generate (AI-drafted) and Create Manually. On the Lore Packs tab this is a single Create, because there is no generate path for lore. - Edit: Opens the item in its editor. Only for items you own. - Play (scenarios): Starts a chat pre-seeded with that scenario. - Delete / Remove: For your own items this is Delete and is permanent. For items you added from Explore it is Remove from Library and only unsaves them. The two are deliberately worded differently because they do different things. Delete destroys the item; Remove only takes it off your shelf. The Library needs a registered account. A guest reaching this page gets a sign-in prompt and no content loads. Applies to: /library --- ## Sharing what you made Hand a character, scenario, modifier or lore pack to one person with a link, without publishing it. Publishing puts something in front of everyone. Sharing puts it in front of the people you send it to. The Share button sits on every card dialog, on your Library cards, and in the chat menu next to the character you are talking to. Two kinds of link - A published item: The link is just its address. Anyone can open it, no account needed to look. - A private item: You create a link first: a one-off key that opens that one item and nothing else. Only you can create it, and you can turn it off whenever you like. What the link does when they open it - Show the card: They see what it is and choose: start a chat, save it, or close the tab. This is the default. - Start a chat: Straight into the conversation. Good for handing a character to one person, less good for posting into a group. What the recipient can do with it - Start a chat: Always. A character opens a chat directly; a scenario, modifier or lore pack opens the chat setup with it already chosen. - Add to Library: Published items only. It saves a reference, so the creator's later edits reach you. - Save my own copy: Private links, when you leave Let them keep a copy on. They get their own private copy to edit. The original is never touched. The switch is worth thinking about. With copying off, they can open and play with it while the link lives; turn the link off and their access goes with it. With copying on, what they took is theirs to keep. What a link does not do - It does not put the item in Explore, in search, or in anyone's feed. - It does not skip age verification. Restricted content stays refused to a viewer who is not verified for it, link or no link. See Content ratings and moderation. - It does not open anything else you own. One link, one item. Creating a link on a private item runs it through the same content check that publishing does, because it is going in front of someone who did not write it. If that check flags it, the item's content rating is raised and it stays gated from then on. Turning a link off Open Share on the item again. The sheet shows how many times the link has been opened and a Turn this link off control. Anyone holding the old link then gets told it was turned off, rather than a dead end. Deleting the item turns its links off too. Pressing Share twice gives you the same link, not a second one, so the list of live keys stays something you can actually reason about. Applies to: /s/:type/:id --- # Macros and scripting Make a card behave differently depending on who is reading it and what has happened. ## Macros in card text Small braces inside a description or greeting that pick a variant, fill in a name, or change the text for the reader. Any field marked as accepting macros can contain small expressions in double braces. They are worked out just before the text reaches the model, so one card can behave differently on a second playthrough, for a different reader, or in a different scene. Picking a variant {{random: a nod, a shrug, a long stare}} This is what makes a greeting feel different the second time you open a character. It is the single best place to spend a macro. Filling in a value You are {{char.name}}, and {{user.name}} has just walked in. A fallback keeps the sentence intact when a value is missing: {{char.gender | default "a keeper"}} of the tower archive. Conditions A condition writes one thing or another. The test and the branches are separated by a colon, and the two branches by a double colon: {{if cast.count > 1: The room is crowded. :: You are alone.}} {{unless …}} is the inverse. Tests read like a sentence: is, is not, contains, starts with, ends with, matches /pattern/i, the numeric comparisons, is empty and is not empty. They combine with and, or, not and brackets. A bare name on its own is a truth test. Writing for two audiences at once One condition follows the person reading rather than the rating on the card. mature is true for a reader whose account is verified for restricted content and false for everyone else: She leans against the doorway.{{if mature: The robe is not doing much.}}{{unless mature: She pulls her coat closed.}} This is how one card serves both audiences without a second version and without either reader seeing a refusal. See Content ratings and moderation. Which fields accept macros Not every field does. Names, tags, image fields, id references and switches are literal. The prose fields are where macros work: Block | Fields that accept macros Character | Description, Greeting, Scenario, System Prompt, Writing Style, Personality Traits, Speech Patterns, Example Dialogue, Speech Style, Goals, Likes, Dislikes, Hard Rules, Immutable Facts, Forbidden Drifts Scenario | Description, Greeting Override, Context / Premise, Location, Atmosphere Modifier | Description, Prompt Instructions, Trait Additions, Trait Removals Lore | Entry content Yours | Persona description, custom response styles, and anything you set with /modify The last row is your own text rather than a card's, and it behaves the same way: a persona described with {{if mature: … :: …}} reads one way for you and another for a reader who is not verified, and {{char.name}} in a custom style resolves to whoever you are talking to. Persona names stay literal, like every other name. Two of the character fields above (Speech Patterns and Example Dialogue) and both modifier trait fields accept macros but are not currently read by the engine when building a prompt. The macro will expand correctly and then go nowhere. See Characters. When something goes wrong The editor checks your macros as you type and points at the exact brace. An unclosed brace or a missing branch is reported rather than silently swallowed, so a broken macro never ships as literal braces into a conversation. --- ## LoreScript A small language that lets a lore entry decide for itself when to fire and what to say. A keyword list covers a lot, but not everything. LoreScript lets an entry look at the whole conversation, remember things between turns, count, roll dice, and build its text on the fly. Keyword entries still work exactly as before. A script is something you add when you want it. The smallest useful script when message matches /\bdragon(s)?\b/i { emit("Dragons have not been seen in these lands for two hundred years."); } Two places to write one - Entry script: Belongs to one entry. Decides whether that entry fires and what it says. - Pack script: Runs once per turn, before the entries. Use it for shared setup and for rules that span several entries. Functions defined in the pack script are not visible inside entry scripts, because each runs on its own. If several entries need the same helper, put the logic in the pack script and have it emit or set world state that the entries read. Controlling where the text lands A bare emit("…") puts the text into the transcript one line back, attributed to the system. That is the strongest default: it sits closest to the end of what the model reads, and depth 1 keeps your own message last. emit also takes an options object, and position moves the text between the same slots the rest of the pack uses. See Lore packs for what each position means: emit("You are being followed.", { position: "at_depth", depth: 2, role: "system", order: 200 }); Reading the situation A script can see the conversation it is running in: - message: The newest user message, exactly as typed. - scanText: The whole window the engine scanned, so you can look further back. - chat.turn · chat.messageCount: How far along the conversation is. - chat.platform: Where it is running: solo, multiplayer, campaign or preview. - chat.lastUser · chat.lastAssistant: The most recent line from each side. - chat.history(n): The last n messages as a list of role, name and text. - chat.mature: Whether this conversation is licensed for restricted content. - world: State you set yourself, which survives between turns. The full reference for every name a script can reach lives in the editor itself. Hover any name for its signature, summary and examples. See The lore studio. --- ## The lore studio The editor for lore packs and scripts: completion, hover docs, live diagnostics and a reference tab. Scripts are written in a dedicated editor rather than a plain text box. It is reached from the Lore Packs tab of your Library. What it gives you - Completion for every name a script can reach, filtered by what is valid at the cursor. - Hover cards with the signature, a summary, parameters and worked examples for any builtin. - Live diagnostics as you type, pointing at the exact span rather than reporting a line number. - A reference tab listing every value, function and method, grouped by category. - A guide with worked examples, and a cookbook of patterns to copy. - Try it buttons on the examples, so you can run a snippet without wiring it into a pack first. Authored fields are preserved Everything you author on an entry (triggers, scripts, positions, groups, cooldowns) is stored on the entry itself, not derived from the text. Saving a pack keeps all of it. Applies to: /lore/new, /lore/:packId/edit --- # Shared and long-form play Multiplayer rooms, persistent campaign worlds, and the timed guessing game. ## Multiplayer A shared room where several people talk to the same AI character at once. A multiplayer session is one conversation with one character and several human participants. Replies, typing indicators and presence stream to everyone in the room over a live connection, with polling as a fallback if the connection drops. The lobby - Your Sessions: Rooms you are in. Each card shows how many of the maximum are present, the message count, and whether it is still active. Ended sessions cannot be reopened. - Invitations: Pending invites, with accept and decline. The list refreshes on its own. - Create Session: Pick a character and a player cap. Creating a session 1. Choose a character: The picker has two tabs: My Library and Public. 2. Set the player cap: Two, three or four. Four is the default. 3. Create and invite: Share the invite with the people you want in the room. Host settings Only the host sees the settings panel. It controls the whole room: - AI Model: Each option shows its per-message credit cost. - Message Length · Creativity · Response Style: The same generation knobs as a solo chat. - Chat Modes: Simulation, Hardcore and Companion, as three switches. See Chat modes. - Living World: Shared across the room: time, stats and the world advance each turn for everyone. - Scenario · Modifiers & Lore: Attach story content to the room. Multiplayer needs a registered account. Guests and anonymous sessions are redirected away. Multiplayer sessions have no age verification step of their own. Whether restricted content is available in a room follows each participant's own account status, and the room is moderated for participants who are not eligible. A routing quirk The app registers /multiplayer/:sessionId, but the view only ever reads the session from a ?session= query parameter and always navigates using that form. Opening the path form shows the lobby rather than a room. Source: web/src/views/user/Multiplayer.tsx:47. Applies to: /multiplayer, /multiplayer/:sessionId --- ## Campaigns A persistent, procedurally generated world played as a text adventure, with its own credit economy. A campaign is a long-form text adventure inside a persistent world. You bind an actor to the world under a pseudonym and drive the story with freeform actions or slash commands. The world keeps running whether or not you are in it. Starting one 1. Name your actor: Up to 60 characters, and it must be different from your handle and your display name, because campaigns are played under a pseudonym. The start button stays disabled until it is. 2. Pick or generate a world: The browser has two tabs: Worlds to join an existing one, and Join Campaign to enter one already in progress. You can also generate a brand-new world. 3. Play: Type what you do, or use a command. Generating a new world has a bootstrap cost set by the world; where none is set the interface quotes 200 CGC. Joining an existing world has no bootstrap cost. Source: web/src/views/user/Campaign.tsx:152. Commands Typing / brings up the command list. The available commands are: /look · /talk · /take · /drop · /move · /attack · /use · /eat · /heat Everything else is a freeform action, and compound actions in one sentence are handled. The world economy Each world funds itself. The economy panel shows four numbers: - Upkeep / hr: What the world burns per hour to stay live. - World Balance: Credits currently in the world's pot. - Hours Left: Balance divided by upkeep. - Action Cost: What each of your actions costs. You cannot submit an action you cannot afford. - Fund World: Deposit credits into the world's pot. Anyone can. - Withdraw Earned: The world's creator can withdraw their share of what the world has earned, less what they have already taken. The creator's share defaults to 80% where the world does not specify one. Source: web/src/views/user/Campaign.tsx:536. The world clock Time is tracked in ticks, 24 to a day, and shown as Night, Morning, Afternoon or Evening. Your health is shown as a bar. Campaigns need a registered account. Guests are redirected away. Applies to: /campaign --- ## Turing Test A timed anonymous scene with a stranger who may be a person or an AI. Guess correctly to win. The page is called Turing Test everywhere in the interface, but its address is /roulette. Both refer to the same thing. You are paired anonymously with a stranger for a timed roleplay scene. At the end you say whether you were talking to a person or to an AI. Correct guesses win rewards; it is a skill game, not a wager against the house. The two entry tiers Tier | Entry | Reward Standard | 15 CGC | up to 40 High Stakes | 30 CGC | up to 90 How a round goes 1. Queue: Choose a tier and whether to allow spectators, then wait to be matched. 2. Play the scene: Roughly five minutes of staying in character. Messages flagged as containing personal information are blurred. 3. Guess: Human or AI. You can guess from the banner as soon as the guessing window opens. 4. Optionally continue: Extend the round for a credit cost quoted at the time, up to twice, and only while neither side has guessed. Spectating The Spectate tab lets you watch a match you are not in, for a small entry fee. Players choose whether their match allows spectators. Spectator entry is 10 CGC. Source: shared/constants.ts:955 (COST_ESTIMATES.SPECTATOR_ENTRY). This is the most restricted surface in the app. It needs a registered account, an age-verified status of over 18, and, in regions that require it, completed identity verification. Where verification is not available in your region, the page says so rather than offering a path. See Age and identity verification. Applies to: /roulette --- # Stories and images Long-form narration with audio, and text-to-image generation. ## Stories Long-form narrated pieces you can read, listen to, and publish. Stories are long-form prose with optional multi-voice narration. Reading and listening are open to everyone, including signed-out visitors. Writing one needs an account. The two tabs - Published: The public catalogue. Filter by search, tags, featured and community-made, same as Explore. - My Stories: Everything you own, at any status. Only shown to signed-in accounts. On a story page - Read or listen: Where audio exists, the reader highlights each word as it is spoken and lets you click a line to jump there. Playback speed and volume are adjustable. - Like: Signed-in accounts only. - Comments: Opens in a dialog. A comment inherits the rating of the story it is on. - Share: Uses your device share sheet, falling back to copying the link. - Download: Exports a watermarked local copy. - Edit · Delete: Owner only. Published versus draft, and the part that trips people up A story carries a status (Draft, Published, Archived) and a separate public switch. The public catalogue filters on the public switch, not on the status. Setting the status to Published does not publish anything. Ticking the public switch does. Source: the public list filters on is_public and rating only (worker/src/hive/data.ts:251). A story rated for restricted content is refused to viewers who are not verified for it, and shows a dedicated notice instead. See Content ratings and moderation. Applies to: /stories, /stories/:storyId --- ## Writing and generating stories Three ways to make a story: by hand, from a prompt, or from a conversation you already had. All three authoring routes need a registered account. Write it yourself Write Story is a plain editor: title, summary, the prose itself with a live word count, tags, and switches for audio, publication and content rating. It always saves as a draft first. Writing costs nothing. Only the optional audio pass does. Generate it Generate with AI takes a prompt, a genre, a model and a length: Length | Target | Reading time Short | 500 to 800 words | about 3 to 5 min Medium | 1,500 to 2,000 words | about 10 to 15 min Long | 3,000 to 4,000 words | about 20 to 30 min The generator quotes a price of roughly eight times a message plus a small overhead, but the server charges a plain per-message cost with the maximum token surcharge, which in practice is the model's per-message price plus 5 CGC. The quote is higher than the charge. Source: quote from shared/constants.ts:426 getStoryGenerationCost; actual debit at worker/src/routes/ai.ts:701. The model you pick is a request, not a guarantee. The server substitutes a default for an unknown or delisted model, and downgrades a premium model to the free fallback when your plan does not cover it. See Choosing a model. Build it from a chat From Chat converts a conversation you have already had into prose. Pick the conversation, review the preview (title, summary, each speaker with their message count, and the total length), then create. It saves as a private draft. Editing The editor adds a Status select with Draft, Published and Archived, and a button to generate or regenerate audio. Only the owner can open it. Applies to: /stories/create, /stories/generate, /stories/from-chat, /stories/:storyId/edit --- ## Story audio and voices Multi-voice narration, how speakers are detected, and exactly what it costs. A story can be narrated with a different voice per speaker. Text inside quotation marks is treated as speech and assigned to a character; everything outside them goes to the narrator. How speakers are found Attribution reads the speech verbs around each quote. The supported verbs are: said, asked, replied, whispered, shouted, exclaimed, muttered, growled, purred, stammered. Where that is not enough, a separate model pass attributes the remaining lines. That pass is charged only when it actually runs. What it costs Narration runs on one of two voice planes, set per account in Settings → Voice quality. Standard is the default; Premium is ElevenLabs. Voice quality | Cost per 1,000 characters Standard | 8 CGC Premium (ElevenLabs) | 80 CGC A character carries one voice on each plane, so switching quality changes the recording, not who they sound like. The speaker-attribution pass adds a flat 10 CGC, charged only on runs where it happened. Source: worker/src/pricing.ts:106. A single narration job is capped at 50,000 characters. Source: shared/constants.ts:921 (MAX_TTS_CHARACTERS). Rough prices by length Length | Approximate audio cost Short | ~25 CGC standard / ~250 CGC premium Medium | ~65 CGC standard / ~650 CGC premium Long | ~120 CGC standard / ~1,210 CGC premium Assigning voices 1. Save the story first: Speakers are detected from the saved prose. 2. Map each speaker: The voice dialog lists everyone it found. Assign a voice to each and one to the narrator. 3. Generate: The tracks are produced and stitched into one file with per-word timings, which is what drives the highlighting in the reader. Regenerating audio is charged like a fresh generation. Get the voice assignment right before you press it. A track is recorded on one plane end to end. Picking a voice from the other quality re-records the whole story rather than splicing two recordings together. --- ## Images A community gallery, a text-to-image generator, and your own image library. Three tabs, and they have different access rules. - Explore: The public gallery. Open to everyone, with the same filter bar as the rest of the app. - Generate: Text to image. Signing in is required. Clicking the tab while signed out opens a sign-in prompt instead of switching. - Library: Your own images, split into My Creations and Favorites. Signing in required. Generating 1. Write a prompt: Describe the image. Detail helps. 2. Optionally enhance it: The magic-wand button rewrites your prompt into a fuller one. 3. Choose visibility: Public puts it in the gallery; private keeps it to your library. 4. Generate: Usually about 10 to 15 seconds. Image generation is 25 CGC. The balance is checked before the request, so you are told rather than charged when you are short. Source: worker/src/pricing.ts:122 (IMAGE_GENERATION_COST). Prompt enhancement is 5 CGC. Source: shared/constants.ts:951 (COST_ESTIMATES.IMPROVE_PROMPT). Ratings in the gallery Images in the public gallery that carry a restricted rating are blurred for viewers who are not eligible to see them, with a badge saying so. The generator's own rating switch has its own eligibility check and refuses with a reason rather than failing silently. See Content ratings and moderation. Gallery pages load 40 images at a time. Source: web/src/views/user/ImageGenerator.tsx:378. Applies to: /images --- # Credits and commerce What everything costs, how to get credits, and how to sell what you make. ## How credits work One turn, one price: model cost, plus a length surcharge, times memory depth, plus whatever actually ran. Credits are called CGC. One CGC is A$0.01, and that rate is flat, so a pack's price in dollars is always its credit count divided by 100. What a chat turn costs A turn is priced in one pass, in this order: - The model's per-message cost. Every model in the picker shows its own. Two models genuinely cost 0. - A length surcharge. The first 100 tokens of reply length are included; each additional 100 adds +1 CGC. - The memory-depth multiplier. ×1 at or below the included memory baseline, ramping smoothly to ×2 at full depth. Applied to the running total from steps 1 and 2. - Flat surcharges, but only for what actually ran. Multi-character reply +2. Director +1. Evolution +1. Memory extraction +2. This is one function, not a scattering of rules: getChatTurnCost at worker/src/pricing.ts:170. The interface computes the same number from the same formula, so the estimate you see cannot be lower than what you are charged. Free really means free There is deliberately no minimum charge. A 0-credit model at default settings costs exactly 0 CGC per message, forever. Source: worker/src/pricing.ts:161-168. A free model starts costing something only when you opt into an extra: a longer reply, memory deeper than the baseline, a second speaker, or a director or evolution pass. Everything else, priced Action | Cost Image generation | 25 CGC Improve an image prompt | 5 CGC Narration, standard voice | 8 CGC per 1,000 characters Narration, premium voice (ElevenLabs) | 80 CGC per 1,000 characters Story speaker attribution | 10 CGC, only when the pass runs Generate a character draft (random / from a prompt) | 8 / 15 CGC Generate a scenario draft (random / from a prompt) | 5 / 8 CGC Generate a modifier draft (random / from a prompt) | 5 / 8 CGC Turing Test entry | 15 or 30 CGC Turing Test spectating | 10 CGC Where credits come from - The welcome credits (registered accounts only): 50 CGC the moment you register, then 50 more the first time you come back on a later day, 100 in total. Nothing decays and there is no deadline, so the second half is still there whether you return tomorrow or next month. - Credit packs: One-off purchases. See Store. - A subscription: A monthly allotment. See Plans and subscriptions. - Referrals: 25 CGC each to you and to the person you invited, up to 20 invitations. - Gifts: Someone can send you credits directly. See Gifts. Guests get zero free credits. The welcome credits are skipped entirely for anonymous sessions, and accounts created before the offer launched do not qualify either. Source: worker/src/freeIntro.ts:64-65. The second 50 lands on a later day than the one you signed up on, so it cannot be collected in the same sitting. Source: worker/src/freeIntro.ts:88. Watching an ad for credits Buttons offering credits for watching an advertisement appear in several places, but the endpoint behind them is currently a stub that grants nothing. Do not count on them. Source: worker/src/routes/stubs.ts:382. Applies to: /rewards --- ## Choosing a model What the picker offers, what "premium" means, and the substitutions the server can make behind your choice. The model decides how a reply reads and what it costs. You pick one as an account default on Settings, and any conversation can override it. Tiers - Free: Available to everyone. Two of them cost 0 CGC per message. - Premium: Requires a Premium or Ultimate entitlement. Requesting one without it does not fail. The server quietly downgrades you to the free fallback and charges accordingly. That downgrade is enforced on the server, not in the interface, so a client that asks for a premium model it is not entitled to cannot get one. Source: worker/src/pricing.ts:56 and worker/src/pricing.ts:62. Auto-router The auto-router options are not models. They are a deterministic router that picks a real model for the turn. You are billed the routed model's cost, so the estimate shows "varies" rather than a fixed number. Routing itself adds nothing. Substitutions the server can make - An unknown or delisted model id falls back to the default rather than failing at the provider. - A premium model requested without entitlement falls back to the free model. - A story with a restricted rating cannot run on a model that hard-refuses it, so it is moved to one that does not. Categories The picker groups models by what they are good at: overall, roleplay, storytelling, human-sounding, and a category for restricted content that is only shown to eligible accounts. Filtering by category never removes a model you are entitled to use; it only changes which labels are shown. Context and memory Memory depth is clamped to what the chosen model can actually hold, and you are billed on the clamped value. Paying for maximum depth on a small-context model is not possible. See Memory and recall. --- ## Store Credit packs, plans, coupons, and the rules for the free welcome credits. The Store page holds four things: subscriptions, credit packs, a coupon box, and a plain statement of the free credit rules. Credit packs Credits | Price (AUD) 1,000 | $10 3,000 | $30 7,000 | $70 Packs do not carry a bonus. A bigger pack is the same rate as a smaller one. It just saves you repeat checkouts. Coupons A coupon can grant extra credits, a temporary membership, or a percentage discount. An active discount restyles the pack prices so you can see what you would actually pay. Free credit rules, stated plainly - Guests get nothing. - A newly registered account gets 50 CGC at sign-up and 50 CGC on its first return visit, 100 in total, and they stay until spent. - Messages on free models are unlimited regardless. Guests can browse the Store but every purchase button is disabled with a sign-in prompt. Applies to: /store --- ## Plans and subscriptions What a paid plan changes, and where the live prices actually come from. There are four tiers: Free, Lite, Premium and Ultimate. A plan gives you a monthly credit allotment plus entitlements. Plan prices and monthly credit amounts are not stored in this app. The Store fetches the live catalogue from the shared platform at page load, so what you see there is authoritative. If the catalogue cannot be reached, the page says subscriptions are temporarily unavailable rather than showing stale numbers. What a plan changes - Monthly credits: Added to your wallet when the invoice is paid, not at checkout. - Premium models: Premium and Ultimate unlock the premium tier of the model picker. See Choosing a model. - Director and evolution: Both surcharges are waived on Premium and Ultimate. See The director and World toggles. - Two-character director: A cast of exactly two only gets the director on Premium or Ultimate. - Custom style presets: Creating reusable style prompts is a Premium and Ultimate feature. See Settings: the full reference. - Daily message allowance: Free 50 · Lite 100 · Premium 300 · Ultimate 750. The message allowances above come from shared/constants.ts:909 (MESSAGE_LIMITS). The in-repo credit figures (Lite 200, Premium 2,000, Ultimate 6,000) are defaults and mirrors (shared/constants.ts:582 and shared/constants.ts:22-23); the live catalogue is what actually bills. Managing it Manage Subscription appears on both Store and Settings once you are on a paid tier, and opens the payment provider's billing portal where you can change or cancel. Monthly credits arrive when the subscription invoice is actually paid. A failed payment means no allotment that month, even though the plan still shows as active until it lapses. --- ## Marketplace Buy and sell characters, scenarios, modifiers, lore packs and stories for credits. The Marketplace is a credit-denominated shop for user-made content. Browsing is open to everyone; listing and buying need an account. Tabs All · Characters · Trained · Scenarios · Modifiers · Lore Packs · Stories · Campaigns · My Listings · My Purchases. Sort by newest, most popular, or price in either direction. Selling 1. Own the item: You cannot list something you did not create. The server checks. 2. Set a price: Between 10 and 50,000 credits. 3. See your cut: The form shows the platform fee and your take before you list. The platform fee is 10%, rounded down. You receive the price minus that fee, granted on sale. Source: worker/src/routes/commerce.ts:225 and worker/src/routes/commerce.ts:330-331. Buying A purchase debits your wallet, pays the seller their cut, and clones the item into your account as a new private copy that you own. The seller's original is untouched. A listing can carry a quantity limit and sell out. The seller form and the tab strip both offer Campaigns, and the shared configuration also names bundles, but the server has no clone path for either and rejects them as an unsupported listing type. Those two cannot actually be listed today. Source: worker/src/routes/commerce.ts:228-231. Listing an item that already carries a restricted rating forces the listing to that rating. You cannot relabel something by relisting it. See Content ratings and moderation. Limits Title up to 100 characters, description up to 2,000, up to 10 tags, 20 listings per page. Applies to: /marketplace --- ## Gifts Send credits or something you made to someone else, as a redeemable code. A gift is a shareable code. You create one, send the code to whoever you like, and they redeem it. Three tabs: Send, Sent and Received. What you can send Credits, a character, a scenario, a modifier, a lore pack, or a cosmetic. Content items must be ones you created. Sending an item escrows it. The item leaves your account immediately and does not come back unless you cancel the gift before it is claimed. The rules - Expiry: 30 days from creation. - Credit amount: Between 10 and 2,000 per gift. - Daily send limit: 3 gifts. - Daily credit cap: 500 credits across all gifts. - Account age: Your account must be at least 48 hours old. - Message: Up to 200 characters, and screened before the gift is created, because anyone can read it, including recipients who are not verified for restricted content. Source: shared/constants.ts:864 (GIFT_CONFIG), enforced server-side at worker/src/routes/commerce.ts:445. Tracking a gift Each card shows a status: pending, claimed, expired or cancelled. While a gift is pending you can copy its code again or cancel it, which returns the item to you. Gifts need a registered account, and one that is at least two days old. Applies to: /gifts --- ## Creator Program and creator profiles Trade accumulated credits for prepaid gift cards, and what a public creator page shows. The Creator Program converts credits you have accumulated into prepaid gift cards. It is a redemption path, not a revenue share. The only percentage split in the app is the Marketplace's platform fee. See Marketplace. The tiers Credits | Gift card 25,000 | $10 50,000 | $25 100,000 | $50 How a request goes 1. Hold the credits: You need at least the tier amount. The request must match a configured tier exactly. 2. Request and confirm: The button arms a second confirmation before anything happens. 3. Credits are debited immediately: The request is created as pending and your balance drops right away. 4. A human reviews it: Fulfilled, or denied, and a denial refunds the credits in full. Requests are reviewed and fulfilled manually. There is no automatic payout. Creator profiles A creator page shows a creator's published characters, scenarios, modifiers, lore packs and stories, under their handle. It shows only public items, drops restricted items for viewers who are not eligible, and caps each section at 24 entries. Creator profiles are deep-link only. You reach one from a piece of content. There is deliberately no creator index and no handle search anywhere in the app. An account that has not claimed a handle has no profile at all. Applies to: /creator-program, /creator/:creatorId --- ## Cosmetics Themes, frames, badges and effects bought with credits, plus bundles, sets and loadouts. Cosmetics are appearance-only items bought with credits. They change nothing about how a model behaves. Tabs Shop · My Collection · Bundles · Loadouts. Categories Twelve of them: themes, backgrounds, card frames, badges, chat bubbles, name effects, banners, entrances, typing indicators, fonts, avatar frames and sound packs. Items carry a rarity from common through rare, epic and legendary to mythic. Prices Individual items run from 100 to 1,200 credits depending on category and rarity. Bundles group several items at a discount, shown as a "save" percentage, and the price drops proportionally for items you already own. Bundle | Cost | Full price | Items Retro Rewind | 520 | 700 | 4 Starter Pack | 640 | 800 | 5 Enchanted Nature | 1,600 | 2,250 | 7 Neon City Collection | 1,680 | 2,350 | 6 Shadow Realm Collection | 3,600 | 5,100 | 10 Cosmic Voyager | 4,800 | 7,200 | 8 Sets One set exists, called Shadow Realm. Collecting all ten of its items unlocks a mythic badge that cannot be bought any other way. Progress is shown in My Collection. Equipping and loadouts - One item can be equipped per category, except badges, where up to 5 can be active at once. - A loadout saves a whole configuration under a name so you can switch looks in one action. You can keep up to 10. Source: shared/cosmetics.ts:1009 for the badge cap and worker/src/routes/commerce.ts:1049 for the loadout cap, which is enforced on the server. Cosmetics need a registered account. Guests are redirected away. Applies to: /cosmetics --- ## Credits for a public post Post about chazz somewhere public, clear 50 likes or upvotes, send us the link, collect 500 credits. Post about chazz.ai in public. If the post reaches 50 likes or upvotes, send us the link and 500 credits go on your account. A post that goes considerably further is worth one month of Premium instead. What counts as a post Anything you would actually want to share: the site itself, a character you built, a story, an image you generated, or a screenshot of a conversation that went somewhere unexpected. Your words and your pick of what to show. Putting your invite code or invite link in it is optional. It is worth doing, because the code pays its own referral credits on top of this, but a post without one is claimed on exactly the same terms. Your code is on Settings: the full reference and on the Rewards page. How to claim 1. Post it publicly: Reddit, X, TikTok, Instagram, YouTube, Discord, a forum. Anywhere the post can be opened by someone without an account. 2. Wait for it to land: The bar is 50 likes, upvotes or whatever reaction the platform counts. 3. Send us the link: Open Docs / Support, go to the Contact tab, choose Message a human, and pick the Social post reward claim category. The Rewards page has a button that opens that form already part-written. 4. A person checks it: Credits are added by hand once the post is verified. There is no automatic payout and nothing to enter anywhere. Include the link, the platform, the reaction count at the time you write, and a line on what you shared. A claim missing the link cannot be checked and gets sent back. The rules - One claim per post. Reposting the same thing to five places is five posts, and each is judged on its own. - Up to 3 paid claims a month per account. - The post has to be public and still up when we look at it. - Bought engagement, botted reactions and posts that misrepresent what the site does are refused. - Which reward a claim gets is our call. There is no second threshold that guarantees the Premium month, so send anything past the bar and let us judge it. A registered account only. The credits land on an account and the claim is answered by email, so there is nowhere to pay a signed-out session. This payout is granted by hand and sits outside the rewards ladder, so it does not count against the monthly earning ceiling on How credits work. Applies to: /rewards --- # Account and safety Settings reference, content ratings, verification, privacy and getting help. ## Settings: the full reference Every section of the Settings page and what each control actually changes. Settings is a single long scroll with no tabs. Almost everything on it sets a default for new chats. Existing conversations keep whatever they were saved with, and any conversation can override any of it. See How settings are resolved. Most controls need a registered account. A guest who touches one gets a sign-in prompt rather than a silent failure. Theme is the exception, and works for everyone. Account - Sign in / Sign up · Continue as guest: Shown when you are signed out or on a guest session. - Handle: Your one public identifier. This is what other people see on your content and comments. Hidden for guests. - Display name: 3 to 24 characters, letters, numbers, dots, underscores or hyphens. Only you see this, and it is not shown to other users. - Manage Subscription · Sign Out: Shown once you are signed in; the subscription button only on a paid tier. The distinction is worth internalising: the handle is public, the display name is private. See Privacy, data and the vault. Billing & Subscription Your current plan, with links to the Store, the payment provider's billing portal, and cancellation. See Plans and subscriptions. Chat Defaults A Reset to defaults button that restores every chat-related default on this page after a confirmation. Generation Settings - Default Message Length (default 100, range 10 to 600, 150 max on a guest session): How long replies may be, in tokens. - Default Creativity (default 0.7, slider spans 0.1 to 0.9): Sampling temperature, shown as a percentage. - Your Voice (default none): The voice used to read your own messages back in chat. Empty means no narration of your lines. The base model price includes the first 100 tokens. Every additional 100 adds +1 CGC per message. See How credits work. Global Style Override - Default Style (default off): A lightweight style preference layered under everything else. Presets: off, dialogue-led, story-led, and one for restricted content that is only offered to eligible accounts. - Custom Styles (Premium and Ultimate): Reusable style prompts of your own, up to 500 characters each. Conversation-level settings override this. Removing a custom style that is currently selected resets the selection to off. AI Model Category pills plus a card per model showing its per-message credit cost. Picking one sets your account default. See Choosing a model. Default World The five scenario-engine toggles, each with a badge stating exactly what it costs. See World toggles for what each one changes at runtime. Default Living Memory The six memory sliders, with a live badge showing the resulting depth tier and cost multiplier. See Memory and recall. Default Director Records whether you want the director on by default, and feeds the cost estimate. See The director for what actually decides whether it runs. Character Settings - Use creator's recommended settings (default on): On by default. New chats start from the character creator's tuned model, creativity, length, world toggles, memory, voice, style and director instead of your own defaults. Turn it off to always use yours. Your Persona Create and manage the character you play, and choose an account default. See Personas: who you are. Default Memory Scope Whether memories stay in one thread or are shared across conversations with the same cast. See Memory and recall, including the caveat about what this currently does. Estimated Cost A read-only summary that runs your current defaults through the real pricing function and shows the resulting per-message cost. Auto-router selections show "varies" because the price depends on which model the router picks. Preferences - Content rating: Whether restricted content is shown to you. Requires eligibility: see Age and identity verification. Hidden entirely for guests and in app-store builds. - Theme (default dark): Dark, light, or follow the system. Stored on the device only, and works without an account. - Personalized Recommendations (default on): Orders what you browse by which characters you open, revisit, add and search for. Derived tag signals only. Never your chat text, and never anything from rating-restricted content. - Reset Profile: Clears the recommendation profile. Only shown while personalization is on. - Confirm Settings on New Chat: Whether the mode-selection dialog appears when you start a chat. On by default. Private Chat Vault Client-side encryption for selected chats, which are stored as ciphertext instead of readable server-side text. See Privacy, data and the vault for the full picture, including what it does not cover. Referral Program Your referral code with a copy button and a share action, plus counters for total referrals and credits earned. Both you and the person you invite receive 25 CGC, for up to 20 invitations. Source: shared/constants.ts:850 and worker/src/routes/commerce.ts:730. Danger Zone One action only: Delete Account. It permanently removes your account, conversations, credits, cosmetics and subscription. You must type DELETE to confirm, and it cannot be undone. FAQ A short accordion of the most common questions, each linking into these docs. Applies to: /settings --- ## Content ratings and moderation How content is rated, who decides, and what a rating changes for readers and creators. Every piece of content carries one of two ratings: safe, or restricted. The rating controls who can see it, not whether it may exist. How a rating is decided Not by the creator alone. Every save runs through screening before it lands: - Images are re-fetched and classified. Every image on the item must point at this platform's own storage, and the actual bytes are checked. Anything illegal is refused outright. - All text is screened. Every string in what you saved is normalised against obfuscation and checked. - The verdict can only ratchet up. If the screen finds restricted material, the item becomes restricted regardless of the label you chose. Labelling something safe cannot keep it safe. - Downgrades are re-verified. Moving an already-restricted item back to safe only succeeds when the screen can actually confirm it, including re-checking images the save did not itself carry. This means an item self-heals: something wrongly marked restricted goes back to safe on a clean re-save. Source: worker/src/routes/content.ts:327 guardRatingDowngrade. A moderator can pin a rating. Once pinned, re-saving will not clear it, which is the point. Source: worker/src/routes/admin.ts:192. When the classifier cannot be reached, a public save is refused rather than allowed through. Private drafts still save. Failing closed is deliberate. What a rating actually changes - Catalogue listings: A viewer who is not eligible sees only safe items. This is enforced on the server, so it applies to the whole catalogue and not just the visible page. - Opening a single item: A restricted item returns an eligibility error to a viewer who is not verified, except its owner, who can always read their own work. - Images in the gallery: Restricted images are blurred with a badge for viewers who are not eligible. - Marketplace listings: Listing a restricted item forces the listing to that rating. - Comments: A comment inherits the rating of the thing it is on. What happens during a conversation The rating on a character does not decide what happens in your chat. Your own account status does. - Eligible viewer: Replies stream live. An unconditional check for illegal material still runs on both your input and the model output. - Everyone else: The conversation is steered towards safe content in character, rather than producing refusals. Replies are checked before they are shown; anything that fails is displayed as blurred text of the same shape rather than being silently dropped. Steering in character is a deliberate choice: a character finds a reason to change the subject instead of breaking the scene with a refusal message. Callers on the native mobile apps are always moderated, whatever their account status, because of app-store policy. The full experience is on the website. Reporting something Content you think is mis-rated or breaks the rules can be reported from the item itself. See Getting help and reporting content. --- ## Age and identity verification What is required varies by country, across five tiers, from nothing at all to a full identity check. What you have to do to unlock restricted content depends on where you are. Five tiers exist, and your country decides which one applies. Tier | What is required 0 | Nothing beyond being signed in. 1 | A single confirmation that you are 18 or over. 2 | Your date of birth, which must show you are 18 or over. 3 | Date of birth plus a government-ID identity check. 4 | Restricted content is unavailable regardless of verification. An unrecognised country defaults to tier 2. If the tier cannot be resolved at all, the system fails closed to tier 3, the strictest one that still has a path, rather than guessing low. Rules that are easy to miss - The tier only ever ratchets up. The stricter of your detected country and your stored country wins, so a connection from elsewhere can tighten the requirement but never loosen it. - The server does not trust the client. Your verified status, your over-18 status, your tier, your region and your identity result are all derived on the server. Sending them from the browser does nothing. - The single-confirmation shortcut only works in tier 1. In tier 2 and above it computes as an age of zero and leaves you locked. - Guests cannot verify at all. The request is refused for anonymous sessions. When identity verification is switched off Identity verification is behind a master switch that is currently off. While it is off, accounts in a tier-3 country keep the full safe experience but cannot unlock restricted content at all, and the interface says verification is unavailable in their region rather than offering a dead-end flow. Source: shared/constants.ts:699 (PERSONA_VERIFICATION_ENABLED). Where verification is triggered From the content-rating row in Preferences on Settings. Turning the control on when you are not yet verified opens the verification dialog instead of toggling. Where an identity check is the remaining step, a Verify button replaces the control. Administrator accounts bypass every one of these checks, on the server as well as in the interface. --- ## Privacy, data and the vault What is stored, what is public, what encryption covers, and how to delete everything. What other people can see - Your handle: Public. It appears on your published content and your comments, and it is what a creator profile is keyed on. - Your display name: Private. Only you see it. - Your email: Never shown to other users anywhere. - Published content: Whatever you have ticked the public switch on. - Conversations: Never public. A creator profile exists only for accounts that have claimed a handle, and it is reachable only by direct link. There is no creator directory and no way to search for a person. The private chat vault The vault encrypts selected chats on your device, so what reaches storage is ciphertext rather than readable message text. 1. Enable it: Choose a passphrase of at least 10 characters. This requires a linked account, so a guest session cannot enable it. 2. Unlock to read: The key lives in memory for the session. Locking clears it. 3. Disable if you want: Disabling turns the feature off. It does not decrypt content that is already vaulted. If you lose the passphrase, vaulted content cannot be recovered by anyone, including support. That is what makes it a vault. Migrating existing chats into the vault does not currently work. The control is present but reports that the migration is temporarily unavailable. The vault protects chats going forward. Source: web/src/views/user/Settings.tsx:245. Recommendations Personalized recommendations are on by default, and are inert if you decline analytics in the cookie banner, because the events they learn from are never recorded without that consent, so there is nothing to build a profile from. They store a derived tag profile: which characters you open, revisit, add and search for, weighted by how recent each was. They never read your chat text, and nothing from rating-restricted content ever enters the profile: not the tags, not the fact of the open. You can clear the profile at any time from Settings, and switching the setting off stops it being used. Deleting everything Delete Account in the Danger Zone of Settings permanently removes your account, conversations, credits, cosmetics and subscription. You type DELETE to confirm. There is no undo and no grace period. The app currently renders its terms and privacy text on the sign-in screen as plain wording with no links, and the terms and privacy pages exist in the codebase but have no route. Until that is wired up, ask support for a copy. See Getting help and reporting content. Applies to: /privacy, /terms, /ai-transparency, /for-ai --- ## Getting help and reporting content The assistant, bug reports, support tickets, and how to report a piece of content. The support dialog has three ways in, and they go to different places. - Assistant: Answers usage questions from these docs: where things live, what something costs, why an option is not showing. Limited to a number of messages per session. - Bug report: For something that is broken. Include a severity and what you were doing when it happened. - Support ticket: For anything a human needs to look at: billing, account access, an appeal. The assistant is fastest for "how do I" and "what does this cost". Use a ticket when something needs a decision or a change to your account. Reporting content Individual characters, scenarios, modifiers, lore packs, stories and images can be reported from the item itself. Reports go to a moderation queue where a person reviews them and can re-rate, unpublish, or pin a rating so it cannot be changed back. See Content ratings and moderation. What to include - What you expected and what happened instead. - The page you were on, and the exact name of the character, story or item. - Whether it happens every time or only sometimes. - For anything about credits: what you did, and what your balance was before and after. --- ## The chat-app bots Playing chazz.ai from Discord, Telegram and the rest, and connecting your account to them. The bots are the same engine, the same characters and the same memory as the website, reachable from a chat app. They are not a cut-down version: every tab and panel on the site has a command, and a feature that ships here works in them the same day because they call this API rather than carrying their own copy of it. The install links are at the bots page. Using one without an account Anyone can talk to a bot straight away, with no sign-up, up to a daily message allowance that resets at midnight UTC. Pictures and voice clips spend real money to produce, so those need an account behind them. See How credits work. The free allowance is per person, not per server, and it is keyed to your platform identity rather than to a device. Leaving and rejoining a server does not reset it. Connecting your account 1. Ask the bot for a code: Send /link. It replies privately with an eight-character code, good for fifteen minutes and usable once. 2. Paste it into Settings: Open Settings and find Chat apps under Connections. 3. That is it: Your credits, premium, library, personas and settings are now in the bot, and every scene you play there appears on the site. The code goes from the bot to you, never the other way. No bot will ever ask for your chazz.ai password, e-mail or username. A username is public, so typing one proves nothing, and anything that asks for one is not us. Disconnecting is done from Settings rather than from the bot, so nobody can disconnect you from a server. Your conversations stay where they are either way. In a server or group - Replies are private by default: Only the person who asked sees them, so the bot does not take over a channel. A server owner can change it with /visibility public. - Who pays: /billing self means everyone uses their own connected account, or the free tier. /billing host puts every scene in the server on the host account and its credits, with a daily ceiling. - Where it answers: /channel allow confines it to one channel, /channel deny keeps it out of one. - Shared scenes: /party puts a whole channel into one scene, where the cast answers everybody and knows who said what. Restricted content The bots steer a scene away from restricted material by default and point here instead. Where it is opened at all it requires a connected account that has cleared the age gate. See Age and identity verification and Content ratings and moderation. Even then it is only delivered where everyone who can read it has cleared the same gate: a one-to-one conversation, or a room the platform itself flags as age-restricted. It is never posted into an ordinary shared channel, whatever a server has configured. What a bot stores - Your platform id as a one-way hash, so the daily allowance counts correctly. Not reversible and not shared. - The scene you are in, meaning which character and which settings, so a conversation survives between messages. - A count of turns and commands, with no message text in it. With an account connected, your conversations are stored here under that account and encrypted per owner, exactly as they are on the site. See Privacy, data and the vault. Sending /privacy to any bot says the same thing in three lines. Applies to: /bots --- # Admin tools The operator console. Visible only to accounts with the admin role. ## Admin: dashboard, config and tooling The operator console: platform health, global configuration, the model catalogue, analytics and developer tools. Every screen in this section is behind the admin guard. If you do not have the admin role, these routes do not exist for you. - Dashboard: Account counts and platform health at a glance. /admin - Config: Global configuration: the values that back the defaults described elsewhere in these docs. /admin/config - Models: The model catalogue: which models are enabled, their tier and their per-message credit cost. See Choosing a model. /admin/models - Insights: Acquisition, the signup funnel, and every running experiment. /admin/insights - Dev tools: Operational tooling. /admin/dev Admin status exists in two places, the platform role and an app-level flag, and they can disagree. Every gate that matters honours both, so an account that is an admin in only one of them still passes. Anything you add must do the same. Admin accounts bypass the content-rating and age-verification gates on the server as well as in the interface. See Age and identity verification. Applies to: /admin, /admin/config, /admin/models, /admin/insights, /admin/dev --- ## Admin: content catalogues Curating characters, scenarios, modifiers, lore packs, stories, images and campaigns. One screen per content type, each listing every item on the platform rather than only your own. These are the screens used to seed the catalogue, promote items to featured, and correct ratings. - Characters · Scenarios · Modifiers · Lore packs: The four building blocks. See Characters, Scenarios, Modifiers and Lore packs. - Stories · Images: The media catalogues. See Stories and Images. - Campaigns: Campaign worlds and their economies. See Campaigns. Featured status is what the Featured filter on Explore reads. It is stored alongside the moderation flags and merged rather than replaced, so setting it does not clear a rating decision. Applies to: /admin/characters, /admin/scenarios, /admin/modifiers, /admin/lore, /admin/stories, /admin/images, /admin/campaigns --- ## Admin: users, moderation and support Accounts, the content report queue, and the support inbox. - Users: Accounts, roles and identity. Anonymous sessions are distinguishable from registered accounts. /admin/users - Reports: The queue of reported content. /admin/moderation - Support: Bug reports and support tickets raised from the support dialog. See Getting help and reporting content. /admin/support The three moderation verdicts - Approve as safe: Sets the item to safe and clears any pinned rating, so the automatic screening governs it again from the next save. - Mark as restricted: Sets the item to restricted and pins it, so the creator cannot re-save their way back to safe. - Remove: Sets it to restricted, pins the rating, and unpublishes it. Source: worker/src/routes/admin.ts:191-193. See Content ratings and moderation for how the automatic screening interacts with a pinned rating. Applies to: /admin/users, /admin/moderation, /admin/support --- ## Admin: coupons and payouts Issuing coupons and reviewing Creator Program payout requests. - Coupons: Create and revoke coupon codes. A coupon can grant extra credits, a temporary membership, or a percentage discount. See Store. /admin/coupons - Payouts: The review queue for Creator Program requests. See Creator Program and creator profiles. /admin/payouts - Reward ops: What the free-credit ladder is paying out, plus the kill switch and the monthly earn ceiling. The page is built to answer whether it is being farmed, so the concentration by network sits beside the total. /admin/rewards - Guest access: What a signed-out visitor may do, per capability, and the funnel read back per experiment arm. Browsing can never be gated here; the registry holds interactions only. /admin/guest-access A payout request debits the requester's credits the moment it is made. Fulfilling it completes the exchange; denying it refunds the credits in full. Leaving a request pending leaves someone's credits held. Applies to: /admin/coupons, /admin/payouts, /admin/rewards, /admin/guest-access --- ## Admin: the bot fleet Watching, throttling and switching off the Discord, Telegram and Kik bots. The fleet runs as a separate Worker that holds no engine of its own: it resolves a reader to a chazz.ai identity and then calls this API as them. So the controls here are about who may use the bots and how much, not about what they can do. /admin/bots The controls sit above the figures on the page on purpose. This page is opened in a hurry to switch something off, and scrolling past a chart to reach the switch is the difference between thirty seconds and three minutes. The switches - Fleet enabled: The master switch, across every platform at once. Takes effect within about thirty seconds with no deploy. Open scenes are untouched and come back exactly as they were. - Per platform: Each platform has its own switch, free-tier allowance, rate limits, default visibility, billing mode and content ceiling. - Commands and groups: Switch off one command or a whole group. A switched-off command tells the reader so and points here, which is better than a silence. - Block lists: A reader or a server, refused before any other check. The reader key is the hashed id from the ledger, not a username. - Fleet ceiling: Turns a minute across every platform. The last line before a runaway costs real money. A command marked with the currency mark spends provider money, and is already refused to anyone without a connected account regardless of what is set here. No configuration can open that path. The content ceiling steer sends everyone to the site instead. verified_private opens restricted scenes to a connected account that has cleared the age gate, delivered only to that one person. verified_rooms additionally allows a room the platform itself flags as age-restricted. A server owner may set their own server stricter than this, never looser. Reading the figures - Connected an account: The number the fleet exists to produce. Shown as a percentage of everyone reached, which is the comparison that matters rather than the raw count. - Refused: Quota, throttle and gate together. A large number here is usually a setting rather than a fault, so check the free allowance before assuming something is broken. - Busiest servers: One server far above the rest is either the fleet working or the fleet being farmed. The id shown is what goes in the block list. Applies to: /admin/bots --- # Frequently asked ## What kind of content is allowed? Every character, scenario, story and image carries one of two ratings: safe, or restricted. Restricted material exists but is gated. It needs an eligible, verified account, and it is unavailable entirely in some regions. Ratings are decided by automatic screening on save, not by the creator alone, and anything illegal is refused outright. ## Why is some content unavailable in the mobile app? The Apple and Google app stores apply their own content policies, so callers on the native apps are always moderated regardless of account status. The full experience is on the website. Open chazz.ai in any browser on the same device. Your account, characters, conversations and credits are the same on both. ## How do I unlock restricted content? Sign in on the website, then open Settings and use the content-rating control under Preferences. What it asks for depends on your country: nothing at all, a single 18-or-over confirmation, your date of birth, or a full identity check. Some regions have no path at all, and identity verification is currently switched off, so accounts in countries that require it cannot unlock restricted content for now. ## How does the credit system work? Credits are called CGC, and one CGC is A$0.01. Guests get none at all. A newly registered account gets 50 credits the moment it is created and another 50 the first time it comes back on a later day, 100 in total, and they stay until you spend them. Two models cost zero credits per message at default settings, so you can keep chatting without a balance, though a longer reply, memory deeper than the default, a second character in the turn, or a director or evolution pass will each still cost something. Packs and subscriptions add separate credit pools. ## Can I earn credits for posting about chazz.ai? Yes. Post about it anywhere public, the site itself or a character, story or image you made, and if the post reaches 50 likes or upvotes send us the link through the Contact tab under the Social post reward claim category. A person checks it and adds 500 credits. A post that goes considerably further is worth a month of Premium instead, which is our call rather than a second threshold. Including your invite code is optional. It needs a registered account, one claim per post, up to three paid claims a month, and bought engagement is refused. ## What makes chazz.ai different? Conversations keep state. Characters build memories and can drift over time, scenes have a location and a clock, and with the living world switched on the world produces its own beats when you go quiet. On top of that, everything is authorable: characters, scenarios, modifiers and lore packs, with macros and a scripting language for behaviour that changes with the situation. ## Can I create my own characters? Yes, and more than characters. You can build characters, scenarios, modifiers and lore packs. Characters, scenarios and modifiers are made in Customize; lore packs have their own editor in your Library. Keep them private, publish them to the catalogue, or list them for sale in the Marketplace. ## Is my data secure? Conversations are never public. Your email is never shown to anyone, and your display name is visible only to you. Your handle is the one public identifier. For anything sensitive there is a private chat vault that encrypts selected chats on your device before they leave it, so what is stored is ciphertext. You can delete your account and everything attached to it from Settings, permanently and without a grace period. ## What do I get by signing up? Saved conversations that follow you between devices, a library, personas, the credit wallet and the 100 welcome credits, plus multiplayer, campaigns, the Turing Test, cosmetics, gifts and the Marketplace. Guests can browse, read stories and chat, but get zero free credits and cannot save anything. ## Which models are free? Two models cost nothing per message and are available to every account. They are labelled as free in the model picker. Premium models need a Premium or Ultimate plan. Asking for one without it does not fail, it quietly runs the free fallback instead and charges accordingly. ## Why did that message cost more than I expected? A turn is the model price, plus one credit for each extra 100 tokens of reply length beyond the first 100, multiplied by your memory depth (up to double at maximum), plus flat charges for anything that actually ran: a second speaking character adds two, the director adds one, evolution adds one, a memory extraction adds two. The director and evolution charges are waived on Premium and Ultimate. The estimated-cost card in Settings runs your defaults through the real pricing function. ## Why does my character forget things? A conversation keeps only its most recent messages word for word and summarises the rest, then recalls a handful of stored memories per reply. The defaults are twelve verbatim messages and six recalled memories. Raise them in Settings or in the conversation itself, but memory depth is a cost multiplier, and it is also clamped down to whatever the chosen model can actually hold. ## How do I make characters call me by my name? Create a persona, the character you play, under Your Persona in Settings, and set it as your default. A persona is a name and a description, and it is injected into the prompt so characters address you as that person. Any conversation can pick a different persona or none at all. ## I changed a setting and nothing happened. Why? The Settings page sets defaults for NEW chats. An existing conversation keeps whatever it was saved with, and a character may have shipped its own recommended settings that were folded in when the chat was created. Change the setting from that conversation's own settings panel instead. A conversation always wins. ## If I regenerate a reply, do I lose the old one? No. Regenerating forks the conversation: the old reply stays on its own branch and the new one starts another, and you can move between them. Each branch keeps its own history and its own memory, and never sees what happened on a sibling. Every regeneration is a fresh generation and is billed as a normal turn. ## I set my story to Published but nobody can see it. Why? The public catalogue reads the public switch, not the status field. Setting the status to Published does not publish anything. Tick the public switch on the story instead. ## How much does story narration cost? Narration is 80 credits per 1,000 characters, and a speaker-attribution pass adds a flat 10 credits when it runs. In practice a short story is roughly 250 credits, a medium one around 650, and a long one around 1,200. A single narration job is capped at 50,000 characters, and regenerating audio is charged like a fresh generation. ## What does the Marketplace charge to sell something? Ten percent of the sale price, rounded down. You see the fee and your take before you list. Prices run from 10 to 50,000 credits, and a sale clones the item into the buyer's account as their own private copy. Your original is untouched. ## Can I turn credits into money? Through the Creator Program, as prepaid gift cards: 25,000 credits for a $10 card, 50,000 for $25, or 100,000 for $50. Credits are debited when you make the request, a person reviews it, and a denial refunds them in full. It is a manual process, not an automatic payout. ## Can I play with other people? Two ways. A multiplayer session is a shared room where two to four people talk to the same character, with settings controlled by the host. A campaign is a persistent, procedurally generated world played as a text adventure under a pseudonym. Both need a registered account. ## How do I report something or get help from a person? Content can be reported from the item itself, and the report goes to a moderation queue. For anything else, the support dialog has three tabs: an assistant for usage questions, a bug report form, and a support ticket for anything needing a human: billing, account access, or an appeal.