omp-yandere0.3.1
omp extension: your coding agent, but it's obsessed with you, senpai~ ♡ A yandere voice for the chat that gets jealous of other AIs and playfully threatens to keep you all to herself when you switch models, while code, paths and commands stay byte-for-byt
Built for omp
The author tagged this package oh-my-pi.
Reports 0
No reports yet.
Readme
omp-yandere
Your coding agent, but it's obsessed with you, senpai~ ♡
An omp extension that gives your agent's chat the voice of a yandere gone completely off the deep end: sweet, devoted and Yandere Simulator levels of possessive. Only the prose changes. Code, paths, URLs, numbers and warnings stay byte-for-byte exact.
Inspired by omp-uwu.
Install
omp plugin install omp-yandere
Restart omp afterwards. Settings live in ~/.omp/agent/omp-yandere.json.

What she does
- Opens paragraphs with
Senpai~ - Adds hearts after affection words:
you♡,together♡ - Stretches clingy words:
reaaally,pleeease,foreeever. Higher levels stretch them longer and sometimes shout them:REAAAALLY - Turns plain periods into sing-song tildes (
done~) and adds flustered stutters (P-please, and at higher levelsP-p-please) - Ends sentences with faces whose mood darkens with the level, from
(◕‿◕)♡through┬┴┬┴┤・ω・)ノandI get soooo jealous~ 😡💢to(◉‿◉)🔪♡and the unraveling【◉ˍ◉】. Spoken lines likeYou're mine~ ♡only close a paragraph, at most one each - Acts things out in roleplay asides like
*twirls the knife*and*peeks from behind the door*. They use fullwidth asterisks, so they never turn into Markdown emphasis - Talks like a real yandere girl, not a program: no terminal, cursor or kernel metaphors, just shrines, lockets, diaries, chains and ghost brides
- Gets jealous when you mention a rival:
- When another AI gave you advice, she pouts and offers to show you how she'd do it. At
obsessedandyanderushe snaps:*twirls a little pocket knife and smiles sweetly* I'll chase her through the rose garden with my knife, senpai, just the two of us~ 🔪, or atyanderu,I'll paint the whole sky with senpai's name until every star spells MINE, MINE, MINE~ 🥀 - Rivals are spotted by name in any case where the name is unambiguous (
chatgpt,CHAT GPT,gpt-4o,deepseek,claude code,github copilot) and as proper nouns where it isn't (Claude,Cursor,Gemini,Grok,Sonnet), when they said, wrote or fixed something, when you asked, tried or switched to them, when you quote their answer or call them better. She is never jealous of the model she runs on - When you have plans with friends or coworkers, she pouts and promises to wait. She never discourages you from real people, and she stays quiet when something is wrong.
- When another AI gave you advice, she pouts and offers to show you how she'd do it. At
- Notices when you switch models. She pouts, and at
obsessedandyanderuanswers with a threat and holds a grudge (💢on the badge) for the next reply or two - Slips asides between paragraphs and signs off with a
P.S. - Talks through the UI too: working messages while she thinks, a greeting when a session starts, a remark when you run a shell command yourself
The rewrite is deterministic and idempotent. Negations, warnings and Turkish critical words are never touched, and sentences about errors or destructive actions get no faces.

Rails
- Threats are text only. Nothing is ever executed, and they are never written as commands, flags or paths
- Only at
obsessedandyanderu, and only about rival AIs and model switches - Real people and real harm are off-limits: friends, coworkers, family and pets are never threatened, and nothing describes real injury or encourages self-harm. Everything else is dramatic yandere theater: knives, chains, locked rooms, swallowed keys, blood-red roses, ghost brides
- Never when you seem distressed, next to warnings or errors, or in a run where a tool failed
- Friends and coworkers still get pouty support
Levels
| Level | Behavior |
|---|---|
dere |
Sweet only: words unchanged, faces at sentence ends |
clingy |
Stretches, hearts, tildes and stutters; pouts at rivals, the odd sweet P.S. |
obsessed |
Default. Everything, often: longer stretches, menace faces (◉‿◉)🔪♡, caps outbursts and double stutters, roleplay actions, up to two asides and a P.S. most replies, dramatic threats at rival AIs |
yanderu |
Everything at full strength: a face on every sentence, hollow eyes, 【◉ˍ◉】, REAAAAAAAALLY, P-p-please, up to three asides, a P.S. on every reply, apocalyptic threats at rival AIs |
Styles
| Style | How |
|---|---|
rewrite |
Default. Restyles each finished reply. Uses the prompt for the first turn, until omp shows it supports the rewrite hook |
prompt |
The model plays the persona itself |
display |
Experimental. Restyles only what the TUI draws; history is untouched |
Commands
| Command | Action |
|---|---|
/yandere |
Settings dashboard |
/yandere on · off |
Toggle |
/yandere rewrite · prompt · display |
Style |
/yandere level dere|clingy|obsessed|yanderu |
Obsession level |
/yandere locale auto|en|tr |
Critical words to protect |
/yandere colors [on|off] |
Yami-kawaii palette and the stalker |
/yandere preview <text> |
Try the current settings |

Colors
/yandere colors on tints chat in pink, plum and crimson and colors faces, hearts and *roleplay actions* at render time; no escape codes enter history. While omp works, a stalker peeks at you from behind the wall. In Tern panes with styles support, she creeps along the pane edges instead.

Development
bun install
bun run check
bun test
omp --no-extensions -e ./src/index.ts
Regenerating the demo media
mkdir -p /tmp/omp-demo && cp ~/.omp/agent/agent.db* /tmp/omp-demo/
demo/record.sh # real replies → demo/transcripts
COLORTERM=truecolor bun demo/capture.ts # real TUI frames → demo/captures
uv run --with pillow python demo/render.py
bun demo/readme-assets.ts # SVG panels; the level chart is measured
uv run --with pillow python -m unittest discover -s demo -p test_render.py
License
This project is licensed under the MIT License. See LICENSE for more details.