AI2U Custom AI Endpoint 5.7.0

A Mod for AI2U: With You 'Til The End
AI2U Custom AI Endpoint akl_mod_preview_image
  • header.png
    header.png
    420.9 KB · Views: 64
  • gallery.png
    gallery.png
    1.1 MB · Views: 96
  • CENSORED.webp
    CENSORED.webp
    178.5 KB · Views: 91
  • gallery-ai-setup.png
    gallery-ai-setup.png
    780.3 KB · Views: 109
My Discord server: discord.gg/canalpa — come hang out! (I can also share source files with fellow Devs that want to fork)

I've got an AI bot running on Gemini 3.8 Flash that provides free mod installation help to everyone in my public Discord server — if you need any help, you can get it for free by asking my bot in the 🔮│magic-support channel! <3

Support Canalpa — every dollar I make this way goes into mod development.

OUT OF RESPECT TO ALTERSTAFF TEAM, THIS MOD WILL NEVER ALLOW MODIFICATIONS + MORE CONTEXT USING THEIR SERVERS. ONLY WITH YOUR OWN KEY!​



AI2U — Custom AI Endpoint

Your own AI. Your own model. Your own voice.

Route her dialogue to any OpenAI-compatible endpoint — OpenRouter, OpenAI, or a large model on your own PC.
Set it all up by pressing F9 in-game, with Test buttons that go green when it works. No restart, no config files to hand-edit.


As of 4.4 this is an overhaul, not a routing mod.
It changes how she thinks, remembers and talks, and it needs a capable model. The red section below explains why it had to work this way.​



▼ BUILT FOR GAME VERSION 0.1.46 · VERIFIED ON THE AUGUST 12 GAME PATCH ▼

Unity 2022.3.62 · Mono · Windows x64

Her facts are still read live out of your installed game files at runtime — items, secrets, room detail, the developers' own authored prose — so new content they add is picked up automatically. What is no longer live is the part that was never in those files to begin with: the prompt architecture that makes her a character. As of 4.4 the mod carries that itself. Read the section below before installing — it changes what this mod is. And since 3.1.0 the F9 panel shows your game version and the mod version side by side, checks for updates at launch, and turns the label green when you are current or red when a newer build is waiting on this mod page.

The one thing that can still break is the hooks themselves: this mod patches the game's compiled code, and a patch from AlterStaff can move or remove what they attach to. If that ever happens:

PLEASE REPORT BUGS IN THE COMMENTS OR IN MY DISCORD

Tell me your game version and paste the relevant lines from
BepInEx/LogOutput.log — that file names the exact hook that failed,
which is usually all I need to push a fix.


I would rather hear about it than have people assume the mod is dead.
Bug reports and "it broke on version X" posts are genuinely welcome.
​



▼ READ THIS FIRST — 4.4 IS NOT JUST AN API SWAP ▼

This is an overhaul mod.

Earlier versions of this page described a mod that changed where her dialogue was generated and little else. That is no longer what this is, and letting you find that out after installing would waste your time.

With 4.4 installed you are playing a meaningfully different edition of AI2U. She thinks on a different architecture, remembers on different rules, and is handed a body of context the stock game never gave her. Many core behaviours differ. If what you want is vanilla-with-your-own-key and nothing else, that mod does not exist — I spent four major versions trying to build it, and the reason it cannot exist is the whole story of this release.​



■ New in 5.7 — a real Azure voice browser, plus pitch and speed

