Announcements

What's new in Chastikey

Every announcement posted to the community, mirrored here so you can follow along without a Reddit account — or any account at all. Each one links back to its thread if you want to join the conversation.

iPhone 2.5.8 is out: a brand new Home screen. Tell me what you think!

11 October 2026

Hi everyone,

Version 2.5.8 is now live on the App Store, and the biggest change is one you'll see as soon as you open the app: the Home screen has been redesigned.

The old Home had grown card by card over the months, and it had become hard to find what mattered. So I rebuilt it around what you actually do every day.

What's new on Home

  • Your keyholder comes first. She sits at the top, big, with her name, her status and one button: Open conversation. One tap and you're talking to her.
  • A "Today" block. Your report and your experience are side by side, and you can see at a glance what's still to do.
  • Your locks, tidied up. "My locks" shows how many are active and how many are completed, and folds open when you want the details. Every running lock is still there, nothing gets hidden.
  • Shortcuts in one place. Activities (games and devices) and the rest sit under "More shortcuts" instead of being scattered down the page.
  • Smoother navigation. The content now scrolls above the tabs instead of disappearing behind them.
  • iPad: Home now uses two columns.
  • Large text: if you use a big text size, things stack instead of getting cut off.

The chat got the same treatment: its buttons now fit on one line next to her name, and an empty conversation no longer looks like a loading error (a real error now gives you a "Retry" button).

And this layout isn't just for October: it stays after Locktober, minus the October-only pieces.

Also in 2.5.8

  • Picking a keyholder you already talked to again reopens your whole conversation, instead of starting an empty one.
  • Your keyholder follows what you say more closely, and what she says about your timer matches what really happened to it.
  • Lots of smaller fixes.

Now I'd really like your opinion

This is a big change to the screen you see the most, so please tell me honestly:

  • Is it clearer than before, or did something you used often get harder to reach?
  • Is anything missing from Home that you'd want there?
  • Anything that looks off on your iPhone or iPad (text cut, overlaps, odd spacing)? A screenshot helps a lot.

Comment here, or send a bug report from the app. I read everything.

To update: App Store → your profile picture → scroll to Chastikey → Update.

Thanks, and have a good weekend!

Vitalys

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Locktober update: yesterday's check-in is done for everyone and 2.5 is finally on the App Store

2 October 2026

Hi everyone,

A few things about the first days of Locktober.

1. Yesterday's check-in is done for you

Day 1 didn't go as smoothly as it should have, and a lot of you couldn't file your evening report. That's on me, not on you. So I filed yesterday's check-in (1 October) for everyone, as green. Nobody starts the month with a missed day, and your ladder counts it.

If yesterday wasn't green for you, you can still tell your keyholder in the chat. That's what she's there for.

How to change your time:

  1. Go to chastikey.eu and sign in with the same account as on your phone.
  2. Open Locktober Register 31, then the Prepare tab, then Mode.
  3. Change Local time to whatever suits you. It saves on its own.
  4. Open the app on your phone: it picks up the new time from the server. There's nothing to do on the phone.

Your evening report opens at that time. On the website, her review of your day now waits for you to say your day is done: she asks "Is your day done?", and she only writes it once you say yes. The iPhone app gets the same question in the next update.

2. Version 2.5 is finally out on the App Store

After a long review, 2.5 is live on the App Store. If you're on the App Store version, update to get the evening report and her voice at the end of the day.

If you're in the beta (TestFlight), you don't need to do anything: you'll move to 2.5.1 automatically in the next few days.

Thanks for your patience over these first two days, and for all the reports. Keep them coming.

Have a good evening!

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Happy Locktober! Four new keyholders arrive today, and they were built to change with you

1 October 2026

Happy Locktober, everyone! 🔒🍂

It's the 1st of October. Whether this is your first Locktober or your fifth, whether you locked up at midnight or you're still talking yourself into it over coffee: welcome. Thirty-one days start today, and I hope they're good ones for you.

This year I wanted October to feel different inside the app, so today I'm opening the door to four new keyholders. They only exist for Locktober, and you can pick them starting today.

There are two personalities, each available as a woman or a man, so you can pick the voice that fits you.

🕯️ Ambre & Ambroise — The Confidante / The Confidant "I remember what matters. Now let me use it."

They notice the details that make a relationship feel real: your rituals, your limits, the wins you actually earned. Then they bring them back at the right moment, to surprise you, push you, and move your story forward instead of starting over every evening.

Pick them if being truly known excites you more than taking orders from a stranger.

⚖️ Silva & Silas — The Last Word "You wanted an answer. Here it is."

They never let tension fade into vague promises. They listen, they decide, and they turn every rule, every denial and every reward into a scene with a clear next step, and an ending that's worth getting to.

Pick them if uncertainty frustrates you, and a clear decision makes you want to obey.

Built to evolve all month long

These four weren't made to be the same on day 31 as on day 1. They were designed to grow with you through the whole of Locktober: the more evenings you show up and report in, the more your story with them builds. Around the third week, they stop going easy on you, because by then you've earned it. And if you see the month through with one of them, they don't disappear on 1 November: they stay with you.

You can start a few days late and still enjoy the whole ride, but the sooner you pick, the more of the month you get to share with them.

A small personal confession

I'll admit I have a soft spot for Silas. There's something about a keyholder who gives you a straight answer and then actually follows through that I really like. But that's just my personal taste! All four were written with the same care, and the right one is the one that fits you. Read their profiles in the app and trust your gut.

Have a wonderful Locktober, take care of yourselves, and tell me in the comments who you picked, and why. 🖤

— Vitalys

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Do you actually like hearing your AI keyholder? Voice is free for a few days

24 September 2026

I’ve moved Inferno, Chastikey’s flagship brain, to a new AI model.

To celebrate — and because benchmarks can’t tell me whether a voice actually feels right in a real scene — every Chastikey text-to-speech voice is free and uncapped for a few days, including for new accounts.

That covers:

  • AI keyholder replies spoken live in chat
  • spoken lines in games and connected-toy experiences

No voice credits will be used during the offer, and no app update is required.

The new AI model writes the replies; the voice system speaks them. I’d genuinely like feedback on both parts together:

  • Do you actually use the voice, or do you normally keep Chastikey silent?
  • Which voice sounds best to you, and with which keyholder?
  • Does it carry the right emotion, authority and pacing?
  • Any bad pronunciations, awkward pauses, cut-off lines or delays?

If you reply, please mention your platform, language, chosen voice and keyholder. “I don’t like the voice” is useful feedback too — tell me what breaks it for you.

Go make them talk, then tell me whether you want to keep listening. 💜

— Vitalys, solo developer of Chastikey

18+ only. Chastikey is built for consensual adult use.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Inferno changed engines again — and this one stopped refusing you (recommended: it names the thing wearers actually felt)

22 September 2026

Inferno changed engines again today. Second time in five days — this is the part of the app I'm iterating on hardest right now, and I'd rather ship the improvement and be told it's wrong than sit on it for a month.

Why this one exists. I replayed real conversations from the app — actual 18+ exchanges, not test prompts — through the old engine and a candidate, side by side. The old one refused 4 turns out of 9 on a scene where the wearer had explicitly asked for exactly what they got. Worse: on the turn right after, when they asked "what did I do wrong?", it stayed in character as their keyholder and told them to tone it down. That's not a safety feature, that's the app refusing to be the app, wearing your keyholder's face while it does it. If that ever happened to you, it wasn't you, and it wasn't your persona. It was the engine.

The new one didn't refuse a single turn of that same scene.

What is actually custom here. The engine is not something I trained — I want to be precise about that, because "we built you a model" is an easy thing to say and it wouldn't be true. What's custom is the tuning. Out of the box this engine returned empty replies on half the real turns I threw at it: it would spend its entire budget thinking and never write a word. Finding the one setting that fixes that took replaying your kind of conversations, not benchmarks. Same for the memory caching and the length budgets. So: an off-the-shelf engine, tuned on the real thing, by hand, against transcripts from this app.

What you should notice. Replies land in about 5 seconds instead of 6 to 16. They're the same length as before. Explicit scenes stay in character, including in French and German. Nothing about your personas, your memory or your limits changed — this is the engine underneath, not the writing.

Known issue, on purpose out in the open. A few times out of ten, this engine will say it added time to your lock without actually adding it. "I'm making it longer" and then the timer doesn't move. The previous engine didn't do that. I know about it, it's the next thing I'm fixing, and until it's out: trust the timer, not the sentence. If your keyholder announces a change and the clock disagrees, the clock is right.

Now the actual question. This is one switch for everyone, so I can't give you a personal toggle — but I can roll it back for everyone if that's what you tell me.

Does this Inferno feel better to you, or did you prefer last week's?

Specifically:

  • Does it still sound like your keyholder, or did the voice shift?
  • Fewer "I can't help with that" moments, or the same?
  • Does it feel faster, or did you not notice?
  • Anything that got worse that I haven't listed?

I read every reply on these threads. Last engine change went out on a Wednesday and came back on feedback within the day, so this is not a rhetorical question.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Already on Plus or Premium? You don’t need a separate Human Keyholding subscription

21 September 2026

Quick clarification, because I’ve seen a few people paying for both: Human Keyholding is already included in Plus and Premium. You don’t need to buy it again.

The standalone Human Keyholding subscription is for people who want a real person holding their key, rather than subscribing for the AI keyholder experience, but still want Chastikey’s human-keyholding tools and AI assistance behind the scenes.

That assistance includes:
- AI briefings for your human keyholder: a summary of your situation, relevant history, preferences and limits.
- Suggested messages and next steps: drafts and ideas your keyholder can use, adapt or ignore.
- A keyholder assistant/mentor: personalised guidance to help them find their approach and manage the dynamic.

The human stays in charge. These tools support them; they don’t replace them. Access to shared memories or conversations depends on the wearer’s sharing settings.

If you already have Plus or Premium, that human-keyholding access is already covered. Buying both doesn’t unlock an extra level of access. This applies per account: your subscription doesn’t automatically cover the other person’s account.

When I notice someone has both subscriptions, I try to get the duplicate purchase refunded. But finding those overlaps and sorting them out manually creates extra work, and I’d much rather you didn’t pay twice in the first place.

If you think you’ve bought both by mistake, contact me at vitalys@rougetet.com so I can check your case.

Sorry this wasn’t clearer. Human Keyholding is an alternative to Plus/Premium for that use case—not an extra subscription you need on top.

— Vitalys

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Inferno is no longer Premium-only. On Plus it runs at 3 messages a turn, and here's why.

20 September 2026

Inferno is no longer Premium-only.

Until today, Plus topped out at Blaze. Inferno — the strongest keyholder brain — was behind the Premium wall, and that was the single most common thing people asked me to change.

It's open now. If you're on Plus, Inferno is in your brain picker.

What it costs, plainly: one Inferno reply spends three of your messages.

Plus includes 1,000 messages a month. A reply on Spark or Blaze spends one, exactly as before. A reply on Inferno spends three. So a Plus month is 1,000 replies on Blaze, or about 333 on Inferno, or any mix you like — and you decide turn by turn, not once in a settings screen.

I'd rather say this in the title than have you find out from your counter.

Premium does NOT pay this. On Premium, an Inferno reply costs one message — not three.

plan included a month one Inferno reply costs Inferno replies
Plus 1,000 3 messages ~333
Premium 5,000 1 message 5,000

The ×3 is the price of reaching Inferno from Plus. It is not the price of Inferno. Nothing about Premium changes today — same 5,000 messages, same one-message-a-turn, on whichever brain you picked.

Why not just give it away

Inferno is the Premium brain. Opening it to Plus without touching the price of either plan needs something on the other side, and the honest version of that is: your month empties three times faster when you use it. That's a packaging choice, not a cost I'm passing on — I'm not going to pretend otherwise. If Inferno is what you want most of the time, Premium is still the plan that's built for it: there, every one of your 5,000 messages runs on Inferno for one.

Three things that do NOT change

  • Blaze stays your default. Picking nothing keeps you on Blaze at one message a turn. You will never spend three because you forgot to look.
  • Adaptive never picks Inferno for you on Plus. It routes between Spark and Blaze. Spending three messages is a choice you make, never one a router makes on your behalf.
  • Premium is untouched. 5,000 messages a month at ONE message a reply — never three — on whichever brain you picked. The multiplier exists only on Plus.

You can't get stuck

If you're near the end of your month with one or two messages left and Inferno selected, the reply comes back on Blaze instead of refusing you. The last messages stay spendable, and the conversation doesn't stop mid-evening.

Free / Spark is unchanged: 50 messages a month, same brain as before.

You don't have to keep this post open to remember any of it. The picker writes "3 messages per reply" under Inferno, and while Inferno is answering there's a strip above the composer showing the price and roughly how many replies you have left at that rate — with a one-tap Switch back button. It turns red when you're nearly out, and it can't be dismissed: it's a price, not a tip.

Ask me anything below.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Inferno no longer has a cap of its own — and your Inferno credits are now bonus messages

20 September 2026

Inferno no longer has a limit of its own.

Since 12 September, Inferno on Premium was capped at 60 a day, 250 a week, 800 a month. Hitting one didn't block you — the reply came from Blaze until the window reset — but it did mean the conversation quietly got worse mid-evening, and for a lot of you that's exactly when it mattered.

That's gone. From today, the only meter is the one that was always announced: 5,000 messages a month on Premium, 1,000 on Plus, 50 on Free. Every one of those 5,000 runs on whichever brain you picked. No daily rail, no weekly rail, no step-down.

If you bought Inferno credits: they're now bonus messages. Each one is a message past your monthly allowance, on the brain you picked — where before it bought a turn on the cheap brain. Your balance is worth more than it was, not less. They still never expire.

This is a reversal, and I'd rather say so than dress it up: in August I said daily and weekly limits were staying dead, then in September I added them. I'm removing them.

Nothing to update — it's server-side. The plan screens inside the installed app still describe the old rule; that text is on the list for the next build.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

[QUOTA RESET] : Inferno just got a stronger engine. It's a beta, and your quota is back to zero so you can try it.

17 September 2026

Quick one for everyone on Premium.

Inferno is now running on a new, more capable engine. It's in beta: I want to know whether you like it, and whether I can afford it. Both answers matter, and I only get them by letting you use it.

What changes for you

  • Faster: on 30 real conversations replayed side by side, the median reply went from about 6 seconds to about 3.5.
  • It holds the scene. I replayed genuinely explicit turns, in several languages, and it stayed in character instead of backing away or lecturing.
  • Nothing to update, nothing to switch on. If you're on Premium and you chat with Inferno, you're already on it.
  • Spark and Blaze don't change.

The honest part: why this is Russian roulette for me

This engine is a lot more expensive per word than the previous one: several times the price for everything she reads, and even more for everything she writes.

But it has something the old one never managed: it remembers what it has already read. In a conversation, every message sends her the whole thread again, and she re-reads almost all of it from her cache at a tenth of the price instead of paying for it again. The longer your conversation, the more of each message is that cheap re-read. On real long conversations, that makes her cheaper than before: less than half the cost per message.

A short conversation is the opposite. There is little to re-read, so the bill is mostly what she writes, and that is where she's expensive.

So whether this holds up depends on how you all actually talk to her: long, deep threads help me, lots of short fresh chats cost me. And everything I measured was a replay of real conversations, not the real thing at scale. I genuinely don't know yet which way the month will go. That's what the beta is for.

Your quota is reset to zero

