Features
Catches what word filters miss
Jev reads what a message means, not a list of banned words. “How old are you? Add me on snap” has no bad word in it, and still gets flagged as grooming.
You set the rules
Every category has its own threshold and actions: hide the message, warn the player, alert staff, kick, or run a command from your ban plugin.
Staff see everything
Blocked and borderline messages show up for staff with who sent them, what they said, and how sure Jev was.
Keeps working when something is down
If the API is slow or unreachable, chat keeps flowing, or waits, whichever you choose. The server never freezes.
How it works
Jev is a model that makes decisions instead of writing text. For each message it says how likely it is to be harassment, a scam, grooming and so on. jev-guard turns those numbers into actions.
- 1
A player sends a message.
jev-guard picks it up next to the game's own chat handling, so the server keeps running while it checks.
- 2
Jev scores it.
The message goes to Jev together with your categories. Jev answers with how likely each one is, usually in under 200 ms.
- 3
Your rules decide.
Above a category's threshold, its actions run. A bit below it, the message goes to staff for review. Otherwise nothing happens.
Pick how strict it is
One line in the config decides what happens to a message Jev flags. You can switch at any time.
shadow
Only logs what Jev would flag.
Nothing is blocked. Start here for a few days to see how it judges your chat.
deliver
Messages show up right away.
Warnings and staff alerts follow a moment later. A bad message is briefly visible.
hold
Messages wait for Jev's answer.
Flagged messages never reach chat. Players notice a delay of about 200 ms.
Installation
- 1
Download the jar and put it in plugins/ on Paper or Folia, or mods/ on Hytale.
- 2
Start the server once. jev-guard creates its settings file, config.yml.
- 3
Add a TypeSafe API key, or your Cloudflare account ID and token.
- 4
Run /jevguard reload, then /jevguard test you are trash to see a verdict.
plugins/jev-guard/config.yml
# config.yml
mode: shadow # shadow, deliver or hold
api:
provider: typesafe # or cloudflare, through AI Gateway
typesafe:
key: "" # or set TYPESAFE_API_KEY
categories:
harassment:
description: "Insults, threats, or bullying aimed at a player."
threshold: 0.8
actions: [cancel, warn, notify-staff]
scam:
threshold: 0.8
actions: [cancel, "command: mute {player} 1h Scam"]Where Jev runs
You need an account with one of these:
TypeSafe
An API key from TypeSafe, the company behind Jev.
The direct route. Pay TypeSafe for what you use.
Cloudflare
A Cloudflare account with AI Gateway credits.
Every check shows up in your gateway's logs and analytics, billed to Cloudflare.
Supported games
FAQ
- Is it free?
- The plugin is free and open source. Jev itself is a paid API that you use with your own account. In our tests one check cost about $0.000024, roughly $0.18 an hour for chat at two messages per second.
- What leaves my server?
- Only the text of each message. No player names or UUIDs. Tell your players that chat is checked by an AI service; in many countries you have to.
- Will it slow the server down?
- No. Checks never run on the main game thread. In hold mode a message waits for its verdict, at most 1.5 seconds by default.
- Can players trick it?
- Sometimes. A message written to argue for its own verdict can move the score, and harassment spread over several messages is not seen as one. Keep staff in the loop with the review band.
- Does it replace my moderators?
- No. It takes the obvious cases off their plate and sends the unclear ones to them.
Contributing
jev-guard is developed in the open. Bug reports, ideas and pull requests are welcome on GitHub.