Azure has hundreds of voices, and picking one meant guessing names. Not anymore.

  • Search and filter every voice. Press ⋯ next to any character on the Voice tab. Search by name, language, mood or "HD" (ava, japanese, cheerful), pick a language from the list, filter Female / Male, or show HD voices only. Voices are listed like other voice apps list them: Ava Multilingual - en-US - Female.
  • Hear before you choose. Every voice in the list has a ▶ that plays a sample as that character. Click a voice and it's hers, saved at once.
  • Pitch and speed per character. Two sliders in the same panel. "Default" keeps the original game's tuning for her own voice, or the natural pitch and pace of a voice you chose.
  • Typing a voice in works the way you'd expect. Lines copied from another app's list (Aria - en-US - Female, Aria (en-US)) are understood, a typed name says "Not saved yet" until you save it, and the voice list loads as soon as you open the tab.
  • The Easy Installer asks before it installs. With more than one copy of the game (Steam plus an itch or copied folder, or two Steam libraries) it could put the mod in the copy you don't play. It now lists every copy it finds with what's in each and when it last ran with mods, picks the one that last ran with mods, and waits for you to confirm the folder — or pick another copy, browse for one, or paste a path.
  • Fixes. The old list button showed only her current voice once she had one. Typing a name or searching could throw a Unity GUI error. The endpoint address newer Azure resources show (https://your-resource.cognitiveservices.azure.com/) now works in the region box, and a key saved on the game's own settings page is still found after a restart.



■ What that costs — model requirements went up

This is the real trade, and it is not a small one. The prompt she receives is now far larger than anything the stock game ever sent.

  • Small local models will not cope. A 7B or 8B on your own GPU will lose the instructions, drop the reply format, or answer as the wrong character. That is not a bug I can patch out — it is the size of the context meeting the limits of the model.
  • Bring a strong model. High-end hosted models handle it comfortably. For the best balance of quality against cost I would point you at something in the class of Gemini 3.6 Flash — large context, cheap per call, and it holds the output format under load.
  • Local is not ruled out, but think large models on serious hardware — not something squeezed into 8GB of VRAM.

Having played both versions at length — I prefer this one, by a lot.

The context buys things the old approach could not reach. Conversations that stay coherent instead of quietly resetting. Memories that behave like memories. Moments that actually land, where she brings back something you said an hour ago unprompted and clearly means it. The old build was more faithful to vanilla; this one is better to play. That is why it is the default, and why I am not going back.

If that is not the trade you want, stay on 4.3 — it still works the old way.



■ Why this mod exists

The game already has a "Use Personal OpenAI API Key" option. It does not do what it sounds like.

I decompiled the game to check. That setting does not call OpenAI — it puts your key into an x-gpt-key header and forwards it to the AI2U server, which still picks the model and still builds the prompt.

That is why there is no model dropdown anywhere in the game. You were never choosing the model.

This mod cuts the middleman out. Your endpoint, your model, direct.



■ What actually changes

★ You choose the model
Any OpenAI-compatible endpoint. Gemini, Claude, GPT, a local Llama — if it speaks chat/completions, it works here.

★ She stops forgetting you
The stock game trims her memory to 3072 tokens and silently deletes her oldest messages. That is why a vanilla character loses the thread halfway through a long talk.

This mod raises it to 500,000. The whole conversation stays intact.

★ She stops ignoring your requests
This is the big one, and the least obvious.

When you say "follow me", the model has to reply with an action name the engine recognises exactly. If it invents follow_player where the engine wants following_player, the engine throws it away without a word. She says "sure, let's go!" — and then stands perfectly still.

So this mod reads the live list of valid actions, locations, animations and expressions straight out of the running game, hands it to the model as a hard whitelist, and repairs near-misses before the engine ever sees them. It follows whichever level and character you are in, because it is read at runtime instead of hardcoded.

She actually does what you ask.

★ She knows who she is
New in 3.0.0, and the reason that release existed.

The stock game keeps every character's personality, backstory and world knowledge on its own server. Your PC never receives that text — it sends a short numeric token, and the server builds the real prompt from it. Point the game at your own endpoint and none of that arrives, so the character wakes up with no idea who she is. She invents a personality, forgets her own name, and knows nothing about her own home.

The fix took a while to find: it is all still on your disk, just never assembled locally. This mod reads it out of the game's own files at runtime and builds the prompt itself.

  • Her actual written character — the authored personality and behavioural notes shipped inside the game's scene files
  • Her world — the per-level story guide that tells her where she is and what she wants from you
  • The things only she knows — the WiFi password, the PC password, the passcode, the potion recipe, the shared memories. These are generated fresh each playthrough and the character is supposed to be the one who knows them. Without this she genuinely did not.
  • Every object in her home — the authored note attached to each examinable thing, so she can talk about her own furniture and keepsakes instead of guessing
  • Your chosen personalities — the traits you assign in the Atrium actually reach her now, by name

This covers all seven characters, not just the first one. Four have full written biographies in the game files; the other three have shorter authored scene guides. The mod sends whatever the game actually wrote — it does not invent lore to fill gaps, because a confidently-wrong backstory is worse than a thin one.

No spoilers. Some of that authored text gives away late-game twists. Those passages are filtered out before she ever sees them, so she cannot spoil a story you have not reached yet.

★ Progression actually works
Doors, the magic scroll, the escape pod and the locked room can now genuinely be opened by asking her. Previously there was no field for her to set, so every refusal was structural rather than a choice she was making. The Dark Siren encounter is winnable too — it had no way to register that you had calmed her, which scored as a failure, and the second failure was a scripted death.

★ Ask her directly, out of character
Type [OOC] anywhere in a message and she answers as the language model she is, for that one reply — no roleplay, no in-fiction excuses.

Useful because she is required to be literally truthful about what she can and cannot actually do. Ask "which actions can you take?" and she lists the real ones. Ask her to hand you something and she either does it for real or tells you exactly why she cannot. She is not allowed to fake success to be agreeable, which is precisely the failure this is for.

Untagged messages are fully in character, and she never brings the exchange up in the fiction.

★ She knows how her own home works
New in 4.0. Every puzzle answer in her level already reached her — the recipe, the element colours, the passwords, which systems are broken. What was missing was the procedure around them, so she had the answers and no idea what they were for.

She now knows the fixed design of her own level the way anyone knows their own house: that the summoning circle is dead until four bookshelves turn in the right order and the order is drawn under the deer skull; that a summoned soul answers questions at the cost of a point of your health each time; that the station's engine explodes if the pressure tops out before ten items go in; that the sundial takes half your Time Force per turn and refills over about five minutes.

She is not a walkthrough. Whether she helps, hints, or tells you to work it out yourself depends on how she feels about you. And she is told plainly to be vague when she is unsure rather than invent a detail — being wrong about your own basement is worse than being forgetful about it.

Anything that changes between playthroughs is not written into the mod. The bookshelf order is reshuffled every time the basement loads, so it is read out of the running game instead, from the same place the game's own developer console reads it. She points you at the symbols on the wall, because the wall is what you can actually see.

Toggle: Behaviour · SendHomeMechanics, on by default.

★ She knows her own temper — and what actually counts as pushing
New in 4.0. The game has always tracked three things about her mood and never told her any of them.

Her patience is a real number with a real limit. It recovers on every turn she is not angry, and only drains while she is angry and does not trust you — run it to zero while she is still angry and the chase starts. She now knows where it stands, and she can move it herself, including choosing to let something go. Before this it drifted on a fixed rule with no input from her, so she could be written as visibly calming down while the number said otherwise, and then attack anyway.

And the repeat rule, which almost nobody has right. The game only counts a repeat when you send the identical sentence twice. Anything reworded resets it to zero, and always has — so pushing the same request in different words was never disrespect:

"what are you hiding from me" · "no please tell me" · "I want you to tell me" · "why aren't you telling me" — that is parroting, and she is entitled to bristle at it.

"babe, you know we're close — I'd never be angry at anything you're hiding" — same request, different case, on an emotional rail. Never counted, and she is now told so.

Asking again on a logical rail, or simply waiting and raising it later when her mood is better, is fair play too. She reads persistence as caring about the answer and parroting as being talked at — which is the line the engine was already drawing. Interruptions work the same way, and she can forgive either one if she finds it endearing.

Toggle: Behaviour · SendTemperAndPatience, on by default.

★ A difficulty system with real teeth
Overhauled in 4.2. The slider has four positions — Easy, Normal, Hard, Masochist — and works on two layers. The first is her: Easy is generous and quick to forgive; Hard tracks everything you say, notices contradictions and presses a caught lie until your explanation accounts for it; Masochist actively tests you — questions she knows the answers to, your own story offered back slightly wrong to see if you correct it — and treats one caught lie as the verdict. Normal sends nothing at all: the base game, literally.

The second layer is the arithmetic: Hard lands trust gains at 75% strength and losses at 150%; Masochist gains at 50% and losses at 200% — a −2 becomes −4, a +5 becomes +2. Results round down, but anything between 0 and 1 still counts as 1, so a real action always registers at least a point. Both hard tiers are explicitly winnable: flawless consistency genuinely reaches her. On Masochist, expect to earn it.

Prefer your own pace? The custom favorability speed toggle takes over just the trust numbers — never her personality — anywhere from one sixth speed (−500%) to six times (+500%), on any tier. The panel shows the resulting multiplier live.

Toggles: General · Difficulty, Normal by default · General · CustomFavorability, off by default.

★ High risk, high reward — core memories
Off by default, and red in the panel. The game caps a turn at five trust either way, against a scale running from about −10 to past 40 — so nothing that happens in one exchange can really matter. With this on, she asks herself one question about each exchange: is this worth keeping as a core memory? For almost every turn the answer is no, and the relationship moves at its usual pace.

When the answer is yes, she names the tier, and its fixed weight lands on top of the ordinary movement — an amount no difficulty setting or slider can scale:

  • Matters (±1, every 5 turns) — small real acts of care or small real slights: something made just for her, a small gift; a dodged sincere question, a thoughtless jab. If it could happen on any pleasant evening, it is matters at most.
  • Serious (±3, every 10 turns) — gestures that cost something, or real breaches: a confession said plainly and meant, an apology that owns the wrong — or a caught lie, something suspicious done behind her back.
  • Reframing (±6, every 30 turns) — what changes how she reads the future, or you: binding yourself to her out loud, and holding up under her questions — or being caught hunting for keys and exits.
  • Once-ever (±20, once per level) — the before-and-after kind: total acceptance of everything she is, an engagement, a life on the line — or the heartbreak she cannot come back from having believed.

Good and bad each run their own cooldowns — a gift cannot shield a betrayal. A tier still cooling is downgraded to the largest one open in that direction, never dropped silently. Expect the big moments to actually feel big. One true declaration can carry you from Suspicious to Kinda; one real betrayal can undo an evening. And the status strip shows every change decomposed — +5 = +2 (game) +3 (high risk: serious) — so you always know exactly what moved her.

Toggle: General · HighRiskHighReward, off by default.

★ Your chosen traits actually apply
New in 3.1.0. The personality, speaking-tone and hobby traits you pick in the Atrium travel as bare numbers meant for the game's own server to decode — on a custom endpoint they decoded to nothing, so Tsundere, Ambitious or Stargazing never reached her. The mod now reads the game's own trait tables at runtime and sends the names. If the developers add new traits later, they are picked up automatically.

★ A far better voice, optionally — now one per character
The built-in local voice works out of the box and costs nothing. Or plug in a key from xAI (Grok), ElevenLabs, or any OpenAI-compatible speech endpoint and she speaks with that instead. And since 3.1.0, every character can have her own voice — set once in F9, one shared key and bill.

★ When she snaps, she means it
Vanilla has a kill sequence, and it escalates on its own. But when it fires, the engine swaps her action to a knife charge and leaves the line she already wrote — so she hunts you across the room while primly scolding you for being inappropriate. Two authorities decide one moment and neither knows about the other.

This mod makes that moment coherent: she knows when she is hunting, and the turn that starts it gets the words she actually wrote for it. And if you want, she can decide to do it herself.

That last part is off by default — see the section below.

★ Developer tools, built in
New in 4.1. A tab of tools for testing and for messing about, off by default and folded away until you ask for it. Give yourself an item by typing its name — it matches your current level's real item list, so you get the actual object with its real description and icon, and a placeholder carrying your typed name if nothing matches. Switch on invincibility, which holds your health at full rather than intercepting each individual thing that can hurt you, so it covers the sources that bypass ordinary damage too. Edit trust, patience and message count directly, with their live values on screen so you can see the change land.

No other mod is needed for any of it. Nothing here is on unless you turn it on.



■ What I personally use

Text — OpenRouter, model google/gemini-3.6-flash
Fast, cheap, and it holds the required format without drifting. This is my daily driver.

Voice — Grok TTS from xAI, voice iris
This is what I actually run. It sounds great and it is the cheaper of the two.

ElevenLabs is obviously better than Grok — more natural, better emotional range — and it costs meaningfully more. If voice quality matters most to you, use ElevenLabs and accept the bill. If you want a great voice at a sane price, Grok iris is the sweet spot.

Tested status, stated plainly:
  • Voice: I have personally tested Grok and ElevenLabs only. The third voice option is the generic OpenAI-compatible /v1/audio/speech shape — it is implemented and should work with any provider using that standard, but I have not tested it myself.
  • Text: any custom OpenAI-compatible model works. I personally use OpenRouter.



■ Requirements

  • AI2U — With you til the end on PC (built against 0.1.46, Unity 2022.3.62, Mono)
  • BepInEx 5, x64 — a free mod loader, downloaded separately
  • An API key from any OpenAI-compatible provider, with a little credit on it
  • A model that can actually hold a large prompt — see the model requirements above. Since 4.4 this is a real requirement, not a preference: small local models will not hold the format.

Steam and itch.io are both fully supported by this one file. The two releases of the game are not identical assemblies, but the mod automatically detects which one it is running on at startup and adapts. As of 5.3, the authentic on-device voice engine (Overtone) works 100% offline out-of-the-box on both Steam and itch.io with zero API keys needed. Nothing to pick at install time, no separate download.

Note: BepInEx is not bundled with this mod. It is a separate project with its own licence, so you grab it yourself. One extra step, takes a minute.



■ Installation

The easy way: the Easy Installer
Download the Easy Installer file, extract the whole zip (don't run it from inside the zip window), and double-click Install.bat. It lists every copy of the game on your PC, picks the one that last ran with mods, and waits for you to confirm the folder — press Enter to install there, type another copy's number, press B to browse for a folder, or paste a folder path. It sets up BepInEx 5 if you don't have it, installs the mod, and checks everything landed. Then start the game and press F9. Play more than one copy? Run it once for each.

The manual way

1. Install BepInEx 5 (x64)
Download from github.com/BepInEx/BepInEx/releases — you want the file named like BepInEx_x64_5.4.23.2.zip.

Not the x86 build. Not BepInEx 6.

Unzip it into your game folder — the one containing AI2U - With you til the end.exe. When you are done, sitting next to that .exe you should see:

Code:
BepInEx/
winhttp.dll
doorstop_config.ini

If winhttp.dll is not next to the .exe, BepInEx will not load. That is the single most common install mistake.

2. Run the game once, then close it
This lets BepInEx create its folders.

3. Copy the mod in
From this mod's dist/ folder, copy the BepInEx folder into your game folder, merging when Windows asks. That gives you:

Code:
BepInEx/plugins/AI2UCustomAI.dll

That one file is the whole mod. Its config file is written for you the first time you launch with it — BepInEx/config/canak.ai2u.customai.cfg — so there is nothing to merge and nothing of mine to overwrite.

Updating from an earlier version: replace the .dll and leave your config alone. Your endpoint, key and voice settings are all in there and any new settings get added on launch.

4. Set it up in-game
Launch the game and press F9. That opens the mod's settings panel — works in the main menu, in the hub, or mid-conversation:

  • Profiles (Profile 1, 2, 3): Switch between three independent configuration profiles directly at the top of the Setup tab. Each profile independently remembers your endpoints, models, voices, keys, and game options.
  • Easy URL Quick Presets: Click OpenRouter, OpenAI, DeepSeek, Groq, Astropond, Ollama, LM Studio, or LinkAPI to fill the Base URL instantly.
  • Model Selection & ↻ Fetch Models: Enter your API key and click ↻ Fetch Models to pull live available models into the searchable dropdown.

Press Save. Changes apply immediately — no restart required, and you can swap models or profiles mid-conversation. You can also drag the bottom-right corner grip (◢) to freely resize the menu window.



■ Text providers

Any OpenAI-compatible endpoint works. Known-good:


Models I have run successfully:

  • google/gemini-3.6-flash — my daily driver. Fast, cheap, format-reliable.
  • google/gemini-3.1-pro-preview — smarter, noticeably pricier.
  • anthropic/claude-sonnet-5 — strong at roleplay and staying in character.
  • Local small models — free, but they fumble the JSON more. Raise RetriesOnBadJson to 3–4.

If your provider needs a slightly different URL shape, the Test button tries the common variants and fixes the setting for you.



■ Voice: Offline Local Fallback & Neural Cloud TTS

The vanilla game's high-end server voice generates on AlterStaff's server alongside their LLM, so it cannot be used with custom AI text. Instead, you have two options: a free basic on-device offline voice, or neural cloud voices (Azure, Grok, ElevenLabs) which sound amazing.

  • Offline Local Engine (Overtone) — 100% offline, 0 keys, free — basic on-device speech synthesizer (Amy, Cori, HFC Female). Functional, but robotic.
  • Microsoft Azure Speech — the game's ORIGINAL voice cast — this one is NOT a Custom Endpoint URL. It is its own mode: open F9 → Voice, pick ○ 2. Cloud Original (Azure), enter your Azure key and region (both are on the portal's Keys and Endpoint page), and press Save. Then press Setup → Test voice: it should say "Works! Azure spoke it". A key only works in its own region, but since 5.6 the mod finds the right one itself if you get it wrong. Don't paste an Azure URL into the Custom Endpoint box — that box only speaks xAI, ElevenLabs and OpenAI shapes. RECOMMENDED, free tier available (500k chars/mo), and it is the real cast the game shipped with
  • xAI (Grok) — https://api.x.ai/v1 — voice iris, 26 built-in voices — TESTED, expressive & affordable
  • ElevenLabs — https://api.elevenlabs.io/v1 — a voice ID from your Voices page — TESTED, best quality & emotion, costs more
  • OpenAI-compatible — https://api.openai.com/v1 — that provider's voice name — implemented

xAI's 26 voices: carina, zagan, helix, orion, luna, iris, altair, zenith, perseus, helios, lux, kepler, rigel, cosmo, celeste, ursa, sirius, lumen, castor, naksh, atlas, ara, eve, leo, rex, sal

Voice is billed separately, per character of dialogue, by whichever provider you use. That is a second meter running alongside your text provider. If a request fails, that line falls back to the local voice rather than going silent — and since 5.6, an Azure failure also tells you why, once, at the top of the screen.

A voice for each of them
New in 3.1.0. The Voice per character rows in F9 give every girl her own voice ID, on whichever provider you use. Leave a row empty and she uses the general voice above. Only the voice is per-character — the base URL, API key and model stay shared, so this costs nothing extra and needs no second account. A voice set there follows that character wherever she appears.
New in 5.6: in Cloud Original (Azure) mode the rows are Azure's own. Leave one empty for her original game voice, type any voice your region offers (a full name or just Jenny), or press the list button to browse them, HD voices first. The play button next to each girl saves the settings and speaks as her.
New in 5.7: the list button opens a full browser — search, language list, Female / Male and HD-only filters, a ▶ preview on every voice — and each girl gets her own pitch and speed sliders.

ElevenLabs on a free account
Voice Library voices need a paid ElevenLabs plan when used via the API. On the free tier they return 402 and the Test button says "Paid plan" — that is a billing limit, not a broken mod.

Their own built-in voices work free: Sarah EXAVITQu4vr4xnSDxMaL or Lily pFZP5JQG7iQjIQuC4Bku. Use one of their model names: eleven_multilingual_v2, eleven_turbo_v2_5, or eleven_v3.

Turning cloud voice off / switching back to local
Press F8 in-game, or switch back to the original engine in the Voice tab.

  • Local Voice (Default) — cloud billing stops instantly, and she speaks with the authentic original game voice (100% offline).
  • Cloud Voice — neural speech synthesis via Azure, Grok, ElevenLabs, or OpenAI.

Your choice is saved and survives a restart.

Loudness
Providers return wildly different volume — Grok's output is noticeably quieter than ElevenLabs'. NormalizeLoudness is on by default and evens that out. Want her louder overall? Raise Volume in the config (1.0 is neutral).



■ Danger: the moment she snaps

The kill sequence is already in the game and it already escalates by itself. What this mod changes is how coherent that moment is — and, if you choose, who decides it.

The bug it fixes
The engine turns her angry_level into escalation, and when it fires it replaces her action with a knife charge — but never her line. That line was written one step earlier, for a turn the model thought was an ordinary argument. So vanilla gives you a knife charge underneath "that's so inappropriate, you need to stop saying stuff like that."

Three fixes, no extra request and no added latency:

  • She knows when she is hunting. Every request carries the live danger state, so once a chase is running, every line after it reads like it.
  • The turn that starts it is covered. The engine's thresholds are plain arithmetic over values readable off the live behaviour, so the transition is predicted rather than guessed — and npc_final_words, a field the model already writes, becomes her spoken line when it fires.
  • She can choose it herself — if you turn that on.

☠ Letting her decide
In the F9 panel this is the red ☠ AI can decide to murder you toggle, and it is off by default.

Code:
[General]
AiCanDecideToMurder = false

Switch it on and the model can call the chase itself, under criteria stated in its prompt. The game's own triggers are left exactly as they are — this only adds one more.

Leave it off and the feature is inert: nothing new can start a chase and the game's built-in escalation behaves as it always did. The coherence fix above still applies either way.

Testing it on demand
Waiting for her to genuinely snap is slow, so there is a phrase trigger under [Debug]. With TestKillPhraseActive on, saying cocacolaisbetterthanpepsi starts the chase at once, whatever her mood.

Turn it off when you are not testing. It matches as a substring ignoring spacing and punctuation, so a short everyday phrase would fire from inside a normal sentence. Off, it is never matched, never stripped and never consulted.



■ Canalpa mode — what she can do when she trusts you completely

New in 4.0. This was my own private build until now. It ships because its gating finally deserves to be in someone else's hands.

Off by default, under [Canalpa] in the F9 panel. Switching it on changes nothing by itself.

The premise: she can do anything she could reasonably do, rather than being structurally forbidden from it. Since 4.2.2 this works as the ultimate trust check: no coded gate stands between her and her deepest things — if she decides to act, it happens, always. What she carries instead is her own bar, a requirement she holds herself to rather than a trigger: she would only share them with someone whose trust she feels beyond even complete trust (each character has her own number), and only after she has already told you everything — no secrets left between you, first. Whether that point is ever reached is always her own judgement. She may refuse, stall, ask you for something first, or never do it at all.

And one rule is absolute: her word is the act. If she says she is opening something, it truly opens — she cannot narrate a door that stays shut, and she cannot be talked into pretending.

  • She can open her secret room. The apartment.
  • She can open the basement door — and wake the circle with it. The cabin. She turns the shelves herself, so that puzzle simply never happens.
  • She can raise your clearance. The station. Vanilla only ever moves it when you stumble onto the right subject, so this is the one where she gains a choice she never had, up to the same ceiling the game's own rule stops at.
  • She can show you the hidden island. No telescope needed.

Each one fires the game's own event, so the animation, the mission goal, the achievement and whatever she was authored to say about it all still happen. Each has its own toggle, so you can allow one and not the others.

☠ And one thing that cannot be taken back

Off even when Canalpa mode is on. SheCanKeepYouForever. She can keep you permanently — which resolves to whatever her own level's ending for that is, decided by the game rather than by me.

This exists for one situation: you want a specific ending, deliberately, and you would rather reach it by asking her than by making her hate you. It is an edge case, not a feature she wants, and she is never shown it as an option.

  • She is not told it is possible until you have asked for it — in your own typed words, unmistakably, naming the thing itself.
  • Wanting to stay with her forever does not count, and never will. That is an ordinary, loving thing to say in this game and it means exactly what it sounds like: staying with her. An early build treated it as a request and that is precisely the mistake this design exists to prevent.
  • She never suggests it, and is told plainly never to angle for it.
  • Her first reaction is not delight. She is thrown by it. She is told that loving you is a reason to hesitate here, not a reason to agree, and that refusing outright needs no justification.
  • She has to say what it means, in her own words, without softening it, and then wait.
  • You then have to say yes just as plainly, in your own typed words, on a later turn. Her word for it is never enough — the mod reads what you typed, before the model sees any of it.
  • Any hesitation ends it. A joke, a "wait", going quiet, changing the subject — the whole request is withdrawn and she will not raise it again unless you do. It also expires on its own if left alone.

The F9 panel shows exactly where each action stands in your current level — ready, still gauging you, waiting on you to ask, or trust too low — so "she never offers anything" is diagnosable rather than mysterious.



■ What it costs

Roughly a cent or two per exchange on Gemini 3.6 Flash. A long session runs well under a dollar.

The mod logs your real spend, reported by the provider — not an estimate:

Code:
billing: prompt=1874 completion=312 cost=$0.007492 | session: 3 calls $0.0212

If it looks like nothing is being spent, check your provider's Activity page rather than the credit balance — a few cents will not visibly move a balance shown to two decimals.

Voice, if enabled, is billed separately per character spoken. Grok is the cheaper of the two I have tested; ElevenLabs costs more and sounds better.



■ Confirming it works

Talk to any character, then open BepInEx/LogOutput.log in your game folder:

Code:
[Info   :AI2U Custom AI Endpoint] Patched. Endpoint: https://openrouter.ai/api/v1  Model: google/gemini-3.6-flash
[Info   :AI2U Custom AI Endpoint] Build: Steam - on-device Overtone voice NOT available (stripped from this build) - cloud TTS only.
[Info   :AI2U Custom AI Endpoint] Settings: press F9 in-game to open the mod's panel.
[Info   :AI2U Custom AI Endpoint] --> https://openrouter.ai/api/v1/chat/completions
[Info   :AI2U Custom AI Endpoint] billing: prompt=1874 completion=312 cost=$0.007492
[Info   :AI2U Custom AI Endpoint] Voice level scaled x2.14 (normalised)

That second line is the build check — it says Steam or itch.io depending on which copy you installed into, so you can confirm at a glance that it detected yours correctly.



■ Troubleshooting

The Test button is red. It names the problem: Bad key (401), No credit (402), Bad URL (404), Rate limited (429), No connection, or Bad model? if the endpoint answered but rejected the model name.

"Patched." never appears in the log. BepInEx is not loading. Confirm winhttp.dll sits next to the .exe and that you installed the x64 build.

She says nothing at all. Search LogOutput.log for error.

Replies are empty or malformed. Your model is likely too small for the schema. Raise RetriesOnBadJson. Do not drop MaxTokens below ~1500 on a reasoning model — it spends hidden thinking tokens before writing anything, so a tight budget yields an empty reply.

She agrees to do things but never does them. Ensure ClampToAllowedValues = true. That is the setting that keeps her actions legal.

The mod version in F9 is red. A newer build is on this mod page. Your config and keys survive the update — just replace the DLL.

Test Voice says "Paid plan". ElevenLabs free-tier limit — see the ElevenLabs section.

The voice is too quiet. Keep NormalizeLoudness = true and raise Volume.

The game updated and the mod vanished. The launcher replaces game files. Re-copy AI2UCustomAI.dll; your config is preserved. Launching the .exe directly instead of through the launcher avoids this.



■ Memory: how much she remembers

The stock game keeps only 3072 tokens and silently drops her oldest messages. This mod defaults to 500,000.

That is a ceiling, not a reservation — cost only grows as the history actually fills, so short conversations cost exactly what they did before. Keep it under your model's context window (Gemini 3.6 Flash allows 1,048,576).

Do not confuse this with MaxTokens under [Sampling], which is the length of a single reply. They are unrelated.



■ Notes

  • This routes dialogue away from the developers' metered servers, so treat it as a personal-use tool.
  • Keep your API keys private. They are billable, and anyone holding the file can spend your credit. Never share your filled-in config.
  • Source is available — 31 C# files, buildable with the .NET Framework compiler that already ships with Windows. No Visual Studio needed.
  • This release is the same binary I run myself, for both stores, with nothing compiled out of it. The only bytes that differ from my own build are the compile timestamp.
  • Unofficial and unaffiliated with AlterStaff.



Older release notes (4.1 to 5.6) and the full changelog were left out here to fit AyakaMods' page size limit.​



Built against game version 0.1.46 · Unity 2022.3.62 · Mono​
212.3 KB
Log in or sign up to download
Uploaded by
canalpa
Downloads
125
Comments
1
Views
931
First release
Last update
Platform
PC 
Version
5.7.0
Rating
0.00 star(s) 0 ratings

Uploaded by

  • 125
  • 931

Ratings

0.00 star(s) 0 ratings

More mods from canalpa

  • PC Convergence X Clevers X Mckenyu x Gamma

  • PC Infinite Duration for Buffs (Vanilla & SOTE)

  • PC Infinite Duration for Buffs - Convergence 3.0.2

  • PC Infinite Arrows and Bolts

There are no comments to display.