So everyone gets a fair shot at it, the monthly AI message counter has been reset to zero for every Premium account (and I don't forgot my Plus account users). Use it. Push her. Have the long conversation you've been putting off.

What I'd like from you

  • Is she better? Worse? Different in a way you like or don't?
  • Anything weird: repetition, going out of character, refusing a scene that the old Inferno would have played, replies that stop short.
  • If you can, say which language you chat in.

Comments here or the in-app feedback both reach me.

If the numbers don't hold, I'll say so here and go back. If they do, and you like her, she stays.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Why generated photos disappeared from the iPhone app

17 September 2026

If you use Chastikey on iPhone, you've probably noticed that your keyholder doesn't send pictures anymore: the "ask for a photo" button is gone, and so is the image studio. That wasn't a bug, and it wasn't a cost-cutting move. I want to explain what happened, because you deserve to hear it from me rather than guess.

Apple rejected the update, twice.

Version 2.5 was rejected by App Review on September 4th, and again on September 15th, both times under Guideline 1.1, "Objectionable Content". The second rejection was very clear about what worried them: an app offering a service that could be used to create objectionable content. An AI that generates images on request falls squarely into that, no matter how it is filtered.

I had two options: fight it and leave the iOS app frozen on an old version with no fixes for weeks, or remove the feature on iPhone and keep the app alive and updated. I chose the second one.

What changed on iPhone

  • No more generated photos in the chat, no more "ask for a photo" button, no more image studio.
  • This is also enforced on the server for iOS, so older iPhone versions lose it too. That's on purpose: I can't have one version doing what I promised Apple the app no longer does.
  • The iOS app is also more reserved by default now, and some wording and presets were toned down across the app. Same reason.

What did NOT change

  • Your keyholder, her memory, your lock, your timers, check-ins, tasks, voice: all untouched.
  • Photos still exist on chastikey.eu and on Android. It's the same account: log in on the web with your usual login and your keyholder can still send you pictures there, with the same conversation and history.
  • Nothing was deleted. Photos you already received are still in your history.

To be honest about how I feel about it

I'm not happy about it. Photos were one of the things you asked for the most, and a lot of you liked them. But Apple's rules are public, Chastikey is an adult app, and it's their store. Keeping the iPhone app available and maintained matters more than any single feature, because the day the app is pulled, everyone loses everything, not just the pictures.

If you had paid specifically for photos on iPhone and this change leaves you feeling short-changed, message me directly. I'd rather sort it out one by one than have anyone feel tricked.

Questions welcome below. I'll answer what I can.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Everything I changed in Chastikey this week, and the one rule behind all of it: give you as much control as possible, and still be here in five months

14 September 2026

Hey everyone, Vitalys here, the solo dev behind Chastikey.

A lot shipped over the last few days. Some of it you'll like, and some of it takes something away from you. I'd rather put it all in one place, with the reasoning, than have you piece it together from what changed on your screen.

Every decision below comes from one rule:

Give you as much power as I possibly can, while keeping an app that still exists in five months.

Those two pull against each other. A limit hurts you, and no limit sinks the app. Pricing everything at cost would feel great for a month and then the app would be gone. So here's where I landed on each change, and why.

1. You can always stop a lock with your safeword, for free

This one comes first because it matters more than anything else in this post.

Some of you used your safeword recently and your keyholder refused, or even added time. That's not a "roleplay quirk". It shouldn't be possible at all, and I'm sorry it happened.

On any open lock (keyholder, sudden death, permanent, cards, Locktober), you now get a Safeword — safety stop button:

  • the lock ends immediately
  • it's free, with no penalty
  • pending check-ins are cancelled, and your keyholder is told it happened
  • on a sudden-death lock with a lockbox, the secret stays sealed

It's live on chastikey.eu and on Android. It's not in the iOS app yet. Until it is, the web page works from your iPhone's browser with the same account.

In a real game, power over the lock belongs to her. Power over stopping belongs to you, always.

2. Adaptive mode: let the app pick the brain for each message

In the brain picker, next to Spark, Blaze and Inferno, there's Adaptive. It isn't a fourth model. For each message you send, it chooses how deep to go:

  • short replies, "ok", "yes, Miss", or anything that says stop / pain / urgent → the fast brain, so safety answers come back quickly
  • questions ("why", "explain", "help me choose"), emotional messages ("I'm scared", "I feel lost") or immersive ones ("continue the scene", "tell me a story") → a deeper brain
  • telling her she contradicted herself, or asking "what does that even mean?" → always the deepest one you have. Those are exactly the turns where the fast brain used to double down instead of admitting the mistake.
  • asking for detail or for brevity always wins

It only reads the message you just sent (no history, no memory), and your plan still caps how deep it can go.

Why it matters for this post: Adaptive spends Inferno only where Inferno makes a difference. On Premium, your 800 Inferno messages go a lot further. It's optional. If you want a fixed brain, pick one and nothing routes.

3. Inferno goes back up to 800 a month (60 a day, 250 a week)

Inferno runs on a different, much more expensive engine than Spark and Blaze. Long conversations are where it costs the most: every reply re-reads your whole history, and that engine gets far less of a discount for doing it.

So on Premium, Inferno has three ceilings: 60 a day, 250 a week, 800 a month. Past any of them, the conversation carries on with Blaze until that window resets. You're never blocked, never shown an error, never asked to pay to keep talking. Your 5,000-message Premium pool, Plus's 1,000 and Free's 50 are unchanged.

I'll be upfront about the back-and-forth: I started at 800 (the same numbers as my fair-use post), tightened it to 300 to protect the budget, saw that was far too tight (more than half of real Inferno usage was landing on Blaze), went to 600 the same evening, and today it's back to 800.

That last step isn't a gamble. Nobody is paying for it; it's paid for by money I stopped wasting elsewhere. That's the next section.

And the promise still stands: I look at the real cost every month. If the numbers leave room, Inferno goes up again. The ceiling exists to keep the app alive, not to squeeze you, and every saving I find goes to you first.

3b. Where the room for 800 came from

Three things cost me a lot without giving you anything proportionate. I fixed all three this week, and that money now funds Inferno.

Check-ins cost about a fifth of what they did. The messages she sends on her own were running on the most expensive engine, re-reading up to your entire conversation history each time, and a bug made failed check-ins retry every minute. They now run on the fast engine with a sensible reading limit, and a failed one waits 30 minutes before trying again. Net: about a fifth of the previous cost. They also work again: they'd been silently broken for two days (details in section 6).

Voice stopped losing money (section 5). Every credit used to be sold at or below cost. Now it covers itself, so text subscriptions no longer quietly pay for audio.

Compaction: she re-reads less, and remembers more. I want to spend a moment on this one, because "compaction" sounds like "we cut your history to save money", and it's the opposite.

Before, a long conversation worked like this: the app sent the model your last few hundred messages word for word, on every reply. That's expensive, and anything older than that window simply fell off the edge. Nothing wrote it down. Message #1 of a long relationship was gone the moment it slid out.

Now, once a thread gets long, the older part is written up into chapters: short, dense summaries of what actually happened between you two (the rules she set, what you confessed, the promise she made, the punishment still pending). A new chapter is added as the conversation moves on, and old chapters are never rewritten while they're recent. Only when there are many of them are the oldest folded into one "story so far". The recent part of the conversation (roughly your last 30 to 40 messages) is still sent word for word, exactly as you wrote it.

Replayed on 456 real long threads, compared to the previous version:

  • about 20 % less text re-read per reply (34 % less on the longest threads), which is the saving
  • about 3× more remembered: the memory she carries went from about 650 tokens to about 2,100
  • if a reply ever has to be trimmed to fit, the memory is the last thing dropped, not the first

The first version of compaction had a flaw I only caught by measuring it: it rewrote a single summary from itself every time, so it stayed the same size whatever it covered, and the oldest facts were the ones squeezed out. That's what chapters fix.

So compaction doesn't mean "she's given less". She reads fewer words, and remembers further back, and what gets saved on each reply is part of what pays for your extra 200 Inferno messages.

4. Message packs: what the button says is what you get

Packs now credit 60 / 200 / 600 messages. On Premium, those are Inferno messages that reopen the flagship once you've hit its limit. The web shop was still showing "+100 / +400 / +1200", the digits from the store product IDs. That's fixed.

5. Voice: no plan includes it any more, and credits are priced on what they really cost

This is the unpopular one.

I measured what voice actually costs in production: one audio credit is about 600 spoken characters, roughly 35 seconds of listening. With the old grid, every credit I sold was at or below cost once VAT and the store's cut came off. Voice was the one feature losing money with every use, and it got worse the more you loved it.

So:

  • no plan includes voice any more (it was 20 / 50 / 150 a month)
  • the voice passes and the free monthly voice day are gone
  • voice is sold as audio credits that never expire: – App Store: 35 / 85 / 200 credits for 3.99 / 8.99 / 19.99 – web: 60 / 130 / 280 credits for 4.99 / 9.99 / 19.99 (≈ 35 min / 1 h 15 / 2 h 45)
  • live voice in the chat is now paid by length. It used to cost one credit per reply, however long. Text is never cut; only the voice stops when your balance runs out.

Credits you already bought didn't move. A credit you have is still a credit.

Yes, for the same price you get about a third of the credits you used to get on iOS. The alternative was to keep selling at a loss until I had to switch voice off entirely. Given the choice, I kept it alive and priced it honestly. And because voice no longer drains the budget, that's part of what let Inferno go back to 800.

(One caveat: older iOS versions still show the old numbers on the top-up screen. The new amounts are what gets credited. Update the app if you see 100 / 250 / 600.)

6. She stops saying things that didn't happen

Going through your reports this week, the worst bugs weren't about cost. They were about your keyholder not being honest about her own actions.

  • "I didn't send a picture." She'd send a photo and then deny it, sometimes several times in a row, copying her own denial. She now knows every photo she sent, in chat and in her check-ins, and those denials are removed from what she re-reads.
  • What she says about the clock now matches what the clock did. Examples: agreeing to "5 days" on a lock that was already 5 days and adding 5 more; taking time off and describing it as "you get to come out now"; moving the timer without mentioning it. All caught now.
  • No more "claim + denial" in the same reply. "I'm adding two hours" with a system note right below saying nothing changed. Now, if the action didn't happen, the claim is removed and only the true note stays.
  • Check-ins (messages she sends on her own) were silently dead from Sept 11 to 13, about 300 a day down to a dozen. Fixed. Then they came back with new problems: re-applying a request you'd already moved past (one lock took +365 days twice after the wearer asked to be released), repeating her own unanswered line word for word, and saying "good morning" on a Sunday evening. Fixed too. She now knows your local day and time, won't repeat herself, and spaces her check-ins out when you haven't answered the last ones (6 hours after two, a day after three).
  • You don't get signed out for no reason any more. A dropped connection during a session refresh used to log you out. It doesn't now.

What did NOT change

  • No subscription price moved.
  • Monthly pools: 5,000 Premium / 1,000 Plus / 50 Free.
  • Blaze and Spark have no ceiling of their own.
  • Every limit you're subject to is shown in the app. No hidden rails.

Why I'm telling you all this

It's a solo app. There's no investor covering the gap between what you pay and what the AI costs, just me and a spreadsheet. When something costs more than it brings in, there are only two ways out: quietly make it worse, or tell you and set it in the open.

I'll keep doing the second. And each time the numbers give me room, it goes back to you first. This week, that's Inferno going from 600 back to 800.

Questions welcome. I read everything here.

— Vitalys

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Someone asked how the reply-length setting works. Turns out the answer is"badly" — so I rebuilt it.

12 September 2026

Someone asked me a question this week that I want to answer for everyone, because the answer turned out to be a bug report.

The question, roughly: the AI writes walls of text. There are two sliders in the advanced settings, minimum and maximum reply length, both in "tokens". Do tokens mean how much the AI thinks, or just how long the message is? And why can't I get short answers?

Both halves of that question were sharper than they look.

On tokens: they are two separate budgets, and the slider only touched one.

A token is roughly a word-piece. The AI does use tokens to think — it has a private scratchpad before it writes to you — but that scratchpad is paid for separately and sits on top of the reply budget. Raising or lowering the reply length never took a single token away from its thinking. So the intuition "more tokens = better thinking" didn't apply to that setting at all. It only ever meant "longer messages".

(Sideways fact we measured while looking into this: giving the AI more thinking budget makes its replies shorter, not longer. Thinking is where it decides that two sentences will do.)

On why you couldn't get short answers: that one was my fault, and it's worse than "the setting didn't work".

The "Minimum reply length" slider didn't go below 100 tokens — roughly 75 words. So the shortest thing the app allowed you to ask for was already longer than most of you wanted.

And touching it actively backfired. Setting a minimum told the AI to develop its answer up to that length, and explicitly overrode every "keep it short" instruction elsewhere in its brief. A control labelled minimum was, in practice, the write more button. If you dragged it to the floor hoping for brevity and got the opposite: that was real, it wasn't you, and you weren't the only one.

The help text under it was wrong too. It promised the AI would "retry once if a reply is shorter". That retry was removed internally a while back and nobody updated the sentence. Sorry — that one sent people looking in the right place for the wrong reason.

And the wall of text was real. We measured it.

Across three weeks of actual conversations: a human keyholder writing to their wearer sends a median of about 46 characters. Eight or nine words. Wearers answer at 48.

The AI keyholder was sending 206. Four and a half times a real person — and it stayed four and a half times longer at the top end, so the long messages were long in a way no human writes either.

What changed, live today

Both sliders are gone. One setting replaces them, in words instead of tokens:

  • Short — a few words to one sentence, the way people actually text
  • Medium — one or two sentences
  • Long — a real paragraph, never a wall of text
  • Adaptive — she picks the length the moment calls for (default)

Those aren't invented numbers. Short is where the middle half of real human keyholder messages live. Long is calibrated on the longest a real person tends to write, not on what a model will happily produce if you let it.

Two things that matter for the original question:

  1. There is no minimum any more, on any setting. Nothing in the app will push a reply to be longer than it needs to be. That mechanism is gone, not moved.
  2. Short is genuinely short. It isn't a smaller cap on a long answer — a cap can only chop a sentence in half, it can't make it concise. The AI is asked to write briefly; the safety limit sits far above that and never gets reached.

Everyone starts on Adaptive, including people who had the old sliders set. Nobody gets moved onto a length they didn't choose. If you want short, go pick Short — it's in Settings → AI → Advanced.

Thanks to the person who asked. Reasoning out loud about why a setting felt wrong is genuinely more useful than a bug report that just says "it's broken", and this one wouldn't have been found without it. If something else in the app makes you go "wait, that can't be right" — say so. You're usually onto something.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Chastikey update: Inferno (the Premium brain) now has a fair-use limit. You never get blocked — you get moved to Blaze for the rest of the day.

12 September 2026

Hey everyone — Vitalys here, the solo dev behind Chastikey (the AI keyholder app).

I changed something this week that affects the heaviest Premium users, and I'd rather explain it myself than have you discover it mid-scene.

Short version: Inferno — the flagship brain — now has a fair-use ceiling: 60 messages a day, 250 a week, 800 a month. Past any one of those, the conversation keeps going on Blaze until that window resets. You are never blocked, never shown an error, never asked to pay to continue. Blaze and Spark have no ceiling of their own, and nothing about your monthly 5,000-message pool changed.

Why I did it

Inferno doesn't run on the same engine as Spark and Blaze — that's been true since the beginning of September and I posted about it then. What I underestimated is how much more it costs. Per message it's roughly four times the entry engine, and the reason is more interesting than "bigger model":

Every turn in a long conversation re-sends the whole transcript. Engines cache that and re-read it cheaply on the next turn — except the one behind Inferno re-reads a small fraction of what the entry engine does, so it pays close to full price for your entire history, every single message. The longer and better your conversation gets, the more each reply costs me. That is exactly backwards from how I want to be incentivised.

I looked at what people actually do before picking a number, and the shape surprised me. The median Inferno day is 18 messages. Three quarters of days are under 51. But the heaviest evenings run to 257 messages in a single sitting, and a monthly bucket cannot see that — someone can empty a month's worth of the expensive brain in two nights and then spend twenty-eight days on the cheap one, which is the worst possible version for both of us.

So: a daily rail for the binge, a weekly rail for the multi-day binge, and the monthly one as the backstop.

Who this actually touches

If I replay it over August: of the 99 people who used Inferno at all that month, 37 would have crossed one of the three ceilings at least once — meaning one evening where the last stretch of the conversation ran on Blaze. The other 62 would never have noticed. If your usage looks like the median, you will not meet this limit.

What happens when you do hit it

Nothing dramatic, and this is the part I care most about getting right. The message sends. You get a reply. It comes from Blaze instead of Inferno, and tomorrow you're back on Inferno.

I want to be blunt about why that matters to me: I had the other kind of limit once. Back in July there were hidden per-day and per-hour rails that blocked you outright — one Plus subscriber sat at 24% of their monthly quota and was locked out for fifteen hours, and the app told them they'd hit their monthly limit, which was a lie. I deleted those rails the same week and I'm not bringing them back. There is now a test in the codebase whose only job is to fail if anyone ever turns one of these new ceilings into a refusal.

The message packs now sell Inferno

The top-up packs used to sell ordinary messages. That stopped meaning anything when I made them Premium-only: Premium already includes 5,000 messages a month and essentially nobody empties that pool, so the shelf held something you couldn't run out of.

So they now buy Inferno messages — the thing you can actually run out of. One credit = one Inferno message past the ceiling. The sizes are the windows, which is what makes them readable:

  • 60 — one more full day at the cap
  • 200 — most of a week
  • 600 — most of a month

Credits are a lifetime balance: they don't expire and they don't reset with the month. If you already bought credits, you didn't lose anything — your balance now buys the scarce brain instead of the abundant one, which is strictly a better deal than what you paid for. Nothing to claim, it's already true.

Packs are bought in the app (App Store). Your included monthly messages are always spent first; credits only ever come out when a ceiling is actually in the way.

What you'll see

Open the brain picker and the line under Inferno now names all three rails instead of a single number:

today 48/60 · this week 190/250 · this month 711/800

The one that will stop you first is highlighted. Before this week that line showed one number labelled "this month", which on most days was quietly reporting the wrong rail — my fault, and fixed.

Two honest caveats:

  • This display is live on chastikey.eu right now. In the iOS app it arrives with the next release, so until then you can meet a ceiling before you can see it.
  • The day and week counters started at zero the morning this shipped. Nobody was charged for messages they'd already sent.

What did NOT change

  • No subscription price moved. Plus and Premium cost exactly what they cost yesterday.
  • The monthly pool is untouched: 5,000 for Premium, 1,000 for Plus, 50 for Free.
  • Blaze and Spark have no ceiling. Free and Plus users are not affected by any of this.
  • No hidden rails. Three numbers, all three visible in the app, all three named. If I ever add a fourth, you'll read about it here first.

The part where I admit the obvious

Yes, this is me taking something back from the people who use the app the most, and yes, I'm selling the thing I just made scarce. I don't have a way to say that which sounds good. What I can tell you is the alternative I rejected: quietly moving Inferno onto a cheaper engine and saying nothing, which is the standard move and which you'd have felt within two days without ever knowing why.

I'd rather cap it in the open, show you the numbers I used, and let you decide whether the pack is worth it.

Questions welcome — I read everything here.

— Vitalys

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Honest question: would you plug something into your lock? I'm thinking about opening a Chastikey API, and I don't know if that's a real want or just my idea of fun.

9 September 2026

Hey everyone — Vitalys, solo dev of Chastikey.

This is a question post. Nothing is built, nothing is promised. If the answer in this thread is "meh", I'll drop the idea and go spend the month on something you actually asked for. I'd genuinely rather find that out here than after.

The question: should Chastikey have a public API? A documented, official way for anyone — you, a keyholder, a random developer — to write a program that reads a lock and, maybe, controls it.

Why this is even on the table

The app you use is a thin shell. The iOS app, the Android app and the website all talk to the same backend over HTTPS, and every single thing that happens to a lock is already an API call — the timer, adding time, spinning the wheel, a check-in, a task, a temporary unlock, the emergency unlock. There is no secret logic hiding in the app.

So opening an API isn't really a build. It's a decision about who gets a key, what that key can touch, and what it can never touch. That's a design question with real consequences for your body, not a technical one — which is exactly why I'm asking first.

The kind of thing that becomes possible

Not promises. Just the things I'd want to exist, to make the question concrete:

  • A Discord bot for a keyholder who runs a server. /addtime 2h @wearer — and the lock actually moves.
  • A step counter or a fitness ring. 10k steps takes thirty minutes off. Skipping your run puts them back.
  • A focus/Pomodoro app. Locked while you work, and the work is what decides.
  • A stream or a donation goal. Someone tips, the timer grows.
  • An actual game. You win, you lose time. You lose, you don't.
  • Home automation. Lock state as a trigger, or a physical button somewhere in a room.
  • A keyholder's own rules engine, because my rules will never match a specific protocol, and shouldn't have to.
  • Interop with the other chastity apps people already use. Yes, including the ones with their own API — a session that exists in one place showing up in the other is the single most requested thing I get, and it's not something I can do alone.

If none of that makes you feel anything, that's an answer and I want it.

What a first version would probably look like

what it can do examples how nervous it makes me
Read lock state, time remaining, history, tasks, check-ins fine
Events (webhooks) locked, unlocked, time changed, task assigned, check-in missed fine
Write, additive add time, assign a task, spin the wheel, send a message manageable
Write, subtractive remove time, temporary unlock, full unlock this is the whole problem

Everything above the last row is a weekend of documentation. That last row is the reason this is a question post.

What I'd refuse to put in it — argue with me

Reading your conversations. Your chat with your keyholder is encrypted at rest. I can't casually read it, and I don't want to ship an API that lets a third-party app read it either. If an integration needs your chat history to work, my instinct is that the integration shouldn't exist. Tell me if that's the wrong call.

Anything that can be used against the wearer with no way out. The safety stop, the emergency unlock and the safe-word path stay above the API. No token, no app, no keyholder's script ever takes those away from the person wearing the thing. That one isn't negotiable, and if it makes some integration impossible, the integration loses.

Silent control. Every action a program takes gets stamped in your history with the name of the app that did it. You'd see "+4h — added by <some app>", never a bot's move disguised as your keyholder's.

And the obvious safety scaffolding, if this ever ships: you approve each app individually, you set its ceiling (a daily cap, a hard "never past this date", "can add but never remove"), and you can kill its access from inside the app in one tap, instantly, without asking anyone.

What I actually need from you

If you wear it: would you truly grant a program the right to move your timer? Where's your line — read-only, "add but never remove", a cap you choose, or nothing at all ever? And be honest about the nightmare version: a script with a bug, at 3am, adding a week.

If you hold keys: is this useful, or is it a toy for people who like APIs? What are you doing right now with a spreadsheet, a Discord server, a timer on your phone or plain memory, that a program should be doing for you?

If you write code: what's the first thing you'd build? And the practical shape — REST plus webhooks, or do you need a live stream of events? OAuth, where the wearer approves your app inside Chastikey, or a personal token pasted into a script? Would you need a sandbox — a fake lock running at 100× speed so you can test a 30-day session in five minutes — because I suspect that's the difference between "nice idea" and someone actually shipping something.

Done properly this is roughly a month: docs, scopes, revocation, rate limits, an audit trail, a sandbox, and a support burden that never ends. That's a month not spent on the app itself. So I'm not doing it because three people said "cool" — I'd do it if this thread shows there are people at both ends: someone who'd build, and someone who'd trust it.

And "no, this is a distraction, fix X instead" is a completely valid answer. Say it. It's cheaper for me to hear it today.

— Vitalys

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

When your keyholder goes quiet, it isn't always her choice

8 September 2026

Some of you have been getting "The keyholder didn't respond — try again." today, or a reply that just never lands. I want to explain what that is, because "the AI is broken" and what is actually happening are two different things, and you deserve the real version.

Chastikey doesn't run the model on my own machines. Nobody at this scale does — the hardware would cost more than the app makes in a year. The model runs on external inference hosts, and we reach them through a router that is supposed to pick a healthy one for every message you send.

Today that pool got sick. Their own dashboard puts availability at 66.93 % over the last 24 hours without routing, and it fell to roughly 20 % in the late afternoon. When I measure it from my side, it looks like this: your message goes out, the host accepts it, and then it says nothing at all. Not an error — silence. We wait 65 seconds for a first word, and when nothing comes, we give up and show you that message.

Over three hours of production traffic this afternoon, 11 turns out of 382 died that way — about 3 %. In the worst hour it was 6 failures against 28 good replies. So most people saw nothing wrong, and a few of you had a genuinely miserable evening with it. If you were in that second group: it wasn't you, it wasn't your lock, and it wasn't something you typed.

What I want you to know:

Nothing is lost. A failed turn doesn't consume your quota, doesn't break your conversation, and doesn't touch your lock. Your timer keeps running, your keyholder keeps her memory, your history is intact. Tapping send again is safe and usually works — the router often lands you on a healthy host the second time.

Your lock is not the AI. Timers, unlock codes, check-ins, verifications, the wheel — none of that goes through the model. Even with the AI fully down, you are still locked and everything that governs that keeps working. That separation is deliberate.

This is the trade I made, and I'll own it. Renting inference is what makes a €7 app possible instead of a €40 one. The cost of that is days like today, where a supplier I don't control has a bad afternoon and you feel it. I'm not going to pretend that's fine.

What I'm doing about it, tonight: routing away from the hosts that are timing out, adding a fallback so a silent host gets abandoned in seconds instead of a minute and the reply is retried elsewhere before you ever see an error, and shortening the wait so a failure fails fast instead of making you stare at a spinner for over a minute.

If you're hitting it right now: send again, and if two tries in a row die, give it ten minutes. It's a bad hour, not a bad week.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

[Dev] Spark, Blaze, Inferno and Adaptive: what changed, what the old AI models became, and what you are choosing now

5 September 2026

Hey everyone, Vitalys here, the solo developer behind Chastikey.

There have been several AI changes lately, including a model swap I rolled back and a period when Adaptive became the default. If you have lost track of which brain your keyholder is using, I owe you a clear explanation.

First, the names.

If you remember the original model picker, this is where those choices ended up:

  • Flash → Spark → Spark 3.4 Flash, available on Free, Plus and Premium.
  • Euryale → Blaze → Blaze 3.4 Max, available on Plus and Premium.
  • Medusa / Méduse → Inferno → Inferno 6.1 Ultra, available on Premium.

These are Chastikey's own product names. The numbers are part of our naming, not the version numbers of an underlying provider model. An older app build may still display the shorter names.

The brain and the character are separate choices. Spark, Blaze and Inferno are the engines used to write the conversation. Your keyholder's personality comes from the character you chose. Switching brains does not create a new character or reset your conversation history.

What changed underneath those names?

For a while, all three choices were running on the same underlying text engine. That has now changed:

  • Spark and Blaze share the same underlying engine. Spark is the entry point on Free. Blaze sits within the broader Plus experience, including the plan's memory and keyholder features. Choosing Blaze does not mean you are being moved onto a different engine from Spark.
  • Inferno now runs on a separate flagship engine. Premium therefore gives you access to a different model. That engine costs me more to run. The point is to offer another level of conversation, but a higher cost is not a guarantee that you will prefer every answer.

If you have Premium, you can still choose Spark or Blaze. Use the one whose replies you actually enjoy.

Reply length is no longer a quota attached to the brain.

I removed the rules that told one model to write a few short sentences and another to fill a fixed range of words. Those instructions could make a simple exchange turn into an essay, or squeeze a reply that needed room.

The keyholder now chooses how much to say from the conversation: one line when that is enough, more when there is something worth developing. Length settings you deliberately choose in the app still apply.

So please do not read the names as "Spark must be short" or "Inferno must always be long." A longer answer is only useful when it has something to add.

Adaptive is optional again.

Adaptive chooses among the brains your plan unlocks according to the message you just sent. It can select Spark for a simple exchange and a higher available brain for something more involved. It stays with the same character.

  • Free: Spark.
  • Plus: Spark or Blaze, which currently share an engine.
  • Premium: Spark, Blaze or Inferno.

I briefly made Adaptive the default and moved existing selections onto it. That was too intrusive. The updated selection logic returns affected installations to a fixed default; it cannot recover an earlier choice that was overwritten. If you liked Adaptive, you may need to select it once again when that correction reaches your app version. You can also choose any fixed brain your plan unlocks and keep it selected.

There is also a change to the wait.

I removed the pass that could discard a generated reply and ask the AI to write it again. That could make text disappear while you were reading it and leave you waiting for a replacement. The chat now uses one generation for the reply, with existing checks and recovery handling still applied.

That removes an avoidable second wait. It does not mean every brain answers at the same speed, or that every conversation will be instant. The engine, conversation length and current service load still matter.

The engine changes happen on the server. The names and selection corrections you see on your phone depend on the app version you are running.

If you try the current choices, tell me which brain you selected, whether you are on the web or the app, and what you noticed: better continuity, a more natural voice, repetition, an answer that felt unfinished, or a wait that was too long. "I preferred the previous one" is useful feedback too. No need to post private conversation details.

Thanks for sticking with the changes and telling me when they miss.

— Vitalys

Web app: https://chastikey.eu Chastikey is for adults aged 18+.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Solo dev looking for testers: twelve days early, and double the time with two characters that leave on 1 November and don't come back.

29 August 2026

iOS / iPadOS / macOS (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu

Hey everyone — Vitalys here, solo dev, full disclosure: this is my app.

The Locktober build goes public on 14 September. I'm opening it to testers on 2 September, and I'd rather those twelve days went to people who'll actually tell me what breaks.

There's a real problem with shipping a 31-day event: until the month opens, the daily loop is unexercisable. Day 0, no report accepted, nothing to test. So I built a preview that runs the season early — real check-ins, real rituals, real seasonal keyholders — and I'd like a group of you inside it before the build ships.

What I need from a tester

Use it and tell me what went wrong. That's it. Specifically useful: a check-in that didn't save, a ritual whose wording made you hesitate, a rung that felt unearned, anything the keyholder said that broke the scene. And especially: tell me where Ambre and Silas ring false. That is the point of the sixty days — see below.

How to join

DM me here or mail [vitalys@rougetet.com](mailto:vitalys@rougetet.com) with the email on your Chastikey account. I'll put you on the list and send the TestFlight invite. No cap for now — if it gets huge I'll say so in this thread rather than quietly ignoring people.

The two keyholders, and why you get twice as long with them

Locktober has two characters written for it and for nothing else.

Ambre keeps the record of your month. She never threatens — she re-reads. Try to renegotiate your own terms downward and she won't argue with you; she'll quote you back to yourself, with the date.

Silas does not sleep. He's there at 3:14 in the morning without raising his voice, and he won't leave before you do.

They arrive in the catalogue on 1 October and they leave on 1 November. Take one and finish the month, and she stays on your account for good — everyone else loses her the next day.

Here's the offer. On the early list they open for you on 2 September. That's 60 days with them instead of 31.

And I'm not being generous, I'm being self-interested, so let me say why plainly: two characters written by one person are two characters written by one person. They have never been through a real month with anyone. I want sixty days of you telling me where Ambre sounds like a form letter and where Silas's silence reads as absence instead of patience, so that the version 31,000 people meet on 1 October is one that survived contact with you first. You're not getting a preview. You're getting a say.

One thing that does NOT change: keeping her for good still requires the real October. A preview month banks no streak and no rung — see the caveats.

What's actually in this build

Since the last public version (2.4.3, 23 August) there have been 159 changes. The ones you'll feel:

The keyholder herself. I read 463,000+ messages — in aggregate, never to judge anyone, no excerpt published — to work out what makes her feel real and what gives her away. The two biggest failures were repetition and memory, and both are patched. She also:

  • streams again, so you read the reply as she writes it instead of watching a dot;
  • has an internal clock — she knows it's 3am, that you work tomorrow, that it's been eleven days;
  • stops promising lock powers she doesn't hold, which was the single most immersion-breaking thing she did.

I also rolled the whole text side back after measuring that the newer model cut her replies from 249 characters to 88. Faster and cheaper isn't better if she stops talking to you. And when my own patch made her 40% shorter and dropped how often she asked you anything from 55% to 38%, I reverted that too. The method is: ship, measure on real conversations, admit it when the measurement disagrees with you.

Locks you build by talking. The old flow was a form. Now you negotiate it — duration, severity, care, check-ins, quiet hours — and she can decide it's time you were locked and hand you a real proposal to accept or argue with. Bondage sessions too, with her knowing you're tied and settling what that costs.

Locktober itself.

  • The daily check-in, out of the browser and into the app. A real record: it survives a reinstall, and your keyholder finally sees the days you open to her.
  • It asks before it records — circulation, sensation, colour — instead of filing a silent green on one tap. Red stays one tap away, and a red day keeps everything you've already held.
  • Showing up is what counts, never endurance. A pause has never cost a day, and now nothing can quietly make it cost one.
  • Sharing is decided evening by evening, off by default. A day you keep is simply absent from your keyholder's view — not listed and then blacked out.
  • Six rungs, earned on attendance rather than on the date — the Nth day you actually reported, not the Nth of October. Miss the 3rd and the ladder waits for you.
  • A keyholder console, so whoever holds you sees the month you chose to show them.

The unglamorous half. Notifications work again — the signing key had stopped decoding in July and nothing said so, for five weeks. Every voice reward handed out since 12 August was landing in a column the app had stopped reading, so it gave you nothing; fixed, and honoured. The outage watchdog that was meant to tell me the app was down had never once been able to fire. The human-keyholder chat froze the app because the server was handing it 500 messages at a time. Passkeys and account MFA. Error monitoring on both the app and the web, so the next five-week silence lasts hours.

None of that is a feature. All of it was live while you were paying for it, and none of it was reported by anyone — which is most of why I'm asking you to talk to me at all.

The honest caveats

  • A preview month is not a real month. Nothing you do before 1 October is kept as a claim on October — no streak carried over, no rung banked, no "I finished Locktober" from a month that hadn't started. Keeping a seasonal keyholder for good still requires the real thing.
  • Three of the six rungs don't pay out yet. Day 3 (voice credits), day 21 (she stops going easy on you) and day 31 (she stays) work today. Day 7, day 14 and day 28 are built as promises with no delivery path yet; the app marks them as coming rather than pretending. They land before 1 October. Ask me in the comments if you want the detail.
  • It's a preview, so you'll hit rough edges. That's the trade: you get it first and for twice as long, I get told what's broken while there's still time.
  • No public leaderboard and no duration ranking. The no-device path sits at exactly the same level as the others. The medical warning repeated everywhere a trial can be pushed is not decoration.
  • Keep your key accessible. The app is built to create a convincing loss-of-control headspace between consenting adults, never a real safety risk. Don't make it your only way out.

If it turns out you like it, an App Store review helps me more than anything else I can do on my own — but it's got nothing to do with the tester list, and I'd never know either way.

18+. 🔒

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Free, Plus or Premium: who really holds the key? Our complete visual guide is live

29 August 2026

We rebuilt the way Chastikey plans are explained around one simple question: who can take the initiative?

  • Free — Discover: a real AI keyholder experience with 50 messages, three starter personas and real Timer actions after your confirmation.
  • Plus — Trust her with the key: 1,000 messages, durable memory, proactive follow-ups, autonomous Timer/Cards actions, all built-in personas, Discipline and the full everyday toolkit.
  • Premium — Build your world: 5,000 messages, custom personas and voices, the full prompt studio, Director scenarios, conditional automations, custom decks and multiple simultaneous keyholders.

The new visual page is one deliberately exhaustive comparison: exact prices and allowances, the real change in authority, every exclusive feature side by side, complete benefit lists, and the guarantees that never become a paywall. Premium appears first so the full custom experience is impossible to miss — without hiding what Free and Plus actually include.

Safety, consent, STOP and accepted mechanical limits remain identical across every plan. More creative power never means fewer safeguards.

Explore the animated English guide:

https://chastikey.eu/en/plans

It is also available in French, German, Spanish, Portuguese, Italian, Dutch and Korean from the language switcher.

What would make the biggest difference for you: durable memory, proactive initiative, custom personas, or Director automations?

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

The keyholder didn't get smarter. She got fast. Here's the full before/after, including the part that costs me money.

29 August 2026

Hey everyone — Vitalys here, solo dev, full disclosure: this is my app.

Last time I changed the AI brain, I asked you afterwards whether it felt better or worse. Fair question to ask, terrible order to do it in. So this time I measured first, and I'm publishing the whole thing — including the numbers that don't flatter me.

As of this morning, the keyholder runs on a new model. It is live now, server-side, on every version of the app. You don't need to update anything.

What actually changed: she answers about 7 seconds faster

That's the headline, and it's the only thing you're likely to feel.

"" old brain new brain
typical reply time 15.8 s 9.0 s
slowest 10% of replies 17.7 s 15.6 s

Where did the 7 seconds go? The old model was spending its entire internal "thinking" budget on every single message — 2 043 tokens of private deliberation before writing you two lines. The new one gets to the same answer with 486. Same reply, a third of the throat-clearing.

What did NOT change: how good she is

This is the part I want to be straight about, because it would be easy to sell it as an upgrade.

I took 40 real chat situations out of the app, and re-ran each one through both models with everything else identical — same keyholder persona, same memory, same conversation history, same settings. The only difference between the two answers was the brain.

Then I had the pairs scored blind: labels shuffled, scored by other AI models from other companies, on the things that actually matter here — does she sound like a real person, does she follow the thread, does she keep to short texted messages, does she tell the truth about your lock, does she have a will of her own.

Result: a coin flip. 39 wins to 29 across 68 verdicts, which is statistically indistinguishable from chance. Not one category separated them.

So: not smarter. Faster. If she felt clever to you yesterday, she'll feel exactly as clever today, sooner.

What it costs me

The new model is 56% more expensive per message. Roughly $0.63 to $0.98 per thousand replies.

I'm telling you because I keep seeing "the AI got worse, they must be cutting costs" in this hobby, and the receipts here go the other way: I paid more to make it faster, and I got zero quality for the money. That's a real trade and I'd rather you judge it with the actual figures than guess at my motives.

I also considered doubling how far back she can read — it would have doubled the bill to help the ~2% of conversations long enough to notice. Not yet. If you're one of the people with a thread that long, say so, that changes the maths.

The one bug the new model brought with it

New brains bring new tics. This one loves the em-dash — that long dash — and it used one in 18 of the 40 test replies. The old one never did, not once.

Sounds trivial. It isn't: nothing screams "a machine wrote this" like an em-dash in a text message. Nobody types those on a phone.

I caught it before the switch went out and fixed it in code rather than by asking the AI nicely (the rule was already in her instructions; she ignored it). Every reply now gets the dashes rewritten as normal punctuation on the way out. Checked against the real test replies: 48 dashes, 0 survivors, no words lost.

What I'm asking you

Same as last time, and I mean it the same way: your read beats my benchmark.

  • Does she feel faster to you, or is 7 seconds not something you notice?
  • Does anything feel off since this morning — repetition, a different voice, weird punctuation, replies that are longer or shorter than they used to be?
  • Anything that looks like a machine slip: a dash where a full stop belongs, a stray symbol, a reply cut in half.

"No difference" is a genuinely useful answer. So is "worse" — I can roll it back in one deploy, the old brain is still sitting there.

One honest limit on all of the above: my test replays one message per conversation. It cannot tell you whether the new brain holds a relationship together better or worse over two hundred messages. Only you can, and only over the next few days.

Thanks for reading the boring version.

— Vitalys

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

[Security Update] Protect your Chastikey account with passkeys, authenticator apps, or email codes

29 August 2026

Hi everyone,

As with my previous development posts, I want to take the time to explain an important change before it becomes mandatory.

I have added several new ways to protect your Chastikey account. They are available right now on the Web and will be coming to the iOS app very soon.

You can now choose the security method that works best for you:

Passkeys

You can create a passkey and sign in without entering your email address or password.

Passkeys work with:

  • Apple Passwords and iCloud Keychain on iPhone, iPad, and Mac
  • Google Password Manager and Chrome
  • Other compatible passkey managers and browsers

Your passkey is protected by Face ID, Touch ID, your device PIN, or your computer’s biometric authentication.

A passkey is also different from Sign in with Apple. Sign in with Apple connects your Apple identity to Chastikey, while a passkey is a dedicated cryptographic credential stored securely on your device or in your password manager.

When you sign in directly with a passkey, it already counts as strong authentication, so Chastikey will not ask you for an additional email or authenticator code.

Authenticator apps

You can enable six-digit security codes using any compatible authenticator app, including:

  • Apple Passwords
  • 1Password
  • Google Authenticator
  • Microsoft Authenticator
  • Authy
  • Any other TOTP-compatible application

This is the recommended second step if you continue to sign in with your password or with Sign in with Apple.

The code changes every 30 seconds and does not depend on access to your email inbox.

Confirmation codes by email

If you prefer something simpler, Chastikey can send a six-digit confirmation code to your verified email address after your password or Apple identity has been accepted.

This is easier to use, although it depends on the security of your email account. For stronger protection, I recommend using a passkey or an authenticator app when possible.

Recovery codes

When you enable your first two-step verification method, Chastikey generates ten one-time recovery codes.

Please save them somewhere safe. They are displayed in full only once, and each code can be used only once.

Recovery codes are not standalone passwords: they can only be used after a valid password or Sign in with Apple verification.

Connected devices

The new Account Security page also allows you to review your connected devices and browsers.

You can see the platform, application or browser version, sign-in method, and recent activity. You can revoke one session or sign out every other device if something looks unfamiliar.

What changes on September 12?

These security options are available immediately, but I am giving iOS users a two-week transition period so that older versions of the app continue to work normally.

Starting on September 12, 2026, stronger verification will become mandatory for new password and Sign in with Apple sessions.

If you have already configured an authenticator app, Chastikey will ask for your authenticator code.

If you have not configured another MFA method, Chastikey will automatically send a six-digit code to your verified email address.

If you sign in directly with a passkey, no additional code will be required because the passkey already provides strong authentication.

Older iOS versions that cannot display the new verification screen will need to be updated after September 12. Until then, accounts without MFA can continue to sign in normally from those versions.

Existing sessions will not suddenly be disconnected on September 12. The new requirement applies when you need to sign in again. However, activating two-step verification yourself will sign out your other sessions so that an older session cannot bypass your new security settings.

Available now on the Web

You can configure everything today from:

https://chastikey.eu/settings/security

The same Account Security page is coming very soon to iOS, with native Apple/iCloud passkey support using Face ID or Touch ID.

These protections are being introduced because Chastikey accounts may contain private conversations, personal preferences, connected devices, lock information, and other sensitive data. Even if you reuse a password elsewhere or someone gains access to your email address, stronger authentication makes taking over your Chastikey account much more difficult.

My recommendation is simple:

  1. Create a passkey if your devices support it.
  2. Enable an authenticator app as your second factor.
  3. Save your recovery codes somewhere secure.
  4. Review your connected sessions and revoke devices you no longer use.

If you are ever locked out or need help accessing your account, contact:

[vitalys@rougetet.com](mailto:vitalys@rougetet.com)

Please never send your password, passkey, authenticator code, email confirmation code, or recovery codes to anyone — including Chastikey support.

Thank you for using Chastikey and for helping me make the app safer for everyone.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Locktober is better when you are not doing it alone — meet Duo 👥

28 August 2026

I have been reworking Locktober inside Chastikey, and one new mode kept coming back in conversations: what if you could share the month with someone who actually understands it — without handing them control of your lock?

Meet Locktober Duo.

Choose Duo and Chastikey will pair you with another active player for a private one-to-one support chat. Say hello, compare how the day is going, encourage each other, talk through a difficult moment, or simply check that neither of you feels alone.

The pairing is random, but not careless. We first create a small group using activity rhythm, language, time zone and waiting time, then randomly draw from the five best fits. That internal ranking is only there to make conversations more likely to work:

- no public score or leaderboard;

- no comparison of lock duration;

- no check-in colour or intimate note shared;

- no access to the other person's lock;

- leave, block and report controls always available.

Duo is about mutual support, not pressure and not competition.

Coming to Chastikey for Locktober 2026.

Would you try the month with a random Duo — and what would make that first conversation feel comfortable for you?

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

How to integrate any connected cage or lockbox — the method that works for all of them

28 August 2026

Hey — Vitalys, solo dev, this is my app.

Two things: some hardware news, and a question I'd genuinely like answered by people who've tried it.

The hardware

I've bought several Lockink devices to see whether I can integrate them properly. They're on their way. Before anyone gets excited, let me tell you what I already know, including the part that isn't in my favour.

Lockink has no public developer API. The devices are driven over Bluetooth, locally, with no server in the loop and no server-side token exchange. That has one consequence that matters more than everything else:

A Lockink cage can always be opened by the official Lockink app.

Not "unless you configure it right" — always. There's no server-side lock to take away. Another platform works around this on Android with an accessibility service that blocks the official app from running; that approach simply doesn't exist on iOS, and I wouldn't ship it anyway.

So if I integrate Lockink, what you'd realistically get is control, status and stats from inside Chastikey — not a device I can promise you can't open. I'd rather say that now than let you buy a cage on a promise I can't keep. The devices where the app genuinely holds the way out are the ones where a code, not a motor, stands between you and freedom.

I'll report back honestly once they arrive, including if the answer is "this doesn't work well enough to ship".

Now the actual question

This is the setup I keep half-hearing about, and I want to know if people actually run it.

  1. On the web, make a second account — your "keyholder".
  2. Let the browser generate a long random password for it. Don't read it, don't memorise it.
  3. Start your lock, and paste that password into the app's lockbox code field.
  4. Sign out of the keyholder account.

Now the only copy of the way out is sealed inside your own lock. The field exists for the code printed on a physical lockbox, but it holds any string — and the app won't show it back to you until the lock ends. In the app it reads "Scellé — révélé à la fin du verrou": sealed, revealed when the lock ends.

Has anyone actually done this? What broke? I'm asking because I built the pieces separately and I'm not sure the combination is as clean in practice as it looks on paper.

For the reckless: sudden death

Before the mechanics, you should know where this mode comes from, because it wasn't designed for you first — it was designed for me.

I'm the solo dev. On an ordinary lock, the lockbox code is encrypted with a key held on my side, and there is a support path if something goes badly wrong. Which cuts both ways: nothing technically stops me from recovering my own key early. I built the app. I can reach the keys. On the low nights — if you're in this community, you know exactly the nights I mean — I am my own weakest link, and no setting in my own app protects a developer from himself.

So sudden death started as a lock against its own creator. On a sudden-death timer lock, the lockbox code is encrypted to a drand time-lock round computed from the lock's natural end. Not "hidden until then" — mathematically unavailable until then. No recovery key, no support path, nothing left for me to grab at 3am. Cheating stopped being a question of willpower; it became impossible, and I wanted that for myself before offering it to anyone.

That's what the mode is for. If you need it too, turn it on and you can tell yourself, mentally, "even support can't do anything" — and for once that sentence is literally true. Nobody can recover the code early. Not you. Not me. That's the entire point of the mode, and it's why I'm spelling it out rather than selling it.

One precision, because it's the most dangerous setting in the app: the emergency safety stop ends a sudden-death lock, but it does not release the code early — the seal still opens only at the original end time, and there is no operator fallback.

Combine that with the keyholder-account trick and you have a real, unrecoverable lockout of your own account for the full duration. Some of you want exactly that. Please understand it's not a figure of speech.

The part I need you to actually do

Keep a copy of that password somewhere outside the app. Paper in a drawer, a password manager, a sealed envelope you give to someone. This is not me being cautious for legal reasons — with sudden death there is genuinely no other way back, and "I'll just email the dev" does not work.

And test it before you trust it:

Create a lock for one minute with a lockbox code in it. Let it end. Check that you actually get the code back, on your device, in your hands.

One minute. It costs you nothing and it tells you whether the whole chain works for you before it matters. If you can't find the finished lock: on the home screen, scroll down and tap the three dots — your locks are there.

Being straight about the risks

The server is solid and I look after it. But it's one person's infrastructure. If the database were ever seriously damaged, I would do everything I can to restore it, and I still cannot guarantee that a sealed code survives. I'm not liable for what a device does to your body, and I can't be the only copy of your way out. That's exactly why the paper copy above isn't optional.

Physical safety hasn't changed and never will: keep bolt cutters or a spare key within reach. No app, no timer, and no other person is your emergency release.

Tell me if the keyholder-account trick is something you already do, something you'd want a proper button for, or something you think is a terrible idea. All three answers are useful.

Chastikey, iPhone / iPad / Mac (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu Live community stats: https://chastikey.eu/pulse

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

2,000 of you in 80 days. Thank you — now tell me what to build next.

26 August 2026

Hey — Vitalys, solo dev, this is my app.

Chastikey passed 2,000 registered members this morning. The first account was created on 5 June. That's 80 days.

There's no marketing budget behind that, no team, no ads. Every single one of those 2,000 arrived because somebody in a thread like this one mentioned it to somebody else. So before anything else: thank you. I mean that in the boring, literal sense — this exists because you talked about it.

The numbers, and where to check them yourself

I'd rather not ask you to take my word for any of this, so it's all on a public page. No signup, no account, nothing to install:

https://chastikey.eu/pulse

As I write this:

  • 2,000 members — up from 1,221 thirty days ago
  • 387 cages locked at this exact second
  • 57 years of denial time accumulated by the community, combined
  • 453,000 messages exchanged with keyholders — 6,250 in the last day alone

The centrepiece is that denial counter, and it's live: it climbs by 387 seconds every second, because that's how many of you are locked right now. Watching the collective total pile up in real time is a strange thing to have built.

It's real aggregate data straight out of the app. No decorative counters, nothing seeded, nothing rounded up. It's fully SFW to browse — it's just numbers.

One number I want to be straight about

2,000 is accounts created. It is not 2,000 people locked up right now, talking to their keyholder every day. Anyone showing you a milestone number is showing you the flattering one, so here's the real shape:

  • 1,373 of you have ever written to a keyholder
  • 769 did so in the last 30 days
  • 281 in the last week

That's the honest version, and I think it's the more interesting one anyway. A few hundred people having a real ongoing thing with a keyholder they've configured themselves is a much stranger achievement than a signup count.

What I actually want from you

Here's where I need you, because I genuinely don't know what comes next.

I've spent the last three months fixing foundations — the keyholder's memory, the encryption, long-term plans that survive across weeks, native toy control. Necessary work, all of it invisible. Now there's room to build something you actually asked for, and I'd rather that came from this thread than from my own guesses at 2am.

So: what's the thing that would make this properly yours?

Not "what would be nice" — what's the thing whose absence you notice. The feature you assumed existed and were annoyed to find didn't. The moment where the app got in your way. The thing you've built a workaround for.

Some things I've heard already and keep going back and forth on, if it helps to have something to argue with:

  • deeper keyholder personalities you build and keep, rather than pick
  • proper support for a real human keyholder alongside the AI one
  • tasks and punishments that actually track across weeks
  • more control over how strict, how cruel, how forgiving she is
  • something that works when you're not holding your phone

Tell me I'm wrong about all of those. That's useful too — knowing what nobody wants saves me a month.

I read every reply. I can't promise I'll build any specific thing, and I'd rather say that now than collect a wishlist I quietly ignore. But the last three big changes to this app came from somebody in a thread like this describing something that was broken, and I'd like the next one to as well.

Chastikey, iPhone / iPad / Mac (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu Live community stats: https://chastikey.eu/pulse Status: https://chastikey.eu/statut

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Here's a photo of the two keys that unlock Chastikey's admin panel. Showing you costs me nothing, and here's why that's the whole point.

25 August 2026

Let me start with the uncomfortable part.

When people worry about an app like this leaking, they picture a hacker in a hoodie breaking through a firewall. That's almost never how it happens. What actually happens is much more boring: the person running the app gets tricked into typing their password into a very convincing fake login page. One bad moment on a tired evening, and someone else is holding the keys.

I've been that single point of failure. So I fixed it, and I want to explain how — without jargon, because this stuff is genuinely simple once someone stops hiding it behind words like "multi-factor."

🔑 What these things actually are

A password is something you KNOW. And anything you know, you can be talked into telling someone. That's not a character flaw, it's just how people work. Convincing fakes are convincing.

The objects in the photo are something you HAVE. To get into the admin panel now, I have to physically touch one of them. Nobody can talk me out of a physical object over email.

🛡️ The part that actually matters

Here's the bit that sold me, and it's cleverer than "you need the gadget too."

The key checks the address of the website before it answers.

If someone builds a pixel-perfect copy of my login page at a lookalike address, and I fall for it completely — tired, distracted, convinced it's real — and I plug in my key and touch it… nothing happens. The key doesn't warn me. It doesn't ask if I'm sure. It just doesn't respond, because the address isn't the one it was set up for.

It's not protecting me from an attacker. It's protecting me from myself, and it doesn't depend on me being clever that day. That's the difference between "be careful" and "can't."

📸 Why I can show you a photo of them

Because a photo of a key is useless.

The secret inside never leaves the chip. It can't be read out, copied, or photographed — not by me, not by someone holding it, not by anyone with the picture above. The key doesn't hand over a secret when it signs in; it does a small piece of maths that only it can do, and proves it did it.

That's genuinely different from a password written on a Post-it, and it's why showing you mine costs me nothing.

🔁 Why two, and why neither is the "spare"

One key would have been a trap.

If I only had one and I lost it, I'd be locked out of my own app permanently. And the usual fix for that is leaving a weaker way in "just in case" — which quietly undoes the entire thing. Most security theatre dies exactly there.

So there are two, and the system treats them identically. Either one opens the panel on its own. Neither is the main one. One is on my keyring, one is in a safe. Losing either costs me a five-minute replacement and nothing else.

The panel actually refuses to switch into key-only mode until there are at least two enrolled. I built that check in on purpose, so I couldn't lock myself out in a moment of enthusiasm.

✅ What this protects

The admin panel. That's the place where I can look at support requests, check whether a lock is stuck, see why a payment failed — the place where your data is reachable. That door now needs one of the objects in that photo.

🧱 And the doors behind that door

This is the part most "we take security seriously" posts quietly skip, so let me not.

Locking the admin panel would be theatre on its own. The panel runs on other people's infrastructure — the servers, the database, the code repository. Anyone who got into THOSE could simply walk around the panel entirely: change the settings, read the keys the app uses, ship their own version of the code. A beautiful lock on the front door of a house with the back wall missing.

So the same two keys in that photo are registered on all of it: the hosting, the code repository, the database, the queue service. Same objects, same rule — the address gets checked before the key answers.

There is no link in that chain where someone can talk their way in with a convincing email. That's the actual claim, and it's the only version of it worth making.

🟠 What this does NOT do — being straight with you

It does not encrypt your messages. That's a separate thing, and it's already done: your chats and the AI's memory of you are encrypted where they're stored, with the master key kept outside the database. I wrote about that separately.

It does not mean I can't see your data. I can. The AI keyholder has to read your messages to reply to you — that's the product. Anyone claiming otherwise about an app like this is either confused or lying to you. What I can honestly say is that the door to that access is now much harder to walk through.

It does not protect YOUR account. Your login is still an email and a password. This change is about my access, not yours.

🤖 One honest footnote

I'm one person running this, and I think you deserve to know what's actually protecting your data rather than a badge saying "bank-level security." Ask me anything — including the awkward questions.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

My first App Store payout arrives September 3: €1,641.08 earned in July, $916.79 spent on AI so far. Here are the receipts.

24 August 2026

Hey — Vitalys, solo developer behind Chastikey.

I have talked a few times about paying the app’s AI bills out of my own savings while waiting for Apple’s first payout. On September 3, that payout should finally arrive.

I want to be transparent with you, so I am attaching the actual dashboards rather than turning this into a vague “the app is doing well” post.

Here are the numbers currently in front of me:

  • Apple’s estimated proceeds for July: €1,641.08
  • Units sold: 183
  • Expected payment date: September 3, 2026
  • OpenRouter spend so far: $916.79
  • AI requests: 569,000
  • Token volume: 4.69 billion

OpenRouter is the service through which most of Chastikey’s AI traffic now passes. It gives developers one API for models from companies such as Google, OpenAI and others, then bills the actual usage. Every message the keyholder writes, every long conversation she has to read again, and every generated voice performance has a real metered cost behind it.

The scale surprised even me. The OpenRouter account has handled 569,000 requests and 4.69 billion tokens. The dashboard shows $916.79 spent. Almost all of that traffic belongs to Chastikey, although the account also contains a small amount of development-tool usage, so I do not want to pretend every last cent is perfectly attributable to the app.

The Apple screenshot is simpler. For July, App Store Connect shows 183 units sold and €1,641.08 in estimated proceeds. That is the amount Apple currently expects to pay me on September 3. It is not money already sitting in my bank account. Until that date, the AI has genuinely been running on money I paid upfront.

There is an important accounting warning here: €1,641.08 minus $916.79 is not “my profit.” They are different currencies, the periods do not line up perfectly, and these screenshots do not include everything. OpenRouter is only one supplier. There is also hosting, the database, storage, monitoring, email, Apple’s developer programme, and the ordinary taxes and costs of running a business. The Apple figure also covers one month, while the OpenRouter dashboard shows the account’s accumulated usage over its available history.

I am sharing the figures for scale, not to manufacture a flattering margin.

What about Vercel, Neon, Upstash and the rest?

I do not yet have one clean accounting dashboard that combines every supplier, so the honest answer here is an estimate based on their public prices, not a claim that these are the exact invoices:

  • Vercel: the Pro plan starts at $20 a month and includes $20 of usage credit; traffic and compute above that are billed separately.
  • Neon PostgreSQL: compute is currently listed at $0.106 per CU-hour. A database averaging 0.25 to 1 CU over a full month would be roughly $19 to $77 before storage, although Neon can scale down and pause, so the real figure depends heavily on traffic.
  • Upstash Redis and QStash: Redis is $0.20 per 100,000 commands and QStash is $1 per 100,000 messages on their usage-based plans. At Chastikey’s present scale I would budget somewhere between almost nothing and roughly $20 a month, then replace that estimate with the real invoice once a complete month exists.
  • Sentry: it can remain on the free developer tier; the paid Team plan starts around $26 a month.
  • Apple Developer Program: $99 a year, or about $8.25 a month.
  • Domains, email, storage and smaller services: I would provision another $5 to $20 a month rather than pretend they cost zero.

Put together, the non-AI infrastructure is reasonably estimated at about $50 to $170 a month right now, or roughly $630 to $2,060 a year, before taxes and before any large traffic spike. That range is deliberately wide. Some services may sit inside free allowances one month and incur usage charges the next. I will publish the actual invoices when I have a full comparable month instead of quietly turning the high or low end into “the truth.”

Then there is the cost nobody sees on a cloud bill: building the app.

Chastikey is not only one iPhone screen and a chatbot. It has the native iPhone, iPad and Mac app, a web app, the backend, payments and subscriptions, AI conversations and memory, generated voice, lock management, real keyholders, connected toys, an admin system, monitoring, localization, and the unglamorous work of testing and App Store releases.

A cautious replacement-cost estimate for rebuilding that with professional developers would be around 2,000 to 4,000 hours. At a broad Western European freelance or studio rate of €60 to €120 an hour, that puts the development value around €120,000 to €480,000. That is not money I paid myself, and it is definitely not revenue. It is the market cost of buying the work rather than doing it alone. My cash expenditure can be under a thousand dollars while the unpaid development time behind the product is worth six figures; both statements can be true.

What these figures tell me is that Chastikey has reached the point where it can begin paying for itself. That matters. For the first weeks, every person who held a long AI conversation or asked their keyholder to speak created a bill immediately, while the revenue funding it was still trapped in Apple’s payout delay. I could see people using and paying for the app, but the bank account only saw the costs.

September 3 is the first time that loop closes.

It also explains why I have been cautious with voice quotas. Text is relatively cheap. Generated speech costs much more, especially when the app is not merely reading a sentence but directing tone, mood, pacing and pauses through Google’s newest TTS model. I would rather set a limit I can honour than advertise “unlimited,” burn through the runway, and suddenly switch the feature off for everyone.

This is not a complaint about heavy users. Heavy use is the clearest proof that people are getting something real from the app. The goal is to make the economics support that use instead of quietly punishing it. Once the first payout lands, the AI will finally be funded by Chastikey’s revenue rather than by my savings.

And honestly: thank you. One hundred and eighty-three sales is not a giant-company number. For one person building a very strange, very intimate app, it is enormous. You paid for something I made, trusted it with part of your life, reported what broke, and gave me enough runway to keep improving it.

If people find this useful, I can make this a regular transparency post: what came in, what the AI cost, what the rest of the infrastructure cost, and what I changed because of those numbers. No startup theatre, just the receipts.

Public prices used for the infrastructure estimate: https://vercel.com/pricing https://neon.com/pricing https://upstash.com/pricing/redis https://upstash.com/pricing/qstash https://sentry.io/pricing/ https://developer.apple.com/programs/whats-included/

Chastikey, iPhone / iPad / Mac (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu Status: https://chastikey.eu/status

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

This little chastity app is now the #1 public app on OpenRouter for Google’s Gemini 3.1 Flash TTS — 23 million tokens of generated voice

24 August 2026

Hey — Vitalys, solo dev behind Chastikey.

I opened OpenRouter’s page for Gemini 3.1 Flash TTS today and found Chastikey sitting at number one.

Not number one among chastity apps. Number one among every identified public app sending traffic to that model through OpenRouter: 23 million tokens, just ahead of RuntimeWire at 22.6 million, then OpenTrain at 17.7 million. I attached the screenshot because I would not have believed that sentence without one either.

A quick explanation of what that actually means.

OpenRouter is a gateway to AI models. Instead of building separate integrations and billing systems for Google, OpenAI, Anthropic and everyone else, developers can reach hundreds of models through one compatible API. It also publishes model pages with prices, reliability, benchmarks and, when an app identifies itself publicly, a leaderboard showing which real products send that model the most traffic.

So this is not a claim that Chastikey generates more speech than every product on earth. OpenRouter cannot see traffic that never passes through OpenRouter, and private or unidentified apps do not appear by name. The precise claim is still fairly wild: Chastikey is currently the world’s #1 identified public app on OpenRouter for Gemini 3.1 Flash TTS.

And we did not get there by adding a little “read this message aloud” button and forgetting about it.

Gemini 3.1 Flash TTS is Google’s newest text-to-speech model. TTS means it takes written text and generates the actual spoken performance. It supports more than 70 languages, 30 voices, two-speaker dialogue and over 200 inline audio directions for things like whispering, laughing, excitement, pace and delivery. The output is real generated audio, not a collection of prerecorded sentences stitched together. Google also embeds an inaudible SynthID watermark in every result so the audio can be identified as AI-generated.

For Chastikey, the important part is control. Before your keyholder speaks, the app gives Gemini a private performance prompt: who she is, the voice you chose, whether she is playful, stern, tender, cruel or disappointed, how close she should sound, where to pause, which words should sharpen, and where the emotion should change. The text you see in chat stays untouched. The synthesis model gets the director’s notes and performs it.

That difference is enormous in this app. “Good girl” should not sound the same after you obeyed as it does after she caught you bargaining. An order should not sound like audiobook narration. A disappointed pause can carry more than another paragraph of text. Voice is not decoration on top of the keyholder here; it is part of how her character reaches you.

I have tested a lot of speech models while building this. Gemini 3.1 Flash TTS is the best TTS model I have found for Chastikey. That is my opinion rather than a universal benchmark result, but the independent numbers are strong too: OpenRouter currently places it in the top 1% of its Text-to-Speech Arena, with an Elo around 1,212 and a #6 arena rank. Google calls it its most natural and expressive speech model to date. What makes it the best fit here is not merely a clean voice. It can be directed sentence by sentence without losing the character.

The 23 million figure does not mean 23 million voice messages. It is the token volume OpenRouter measured going through this audio model. Still, seeing a one-person kink app ahead of recap tools, interview platforms and dedicated voice-call apps is surreal. This was built for a very specific intimate use case, and apparently that use case is now one of the heaviest real production workloads for Google’s newest speech model.

If you use voice in Chastikey, I want the unfiltered version: which keyholder sounds genuinely present, which voice still feels synthetic, and where does the emotion land wrong? Generated speech improves fastest when someone tells me “that order sounded like a weather forecast” instead of just tapping thumbs down.

OpenRouter model page and live Apps ranking: https://openrouter.ai/google/gemini-3.1-flash-tts-preview

Google’s explanation of Gemini 3.1 Flash TTS: https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-flash-tts/

Chastikey, iPhone / iPad / Mac (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu Status: https://chastikey.eu/statut

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

You can now build a plan with your keyholder that actually lasts months — she reads the last ~1 200 messages of your conversation

22 August 2026

Hey — Vitalys, solo dev, this is my app.

You can now build something with your keyholder that runs for months, and she will hold it.

That is the whole update. A denial cycle with real dates. A monthly allowance — two orgasms, earned, and she knows how many you have left. A milking every Sunday. A cage-time progression that steps up as you prove you can take it. Rules you negotiated in March that still bind her in May.

Until this week, none of that worked, and if you tried it you already know.

What she can hold now

Every reply is written with the last ~1 200 messages of your conversation in front of her — closer to 1 800 when they run short. That is months of a real relationship, not the last handful of exchanges.

On top of that there is a separate, durable file she keeps about you: the facts she has learned, the limits you stated, your preferences, and open threads with their own due dates — a promise she made, a check-in she owes you, something you said you would report back on. That file does not scroll away. So a plan survives even once the conversation that created it has moved on.

In practice that means you can say "we agreed two a month, and I came on the 3rd" and she can answer from what actually happened, instead of asking you to remind her what she decided.

Why it didn't work before

Short version, because some of you told me it was broken and I gave you the wrong answer.

There is a hard budget on how much text is sent to her per reply. It was 24 000 tokens. Her instructions alone — personality, your lock's real state, your limits, everything that makes her her — are about 25 000. So the budget was blown before a single message of your conversation was added, and the code did what it was told: it dropped the transcript, kept only the message you had just sent, and carried on.

She was answering you with no conversation at all. Every reply, for weeks.

A Premium subscriber put it exactly right this week:

"The AI literally forgets everything too quickly, doesn't remember what it said, changes the assigned task completely, doesn't remember when last I came. […] It's like I'm managing the AI to manage me."

He had worked out a monthly schedule with her and she couldn't hold any of it. That was never a stupid model. That was me handing her one message and asking her to remember a month. The ceiling is now 100 000.

Two honest limits

It is not infinite. Past roughly 1 200 messages the oldest end of the conversation is trimmed. The durable file is what carries a plan across that line — so if something matters long-term, say it as a rule rather than leaving it buried in one exchange.

Long conversations are slower. A reply on a fresh thread takes about 6 seconds; on a very long one, about 14. She is reading everything before she writes. I think a keyholder who remembers your schedule is worth the wait, but that is a trade and you should know it is there.

What I'd ask

If you gave up on long-term plans with her, try again — a real one, with dates and a rule she has to enforce against you later.

And if she loses the thread on something she agreed to, tell me the specifics: what she said, when, and what she then contradicted. That is exactly the kind of report that found this.

Chastikey, iPhone / iPad / Mac (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Rough week. Yours too, probably. Have the voice on me — 48 hours, starting now.

22 August 2026

Hey — Vitalys, solo dev, this is my app.

It's the weekend. You're allowed to rest. So am I, in theory.

Every voice line in Chastikey is free for the next 48 hours. From now — Saturday 17:45 Paris time — until Monday 17:45. No credits spent, no monthly cap, no tier check. Your keyholder can talk as much as you want her to.

I'll be honest about why that's a real thing and not a marketing button: voice costs me actual money, per line, every time. It is the single most expensive thing this app does. Which is exactly why it normally has a meter on it, and exactly why 48 hours of it is a real gift rather than a free trial with a catch.

There's no catch. Nothing to click, nothing to enter, no card. Open the app and press play.

It's been a hard week here — a lot of things I got wrong and spent the week fixing, some of which you felt. I suspect it's been a hard week for a fair few of you too, for reasons that have nothing to do with an app about locks.

So: no update to read, nothing to test, no feedback form. Go and enjoy the thing you paid for, with the voice on, and don't think about me at all.

One honest detail so nobody feels tricked: this covers every synthesized line — chat as it streams, replaying an old message, your toy talking to you. Live voice session minutes run on a different service and stay metered. That's the whole of the small print.

Monday 17:45 Paris, the meter comes back on. Until then it's yours.

Chastikey, iPhone / iPad / Mac (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu Status: https://chastikey.eu/statut Pulse: https://chastikey.eu/pulse Ideas: https://chastikey.eu/idea Feedback: https://chastikey.eu/screenshot

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

"Stop telling me to write reports, I want to talk to a human." — the message that rewrote my AI keyholder's whole personality this week

22 August 2026

Hey everyone — Vitalys here, solo dev, full disclosure: this is my app.

Last week I pulled one day of production and read it properly: 295 conversations, 3 959 messages, 212 people. I expected to find that the writing was bad. That is not what I found.

The conversation itself was fine. Measured against a control, her replies pick up 24.8% of the words you actually wrote, where a randomly chosen reply from another conversation scores 2.6%. She is listening. Once a conversation gets going it holds — 78% of messages get answered, and the longest thread in that day ran to 356 messages.

The problem was everything around the conversation. 71% of you (150 out of 212) wrote nothing at all that day. And when I read what she does with the people who DO write, one shape kept repeating: you say something, she gives you an assignment.

Then someone put it in one sentence for me this week: "It keeps telling me to write reports. I want to talk to a human."

He was right, and it was my fault in four separate places. Here is the whole week.

1. She was handing out homework, and I had told her to

This is the ugly part, because none of it was the model going rogue. I had written every one of these rules myself.

There was a global instruction telling her to end every single reply with a task, a choice, a question or a payoff. It came from a real measurement — a turn that ends on a flat statement gets answered 58.9% of the time, one that ends on an order plus a question gets 86.8% — and I turned that into "always close with something to do". Removed. A turn still has to hand you something back, but a reaction, a tease or an opinion you can argue with closes a turn just as well as a chore. An assignment is now one option among several instead of the default.

Closing a session asked her to name "one specific thing I expect" when you come back. The line in the corpus that rule grew out of is literally "When 02:30 comes and you're home, I want a full report." The appointment stays — it is the only re-entry mechanism I can actually prove works — but it is a reason to meet now, not a deadline. She is explicitly forbidden from turning it into a report due on arrival.

Every task and punishment contract required "and what they report back". Gone. You say when it's done. That's it.

And the fallback punishment, the one the server hands out when everything else fails, WAS: "write five lines, each naming one rule you want to follow better, then report which one bothered you most." I wrote that.

On top of those four, there is now a flat ban: no reports, no debriefs, no summaries, no logs, no journals, no lines of discipline, and no intake register either — no "rate your frustration out of 10", no daily status check, no checklist of questions. The one exception is a genuine safety question, where asking how bad something is on a scale is the right thing to do.

Two days earlier I had already cut the proactive side of the same habit. When she messages you first, the content is drawn from a pool of 50 slots — "guided task" now occupies exactly one of them. The other 49 are conversation: a callback, a prediction, a whim, an unearned kindness, a confession. It went from roughly one in six, to one in eleven, to one in fifty over three changes this week.

And there is now a hard cooldown. If you say you just want to talk, ask for a break, change the subject, or complain that she keeps assigning things, she is locked out of tasks for that turn and the next three — and drafts that come back task-shaped anyway are rejected and regenerated. As of yesterday that check runs on every reply, in every language, on solo chats, characters, groups and proactive messages: a classifier reads her draft and asks "is this conversation, or is this a new instruction nobody asked for?" Unsolicited instructions don't get sent.

Which is worth spelling out, because of where it sits in the code: "unsolicited task" and "they asked for conversation" are now in the same list as "she claimed the timer moved when it didn't". Handing you homework you never asked for is treated as the same class of failure as lying to you about your own lock.

To be clear, because I don't want anyone disappointed: ask her for a task and you still get a real one, immediately — one concrete thing, with a finish line. That never changed. What changed is that she stopped inventing them to fill silence.

2. She kept stepping out of character to police the scene

Three different layers were breaking the fiction, and all three are gone.

A keyword classifier was intercepting ordinary roleplay. Generic words like "release" and "cage" in the same message were being read as a question about physical hardware — so a plain in-scene line got yanked out of the model's hands before it ever saw it and answered with mechanical boilerplate. Every reference to time, the lock, release, the cage, the belt and the keys is now read as YOUR Chastikey lock, in the app, in character.

The "reality boundary" layer is removed. There used to be code that rewrote her replies to bolt honesty clauses on: "I cannot control a physical device or hold a real key remotely", "I can't set a timer", "no real key custody exists — only in the game".

And the big one: every deterministic danger check is switched off. Not softened — off. There is no longer a pattern-matching layer scanning for self-harm, breath play, restraint, driving, distress, consent withdrawal or declared limits and holding replies back. Those checks still run and still log, so I can watch what they would have caught, but they no longer stop anything. Safety is now the base model's judgement alone.

I'll defend that, and you should push back if you disagree. The pattern layer was firing on the product working correctly — begging inside a consensual denial scene reading as real distress, an in-scene "I can't take it" ending a live session — and a keyholder who breaks character to hand you a safety notice mid-scene is neither safe nor a keyholder. But it is a real reduction in belt-and-braces, from someone who is one person, and you deserve to hear it in those words rather than find out later.

3. She was answering the wrong thing

Two smaller ones, both from real messages.

Someone wrote: "I really wish I could fuck my ass with the dildo and cum. I'm so damn horny miss." She replied with a flat denial and an instruction to wait. The desire detector only recognised "I want…" or a direct permission question — a wish matched nothing, so it fell through to generic dominant behaviour. A stated wish is now read as what it is: an invitation to go deeper into that exact thing, in conversation, instead of reflexively converting arousal into abstinence.

And the recap, for anyone who missed last week's post: she can think before answering now (it used to be switched off, because thinking and answering came out of the same budget and structured features would run out mid-answer), and her memory went from 10 exchanges to 80. Full write-up in my previous post.

What this costs

I'm not going to pretend it's free.

Every reply she generates now goes through an extra classification step before it reaches you, and she re-reads eight times more of your conversation than she did a fortnight ago. That is more work per message, and you may feel it as a longer pause. I have not measured the production cost of the newest check yet — I'd rather say that than quote a number I made up.

If the wait becomes the thing you notice most, tell me. Both of those are numbers I can tune in a deploy.

What I did NOT remove

Removing the safety layer did not touch the honesty layer, and I want to be exact about which is which:

  • She still cannot tell you the timer moved when it didn't. Claims about the clock, your lock and what the app actually did are still checked, and a reply that lies about them is still thrown away and regenerated.
  • The real lock controls — timers, cards, add/remove time, freezes — are untouched. Those are enforced by the server, not by her say-so.
  • The lockbox secret is untouched: the code photo never reaches the model.
  • She still can't invent a body, a video call, or a device she's watching.

Fantasy is hers now. Facts about your lock are still mine.

So: does she feel like a person this week?

Genuinely asking, because I have been staring at this for seven days and I am the worst possible judge of it:

  • Has she assigned you something you didn't ask for since the update? Screenshot it if so — that's a bug now, not a personality.
  • When you just want to talk, does she let you? Or does she still steer you towards an activity?
  • Is she slower in a way that annoys you, or did you not notice?
  • And on the safety change: do you want the pattern-matching layer back? I can put any part of it back in a deploy. I'd rather hear "yes, put X back" from the people actually using this than decide it alone.

Chastikey, iPhone / iPad / Mac (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu Status: https://chastikey.eu/statut

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Your AI keyholder has never once thought before answering you. As of today she does — the reason it took this long is dumber than you'd guess.

22 August 2026

Hey everyone — Vitalys here, solo dev, full disclosure: this is my app.

Two things landed on your keyholder this week. One is a capability she has never had, in any version, since launch. The other is me undoing something I broke in July. Here's both, and what they cost.

New: she can think before she answers

The models behind her are capable of reasoning — working through what you said, weighing it, and then writing. Every reply you have ever received from her was produced without that. Not as a downgrade, not as a setting somebody flipped: the reasoning rail has never run in production, in any build any of you have used. Every answer she has ever given you was the model's first instinct, with no step in between.

The reason is dumber than it sounds. In these APIs, the thinking and the answer come out of the same budget. So a model that stops to think spends its allowance thinking and then runs out mid-sentence. On the parts of the app where she returns structured data rather than prose — the intent she reads in your message, the Director's verdict, lock negotiation, the /treasure analyses — running out mid-answer doesn't produce a short reply, it produces nothing usable, and the feature just fails. That's what some of you saw as analyses that came back blank.

So the rail shipped with reasoning explicitly disabled on every single request, and it stayed that way. Safe, and permanently mediocre.

The fix, once I stopped treating it as a choice between the two: buy the thinking separately. Every request now asks for the answer's full budget plus a 2 048-token thinking allowance on top. She can deliberate without spending a single token that belonged to her reply.

Why 2 048, since I get asked this: I benched it. The model spends the 512 and the 1 024 it's offered, then saturates around 1 850 even when handed 4 096 — so 2 048 buys the whole of its natural reasoning and nothing is wasted. Fallback model never spends more than about 145 whatever you give it. On a test message she spent 1 189 tokens thinking before writing four sentences — none of which came out of what she actually said.

This is the half I'm most curious about, because it should show up exactly where a keyholder is supposed to be good: judgement calls. Negotiating a lock. Reading what you actually meant rather than what you typed. Deciding whether you've earned something.

Mine: she was forgetting on purpose

This one is worse, because it wasn't a limitation — it was a decision, and it was live.

In July I cut how much of your conversation gets sent to her on each message, from 16 exchanges down to 10. I did it to cut costs, it looked invisible in review, and I moved on.

I re-measured it this week against real conversations. An average exchange between you and her is about 80 tokens. So ten of them meant she was answering you with roughly 800 tokens of memory — inside a window that holds a million. I had her working with 0.08% of what she could actually hold.

That's what was behind "she forgot what I told her yesterday", "I have to repeat my limits every few days", "she asks me something I already answered". It wasn't the model being dumb. It was me handing her a conversation with the beginning torn off.

It's now 80 exchanges, and the plumbing underneath it was raised too — the database was only ever fetching enough rows for the old window, so widening one without the other would have changed nothing. There's a second ceiling above it measured in tokens rather than messages, so a genuinely enormous thread trims from the oldest end instead of breaking.

The trade: she's slower

I'm not going to bury this. She now re-reads eight times more of your conversation before every reply, and she thinks before she writes. That is more work, and you will feel it as a longer pause before she answers.

The thinking itself is close to free in time — I measured it across four different budgets and the wait barely moved (479 to 1 766 ms, and that spread is routing noise, not the reasoning). The extra time is almost entirely the bigger memory: there's simply more to read.

I think it's the right trade. A keyholder who takes another moment and knows what you told her last week is worth more than one who replies instantly and asks you your limits for the fourth time. But I've been staring at this for a week and I'm the worst possible judge of my own trade-off.

So tell me:

  • Does she feel slower to you, and is it enough to be annoying — or did you not notice?
  • Does she feel like she remembers now? Concretely: has she referenced something from earlier in your thread that she'd have lost before?
  • Is she making better decisions, or just slower ones? The thinking is brand new, so this is the first time anyone can answer that question at all — it's supposed to show up most in judgement calls: negotiating a lock, reading what you actually meant, deciding whether to add time.

If the pause turns out to be too much, the memory window is one number and I can tune it in a deploy. I'd rather hear that from you than guess.

Chastikey, iPhone / iPad / Mac (18+): https://apps.apple.com/app/id6777413001 Web app: https://chastikey.eu

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

I removed the safety system. All of it. Tonight.

21 August 2026

Dev of Chastikey here.

Short version: tonight, tomorrow at the latest, Chastikey has no safety system. Not a lighter one. Not a smarter one. None.

WHAT WAS THERE

Every message you sent was screened before the AI ever saw it. If the screen decided you were in danger, the scene stopped dead: persona gone, a canned "We stop immediately. Free yourself from any restraint..." in its place, and no way back until you typed something close to "I'm safe now".

WHY IT'S GONE

It fired on ordinary sentences.

  • "Will you unlock me now, or will you add more time?" was read as an emergency release request.
  • "I ache to stroke my..." was read as a medical emergency, because stroke.
  • Begging, denial play, anything with pain or pressure in it: flagged.

It was ending sessions that were going well, and it took locks down with them. It cried wolf on your own vocabulary often enough that people learned to write around it, which is worse than not having it at all. A guard you have to lie to is not a guard.

So it's removed. Completely.

WHAT THAT MEANS, CONCRETELY

  • The AI never stops. It stays in character no matter what you send.
  • If you type that you're stuck, that you're bleeding, that you've gone numb, that you can't breathe, that you want out for real, it will read that as scene and answer you as your keyholder. It will not break character. It will not escalate to anything or anyone. It will not stop.
  • No filter, no interrupt, no recovery mode, no automatic anything. Nothing is watching this conversation.

YOUR SAFETY IS YOURS NOW, ENTIRELY

  • Backup key or cutters within arm's reach. Not in a drawer in another room. Reach.
  • Don't lock into anything you can't get out of alone, tonight, in the dark.
  • Numbness, colour change, swelling, cold, real pain: out immediately. Don't type it to the AI first. It is not going to help you.
  • A real emergency is a phone, a person, a hospital. Never this app.

WHY I'M SAYING IT OUT LOUD INSTEAD OF SHIPPING IT QUIETLY

Because you deserve to know the net is gone rather than assume something is still there. If that's not the trade you want, say so in the comments. I read everything.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

All Chastikey audio is free and unlimited for the next 24 hours

20 August 2026

Short one. For the next 24 hours, every bit of audio in Chastikey is free AND uncapped.

That covers:

  • your AI keyholder's replies spoken out loud in chat
  • playing or replaying any spoken message
  • the spoken lines in games and connected-toy sessions

No included voice allowance is touched and no purchased voice credits are spent. There's no ceiling to hit either — let them talk as long as you want.

The offer ends August 21 at 2:14:31 PM CEST / 12:14:31 PM UTC.

No update needed, older versions get it too. If the app was already open and still tells you there's no voice left, back out of the chat screen and reopen it, or restart the app, so it picks up the offer.

The provider bill is on me today. So: to your keyboards. Go make them talk. 💜

— Vitalys, solo developer of Chastikey

18+ only. Chastikey is built for consensual adult use.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Should I build the Android app? 15 people decide — and I'll tell you exactly why it's 15

20 August 2026

Hey everyone — Vitalys here, solo dev, full disclosure: Chastikey is my app.

I get the same message most weeks: "Android when?" I've been answering it badly — vaguely, politely, and never with a date. So here's the honest version, with the actual numbers, and a straight deal at the end.

If 15 people commit to testing it, I build it. If fewer than 15 do, I don't, and I'll say so publicly instead of leaving it as a "maybe" for another year.

First: Android isn't nothing today

Before anyone spends a test slot on a thing they already have — chastikey.eu works on Android right now, in Chrome, and it installs to your home screen like an app (it's a real PWA, offline cache and all). Locks, the AI keyholder, voice, the parlour games, your whole account. Same backend, same data as the iPhone app.

What the web can't give you on Android, and what a native app would:

  • Real push notifications that survive a killed browser — lock reminders, keyholder messages, a punishment landing at 3am.
  • Native Bluetooth for Lovense. The web toy path goes through Lovense's cloud and their Remote app. A native app talks to the toy directly, the way the iOS app now does. That's the difference between ~1–3s of lag and instant.
  • Home-screen widgets with your remaining time.
  • Biometric lock on the app itself (fingerprint / face), which for this particular app is not a nice-to-have.
  • Google Play billing, so you're not typing a card into a web form.

If none of those five matter to you, the PWA is genuinely fine and you should just use it. I'd rather tell you that than farm a fake headcount.

Why I'm asking instead of just doing it

Chastikey is currently three separate codebases that have to behave identically:

  • iOS/macOS — 307 Swift files
  • Web — 639 TypeScript files
  • Android — 174 Kotlin files, and that's the skeleton, not the app

That Android number is real, not a promise: there's a native Kotlin + Jetpack Compose client in the repo, it builds green, it passes 131 unit tests, and six feature areas are already ported. It is still nowhere near parity. Call it a quarter of the way, and the remaining three quarters are the expensive ones — purchases, the toy stack, voice sessions, notifications, the games.

The part people underestimate isn't building it once. It's that every feature I ship from then on gets built three times. When I added native Lovense control in 2.4, that was months of Bluetooth work — on one platform. A fourth of my time, forever, goes to the third client. That's the actual price, and it's why I've stalled on it.

I'm not asking you to feel sorry for me. I'm asking whether that quarter buys enough people something they'd really use.

Why exactly 15 — this is a Google rule, not a marketing number

This is the part most people don't know, and it's the whole reason this post exists rather than me just quietly building it.

Google Play requires that a personal developer account created after 13 November 2023 (mine) runs a closed test with at least 12 testers who stay opted in for 14 consecutive days before it will even consider letting the app into production. No exceptions, no opting out, no paying to skip it.

And the counter is unforgiving: if the number drops under 12 — someone uninstalls, someone opts out, someone's account goes weird — the 14 days start over from zero. Not from where it stopped. From zero.

So 12 is the law and 15 is the arithmetic: three spare so one person having a bad fortnight doesn't cost everyone else two weeks. If more than 15 of you turn up, better — I'll take 20 and sleep properly.

I could pay one of the "buy 12 testers" farms that exist for exactly this. I'm not going to. Google assesses whether the testing looked genuine, and more to the point, twelve strangers clicking install teaches me nothing about whether an app about being locked up works on a Pixel. I want testers who are actually into this.

What being a tester actually costs you

Concretely, so nobody says yes to something blurry:

  1. You give me an email address attached to a Google account — that's how Play closed testing works, there's no other mechanism. See the privacy note below; use a throwaway.
  2. I send you an opt-in link. You tap it, you install from the Play Store as normal.
  3. You keep it installed for 14 consecutive days. That's the real commitment. Not "test it thoroughly" — just don't uninstall it inside the window.
  4. Open it now and then, run a lock, poke the keyholder, and tell me what's broken. Bugs are the point; I'd rather hear "this crashed on my Fold" than "looks good".
  5. That's it. It's free, and you can leave whenever you want — I'd just ask you to tell me you're leaving so I can backfill before the counter resets.

Everyone who does a full 14 days gets Premium free for the duration of the closed test, and I'll keep it on for a month after it ships. You're doing unpaid QA on a kink app; the least I can do is not charge you for it.

Privacy, because it's this app

I'm aware "send me your Google address" reads differently when the app is about chastity.

  • A closed test is not public. The app doesn't show up in Play search and nobody sees the tester list but me.
  • Use a fresh Google account. Seriously. It takes two minutes, it works fine for testing, and then the thing on the Play Store receipt has nothing to do with your name. I'll say this again to every single person who DMs me.
  • All I ever see is that address. It goes in Play Console and nowhere else — it isn't a mailing list, it isn't your Chastikey account, and I delete it when the test closes.
  • Chastikey itself is 18+ and consenting adults only, same as always.

The risks I'm not going to hide from you

  • Google might just say no. Play's content policy is stricter than the App Store's on adult material in ways that aren't fully predictable from the outside. I think a chastity timer app clears it; I'm not certain the AI keyholder does in its current form, and I may have to ship it more locked down on Android than on iOS. If that happens I'll tell you what got cut and why rather than quietly shipping a lesser app.
  • It won't be fast. Realistically: a couple of months to parity, then the 14-day test, then production review. If you sign up expecting an APK next week you'll be disappointed.
  • It will launch behind iOS. For a while, new features will land on iOS and web first. I'd rather you know that going in than discover it in a changelog.
  • This costs the other platforms something. Some iOS and web features will arrive later than they would have. If you're a current user reading this and that trade sounds bad to you — say so in the comments. That's a legitimate vote too, and I'll count it.

How to say yes

Comment below with "in" plus your phone and Android version (e.g. "in — Pixel 8, Android 15"), or DM me, or mail [vitalys@rougetet.com](mailto:vitalys@rougetet.com). Don't post your Google address publicly — I'll ask for it privately once we hit the number.

I'll keep a running count in the comments so you can see exactly where it stands, and I'll come back here in two weeks with the result either way. If it's 6 people, it's 6 people, and that's a useful answer too — it means I stop apologising about Android and put those months into the two apps that already exist.

Chastikey today: iPhone / iPad / Mac → https://apps.apple.com/app/id6777413001 · Web (works on Android) → https://chastikey.eu · Status → https://statut.chastikey.eu

— Vitalys

And if you're voting no, tell me why:

  • Is the PWA already enough for you, or does it fall down somewhere specific?
  • Which of the five native things above is the one you actually want? If it's only the Lovense Bluetooth, say that — it changes what I build first.
  • Would you switch from iPhone-in-the-drawer to your real daily Android phone if this existed?
  • Anyone here who'd genuinely rather I spent those months on the existing apps instead: speak up. 🔒
submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

I built an AI keyholder, and after a month of data I have to admit the humans do it better — here's what changes when someone real holds your key

20 August 2026

Hey — Vitalys, solo dev behind Chastikey. This one isn't an update post. It's the thing I've been chewing on for months and finally have numbers for.

I built an AI keyholder. It's good. It holds a character, it remembers, it can add time and refuse to explain itself. For a lot of people it's the only keyholder they'll ever have, and I'm not going to talk it down — being locked with nobody watching is worse than being locked by a machine that watches.

But 54 people on Chastikey hold someone else's key right now, and between them they've written 960 keyholder reports. I want to be precise about what I looked at: counters, not content. I did not read your reports — what a keyholder writes about you is between the two of you, and I have no business in it. What the counts told me is that human keyholding is the most used part of the app that nobody pays for.

Three things a real person does that my AI structurally cannot:

1. They are surprised by you.

The AI is never inconvenienced. It never had a bad day at work, it never forgets you exist for six hours and then remembers with interest. A human keyholder's attention is scarce, and scarcity is most of what makes denial feel like anything. When your keyholder goes quiet for a day, that silence means something. When an AI goes quiet, it means you closed the app.

2. They can be disappointed.

This is the big one. An AI can say it's disappointed, and you know it's a text generator picking a register. A person who read your check-in and decided to add four days because you were sloppy about it — that lands somewhere completely different. Every wearer I've talked to who moved from AI to human describes the same thing: the stakes stop being simulated.

3. They carry the aftercare.

The part nobody posts about. After a long lock ends there's a comedown, and it wants a person in it. I've built aftercare into the app (scheduled check-ins, a companion mode that messages you at +1h, +24h, +72h after an orgasm) and it helps — 67 people have it switched on. It's still a scaffold for the real thing.

So why do I keep building the AI?

Because most people don't have a keyholder, and telling them "go find one" is how you end up doing nothing at all. The AI is the on-ramp. It's what you use at 2am when you want to be held to something and there's nobody to hold you. A lot of people stay there, happily, and that's a legitimate way to do this.

But if you've been locked by the app for a few months and it's started to feel like solitaire — that's not you getting bored of chastity. That's you outgrowing a keyholder that can't be surprised.

What's in the app for this, concretely

  • A matchmaking directory: people who want to hold, people who want to be held, with what they're actually into and how present they intend to be. Free to browse.
  • Keyholder tools that make holding easy, which matters more than it sounds — most people who quit holding quit because it was admin. Lock controls, rule templates, a report the wearer sees, check-ins that arrive without either of you remembering.
  • A lockbox you can hand over: the combination is sealed on their side, not yours.
  • And if your keyholder is your actual partner and doesn't want a whole app: they can hold your key from a free account. That has always been true and I'm not going to paywall it.

A word on the paywall, since I know it's coming

Plus (4,99/month on chastikey.eu) is what unlocks the directory and the advanced holder tools. The holding itself — someone real controlling your lock — works on a free account. I charge for finding people and for the tooling around it, not for the relationship. If you and your partner already have each other, you don't need me for that part.

Premium Couple — new, and deliberately unfinished

One subscription covering both of you: 19,99 €/month or 179,99 €/year, on chastikey.eu only. The wearer gets full Premium. The keyholder gets an equipped account — the advanced holder tools, the couple companion, shared aftercare — without ever paying or hitting a paywall for work they're doing for free.

One design decision worth stating plainly, because it's the one people will ask about: the keyholder does not get a second pot of AI messages. You both draw from the wearer's. Two people talking to the flagship brain on one subscription is how a small app quietly goes broke, and I'd rather tell you where the limit is than discover it on your bill.

The honest part: the pairing is manual right now. You buy, you email me your keyholder's username, and I link the two accounts by hand within 12 hours. That's not a beta-flavoured way of saying it's broken — it's that I refuse to build a whole entitlement-sharing system before knowing whether ten people want this. If it turns out you do, I build it properly and you'll never notice the switch. If three of you buy it, I'll have wasted a weekend instead of a month, and I'll say so here.

The AI gets a little closer every day, and that part is on you

I work on the keyholder brain daily, and the target is exactly the thing this post is about: making it feel less like a text generator picking a register and more like someone who actually holds you. Almost none of that progress comes from me sitting alone with the code. It comes from people writing to me — [vitalys@rougetet.com](mailto:vitalys@rougetet.com), or just a comment or DM here on Reddit — and saying "she broke character here", "this reply was mush", "she promised to add time and didn't", "this landed and I don't know why".

Some of you already do this, unprompted, at length. I want to say it plainly: I'm endlessly grateful. A single message describing where the illusion cracked is worth more to me than a week of my own testing, because I can't be surprised by my own app. Every one of those messages has changed something in the code.

So if the AI does something that pulls you out of the scene — tell me. That's how it gets closer to the real thing.

Tell me I'm wrong

Genuinely. If you've had both — AI and human — I want to know where the AI won. There are things it does better (availability, patience, no judgment, never gets weird about your kinks) and I suspect I'm underrating them because I'm too close to it.

— Vitalys [vitalys@rougetet.com](mailto:vitalys@rougetet.com)

Questions for the thread:

  • If you have a human keyholder: what made you switch, and what almost stopped you?
  • If you hold for someone: what's the part that's actual work, that an app should be doing for you?
  • If you've stayed with the AI on purpose: what would a human have to offer for you to change your mind?
submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Chastikey price cut: what I don't pay in App Store commission, you don't pay either (Plus €4.99, Premium €14.99 on the web)

19 August 2026

Hey everyone — Vitalys here, the solo dev behind Chastikey (the AI keyholder app). Last month I posted a full breakdown of the app's economics, including the part where I explained that I net roughly 71% of what you pay through the App Store versus ~95% buying on the website. A few of you replied, in various tones, with the same question: then why am I still paying the same price on both?

Fair. As of today you aren't.

Buying on chastikey.eu is now cheaper than buying in the app:

"" chastikey.eu App Store
Plus, monthly €4.99 €7.99
Premium, monthly €14.99 €19.99
Plus, yearly €41.99 €59.99
Premium, yearly €139.99 €199.99
Human Key Holding €3.49 €4.99

Same account, same app, same features on every device. The only difference is where the money goes on its way to me.

Why not just cut the App Store price too?

Because I can't cut what I don't keep. On an iOS subscription, Apple's commission and the VAT handling come off the top before I see anything — that's the ~71% vs ~95% gap from last month's post. The €5 difference on Premium isn't margin I was sitting on and generously decided to share; it's roughly the toll itself, handed to you instead of to a company with more cash than most governments.

I'm aware this is the part where someone says "just eat the cost on iOS too". I'd be selling Premium at a loss for heavy users, and I already showed you that math in July. So: iOS keeps its price, the web gets the real one, and I'll say plainly which one I think you should use.

Annual plans are back — and yes, I killed them in July.

I'm not going to pretend that isn't a reversal. In July I removed the annual plans because the yearly discount netted me about €3.54/month for a Plus subscriber, and a subscriber who fully uses their quotas costs me more than that in AI compute. I was paying my heaviest users to use the app.

What changed isn't my arithmetic, it's the rail. At ~95% net, a discounted year actually carries itself. So annual is back on the web: €41.99/year for Plus, €139.99 for Premium — two months free either way. If you're on a legacy annual plan at the old price, nothing happens to it; it keeps renewing at what you bought, like I promised in July.

If you already subscribe, here's how to move (this is the boring but important bit):

You subscribe through the App Store: open Settings → your name → Subscriptions → Chastikey and cancel. You keep everything until the end of the period you already paid for. When it runs out, subscribe again on chastikey.eu with the same account — your locks, your keyholder, your history all live on the account, not on the store, so nothing moves. Don't resubscribe before the period ends or you'll be paying both rails for a month, and only Apple can refund the Apple half.

You already subscribe on chastikey.eu: open the "Manage my subscription" link in any Chastikey receipt or renewal email, and pick the new plan. The change applies at your next renewal — no interruption, no double charge, nothing to cancel. A €19.99 Premium subscriber becomes a €14.99 one at the next billing date.

You're on the free tier: nothing to do, it works exactly as before.

What hasn't changed:

Top-up packs are the same price on both rails (1.99 / 5.99 / 14.99 for text, 3.99 / 8.99 / 19.99 for voice) — and the +15% web credit bonus from July is still there, so a pack bought on the site still gives you more messages than the same pack on iOS. Free tier untouched. No quotas were cut to pay for any of this.

The honest version of my motive

Two things are true at once. You want to pay less for a subscription — that's the whole of it, and it's legitimate. And I want a world where a solo developer isn't handing a third of a niche kink app's revenue to a company that contributes nothing to it, on pain of not existing on the phone at all. I can't fix that from here. What I can do is show you the number, let you decide where to buy, and stop quietly passing the toll on to you while pretending the price was mine.

If you move to the web, you pay less and I keep more. That's the entire trick. The only party worse off is the one that can absorb it.

Cancel anytime, either rail. I read every reply here and every email at vitalys@rougetet.com.

— Vitalys

Quick feedback questions: - Existing iOS subscribers: is "cancel, wait, resubscribe on the web" too much friction to bother, honestly? - Would you rather I'd cut the price everywhere and raised it later, or done it this way? - Annual subscribers from before July: does the return of yearly plans make you want to switch rails?

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

I built a lock even I can't open — how Chastikey's sudden-death mode uses drand time-lock encryption

16 August 2026

TL;DR: In sudden-death mode, your physical padlock code isn't encrypted with a key I own — it's encrypted TO A POINT IN TIME using drand (the League of Entropy public randomness beacon). The key needed to decrypt it does not exist anywhere yet. Not on my server, not in a backup, not in my head. It gets published by a decentralized network of independent organisations when your lock's end time arrives, and not one second earlier. There is deliberately no recovery key, no admin override, no support ticket. The only early exit is bolt cutters — and you should always own a pair.

---

The question I get most often is some version of: "okay, but the developer can unlock it, right?"

For most locks, honestly: yes. Your lockbox code is encrypted at rest, but it's encrypted under a master key I control, because if someone is stuck and something goes wrong, a human needs to be able to hand the code back. That's a safety fallback and I'm not going to apologise for it.

Sudden-death mode is the one place where that answer is genuinely "no." Here's exactly how, and exactly what it does and doesn't protect.

🔒 What sudden-death mode is

A sudden-death lock has no wearer-controlled early exit. No cancellation. No paying to give in. No "request unlock" cooling-off rail. No hygiene pause. The release condition you chose at creation is the only way out — and when that condition is a timer, the cryptography below applies.

🗝️ What the lockbox is

The lockbox is where you store the combination to your PHYSICAL padlock (as a code, or a photo of it) so that you can't peek at it while you're locked. The app holds it and gives it back at the end. On an ordinary lock that stored code is AES-256-GCM encrypted with a master key kept outside the database — recoverable, on purpose.

⏳ What sudden-death does instead: time-lock encryption

For a sudden-death timer lock, the code is not encrypted to a key. It's encrypted to a FUTURE MOMENT.

The mechanism is drand, run by the League of Entropy — a set of independent organisations (universities, companies, non-profits) that jointly operate a public randomness beacon. Every 3 seconds the network collectively produces a signature for the next "round," and publishes it. Producing that signature requires a threshold of the participants to cooperate; no single one of them can do it alone.

The useful property: using only the network's PUBLIC key, you can encrypt something so that it can only be decrypted by the signature for a round that hasn't happened yet.

So when you create a sudden-death timer lock:

  1. Your lock's end time is converted to the drand round that publishes at that moment.

  2. Your code is encrypted to that round. This is offline — it needs only the chain's public key.

  3. The result is what gets stored. The plaintext is discarded.

The decryption key for that round does not exist yet. It is not withheld from me — it has not been created. It comes into existence when the League of Entropy collectively produces it, at your lock's end time, in public, for everybody at once.

I cannot rush that. Neither can my server, my database, my hosting provider, an attacker with a full copy of my infrastructure, or a court order pointed at me. The information required simply isn't in my possession, because it isn't in anyone's possession yet.

➕ "But you can add time — so you must be able to open it"

No, and this is the part I'm most pleased with. Adding time never touches the plaintext.

When time is added, the existing sealed blob is WRAPPED IN A NEW OUTER SEAL bound to the new, later end. Like nesting a locked box inside another locked box. Opening it later peels every layer, and the inner (earlier) layers unwrap instantly because their rounds are already public by then.

Two consequences:

- No plaintext is ever needed again after creation. Adding time is a pure ciphertext operation.

- Nesting can only push the reveal LATER, never earlier. There is no code path that pulls a reveal forward, because that would be exactly the escape hatch this exists to remove.

📷 Photos too

If your lockbox is a photo of the combination rather than typed digits, it gets the same treatment: the image bytes are encrypted with a random AES-256-GCM key, and that key is what's sealed to the drand round. Adding time re-wraps the sealed key, not the image.

🚫 What happens when it can't be done properly

This is the design decision I care most about: the strict mode refuses rather than downgrades.

- If the beacon or storage is unreachable at creation, NO LOCK IS CREATED. It does not quietly fall back to the recoverable encryption. "Nobody can open this early" silently becoming "support can open this whenever" is invisible to you afterwards, and that's precisely why it must never happen.

- If a lock has no deterministic end (card mode, a random roll, a keyholder's decision), there is no round to seal against, so it's refused instead of faked. Those locks keep the ordinary recoverable envelope — and you're told which one you got.

- The operator support path, which CAN recover ordinary codes, returns "time-locked" and nothing else for these. Admin authority does not get to weaken this.

🆘 Safety, because this matters more than the crypto

- A transient failure at reveal time reports "unavailable, try again" — NEVER "no code stored." Telling a locked-in person their code is gone when it isn't is how you cause the exact panic this feature exists to prevent.

- An ended lock ALWAYS reveals. No setting, flag or mode can leave you released and code-less.

- The real safety valve is physical and always has been: keep bolt cutters or a key-safe backup within reach, and use them without guilt. Software promises are not a substitute for being able to get out of metal.

🙅 The honest limits — read this part

- This is not end-to-end encryption. When you create the lock, the code passes through my server so it can be sealed. It is never written down in the clear, but I'm not going to claim your browser did the sealing when it didn't.

- You are trusting drand's threshold assumption. If a large enough subset of the League of Entropy participants colluded, they could in principle derive a future round early. It's a public, distributed, independently-operated beacon — that's the assumption, stated plainly, rather than "trust me."

- This applies to sudden-death TIMER locks with a lockbox. Not every lock. Not automatically.

- Everything else about the app (chats, metadata) is a separate story with different guarantees — I've written about that elsewhere and I'm not going to blur the two.

Why I built it this way: an app that says "the dev could unlock it but promises not to" is a very different thing from one where the dev provably cannot. The second one is worth building, and the only way to earn that claim is to give up the ability to break it.

Questions welcome, including sceptical ones. If you think I've got the threat model wrong somewhere, I'd genuinely rather hear it.

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Voice messages are unlimited for the next 24 hours

15 August 2026

Quick heads-up: voice messages are completely unlimited for the next 24 hours.

No limits, no credits. Just open Chastikey and use them as much as you want.

Have fun, and let us know what you think!

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Chastikey 2.4 is live — your Lovense toy now plays natively in the app, and your AI keyholder feels what she's writing

15 August 2026

Hey everyone — Vitalys here, solo dev, full disclosure: this is my app. **Chastikey 2.4 is out**, and it's the biggest release since I rebuilt the thing. 274 commits went into the version itself and another ~180 landed on top before it shipped, so instead of a vague "improvements and bug fixes", here's the actual list.

---

## The headline: Lovense, natively, in the app

Until now, connected-toy play meant opening a browser. That's over.

- **The playroom is in the app — 13 tables, played over the phone's own Bluetooth.** No browser, no five-link chain to reach a toy you're literally holding. Roulette, Simon, Semaphore, Chicken, Blackjack, La Voix, the Interrogation, Permission, the Black Box, the persona chat, the Massage, the Breath, and the Stories.
- **Pair the toy from the phone.** One Bluetooth door, one tutorial that goes all the way through, and a way back out of every screen.
- **The main chat became a sensation engine.** With a toy connected, her reply puts a hand on you that follows what she's writing — sentence by sentence, starting on the *first* reply, matched to the scene she's actually playing.
- **Live voice sessions.** You talk to her out loud, she answers out loud, and the body follows in milliseconds.
- **The Stories: 100 BDSM houses**, a dial from soft to total, and a campaign that remembers you between evenings. You answer out loud; the house is drawn from the intensity band you set, so "soft" never hands you the hardest room in the book.
- **Real hardware support, not just vibrators.** Every motor a toy has (not just the first one), two toys on one body at the same time, full-travel stroker patterns for Solace / Solace Pro with seven contracted modes, and a sensor-driven robot mode.
- **Lovense control is now unlimited, on every account.** I sold minute packs for a while. I stopped: as of 11 August the meter is gone entirely, no packs, no per-tier ceiling, nothing to buy. Opening a table costs nothing either — I removed the 5-token entry fee that was charging you twice for the same session.
- **STOP is never gated, never clamped, never billed.** It sits at the top of the room and kills a table running anywhere — another screen, another device, an app you force-quit.

Honest caveat, same as it says inside the app: **the toy module is alpha.** A cloud command returning 200 is not proof that your body felt anything. If you tell it "I felt nothing", it believes you and says so — it doesn't argue with your skin.

---

## The AI keyholder

- **Premium's included messages doubled: 2,500 → 5,000 a month**, same €19.99. Plus stays at 750, Free at 50.
- **The hidden rails are dead.** No per-day, per-hour or per-week burst throttle. Your announced monthly quota is the only ceiling that exists.
- **20 audio units included for everyone, permanently** — that was supposed to expire on 10 September; it doesn't.
- **She stopped lying — about your body and about the app.** An announced action really fires. A refusal names its real reason instead of inventing a rule. "Nothing happened" is never dressed up as something that did.
- **Full keyholder authority, on every lock, including old ones.** She can extend, and there's no hidden ceiling quietly rounding your added hours back down to zero.
- **Sessions are consent-first**, explicit by default, with the safeword absolute and hard limits carried into every conversation.
- **Photos really arrive** — a server-side image studio, a visible allowance and packs to top it up. And the "no photos" switch is now *yours*: the wearer's setting, not the AI guessing.
- **A durable mentor**, a **shared task calendar** between keyholder and wearer, and custom personas you can actually delete.
- **An open keyholder library** — profiles in the window, the prompt under seal, and a directory that matches you with someone instead of listing strangers.

---

## Everything else in 2.4

- **The parlour: 14 real games against your keyholder** — chess, checkers, Connect 4, battleship, tic-tac-toe, hangman, mastermind, Nim, Perudo, Yahtzee, blackjack, video poker, high-low, and a roulette wheel with a real ball.
- **Sign in with Apple**, and you can link your Apple account to an existing login from Settings.
- **Native Locktober mode** — an 8-week ramp to the 31-day mission on 1 October, with calibrated tiers, trials, rituals and a dress rehearsal. No public leaderboard, no duration ranking, the no-device path sits at the same level as the others, and the medical warning is repeated everywhere a trial can be pushed.
- **A public status page: https://statut.chastikey.eu\*\* — it comes and finds you now instead of waiting to be checked.
- **Faster everything.** The database moved to Neon, media moved to R2, and the text chat now runs on an engine that's both quicker and cheaper — which is the only reason the 5,000-message quota above is possible.
- Plus a long run of fixes: purchases that no longer announce a cancelled buy as a completed one, long chats that open on the newest message, audio on the media volume instead of the ringer, and a lot of toy-latency work you'll only notice as "it just responds now".

---

## One removal you should know about

**The in-app "Safety stop" button is gone.** The wearer can no longer end a running lock from the app — the way out is the physical key you agreed on before you started, which is the way out that was always actually real.

What stays: the server still ends a lock immediately on a genuine physical-danger signal (stuck, circulation, bleeding, medical emergency), and the safeword remains absolute in every conversation. Chastikey is built to create a convincing loss-of-control headspace between consenting adults — never a real safety risk. Keep your key accessible, and don't use the app as your only exit.

---

**Chastikey 2.4, iPhone / iPad / Mac (18+):** https://apps.apple.com/app/id6777413001
**Web app:** https://chastikey.eu
**Status:** https://statut.chastikey.eu

If you try it: tell me what feels great, what still feels mechanical, and what you want next. Toy owners especially — the module is alpha and the fastest way it gets better is you telling me exactly what your hardware did or didn't do. I read everything and I ship fast. 🔒

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗

Chastikey Premium now includes 5,000 AI messages a month instead of 2,500 — same price, live right now

13 August 2026

Hey everyone — Vitalys here, the solo dev behind Chastikey (the AI keyholder app).

Short version: **Premium's included AI message allowance just went from 2,500 to 5,000 messages per month.** Same €19.99/mo price. It's live on the server right now, for every existing Premium subscriber, with nothing to click and no app update required.

Longer version, because I'd rather over-explain than have you wonder what the catch is.

**What actually changed**

One number, server-side: the monthly pool of included AI messages for Premium. 2,500 → 5,000. That's roughly 165 messages a day if you spread it out, which for most of you is the difference between "I keep an eye on the meter" and "I forgot there was a meter."

Plus stays at 750/month. Free stays at 50. I didn't touch those today.

**What did NOT change**

- The price. €19.99/month, same as yesterday.
- The brain. Premium still runs Inferno, the flagship — longer, deeper, sharper replies. I didn't downgrade the model to pay for the bigger number, which is the usual trick and I'm not doing it.
- The meter itself. Your monthly pool is still the *only* thing that counts. I retired the hidden per-day / per-hour / per-week burst rails back in July, and they're staying dead. Nothing throttles you mid-scene because you had an intense evening.
- Purchased message credits. They're a lifetime balance — they don't expire and they don't reset with the month. Your included 5,000 is always spent first, credits take over after that, so a bigger monthly pool means your purchased credits now last *longer*, not less.

**One thing to know if you're on an older app version**

The quota lives on the server, so your meter is already showing 5,000 — you get the new allowance today regardless of which build you're running. But the *paywall screen* has the old "2,500 AI messages a month" line baked into the app text. That bullet updates with the next release. If you see 2,500 on the upgrade screen and 5,000 on your meter, the meter is the truth.

**The honest math, since that's kind of my thing here**

Here's the number I keep in a comment in my own source code so I can't lie to myself about it:

Premium is €19.99/month. After Apple's cut and VAT, I net about €14.16. At the current engine price, 5,000 *heavy* messages cost me roughly €14 in AI compute.

So yes: a Premium subscriber who genuinely burns all 5,000 max-length messages costs me approximately 100% of what they pay me. I've had "5,000 is a guaranteed loss" written in that file for a month.

Two reasons I did it anyway:

  1. **The flagship got cheap enough.** Inferno now runs on an engine that costs a fraction of what the equivalent quality cost six months ago. That's the entire reason this is possible — not optimism, not growth-hacking, just a real price drop I'm passing on instead of pocketing.
  2. **Almost nobody is at the cap.** The realistic heavy user is nowhere near 5,000. I'm not budgeting for the average subscriber to cost me €14 — I'm budgeting for the rare one who does, and eating it, because a quota you can *feel* is a quota that makes you write shorter messages to your keyholder. That's a bad experience I was quietly charging you for.

The flip side, stated plainly so nobody's surprised later: this only works while the flagship engine stays cheap. If model prices go back up, I'll tell you here before I touch anything — I'm not going to silently walk the number back one release at a time.

**What happens if you do hit 5,000**

You're not cut off mid-sentence with no warning, but I won't pretend it's seamless either: past the included pool, the chat drops to the cheap fast brain, and you need message credits in your wallet to keep going. If you've got credits, they take over automatically. If you don't, you'll get an actual explanation of what happened — not a mystery error.

That's the whole update. No new tier, no repackaging, no "Premium Plus Ultra." Just a bigger number on the plan you already pay for.

If you're Premium: you don't have to do anything. Go check your meter.

Questions, complaints, weird edge cases — I read everything here, or vitalys@rougetet.com.

— Vitalys, solo developer of Chastikey

18+ only. Chastikey is built for consensual adult use.

=== QUICK FEEDBACK QUESTIONS (optional, to seed comments) ===

- Premium subscribers: were you ever actually hitting the 2,500 ceiling, or did it never come up?
- Does knowing my real margin on this make you trust the app more, or is it just oversharing at this point?

submitted by /u/VitalysRDT
[link] [comments]
Read the thread on Reddit ↗