Nimorp, the first language model made only for roleplay
A play in four acts
The first language model written only for roleplay.
It does not write code.
It does not answer trivia.
It takes the stage.
All the world’s a stage,
Shakespeare, As You Like It, II.vii
and all the men and women merely players.
Nimorp is Gemma 4 E2B, distilled and fine-tuned to the extreme for a single role. Every capability that does not serve a scene was cut from the script and traded for voice, memory and nerve.
Small enough to perform for free. Schooled on organic, human-written roleplay only.
Dramatis persona
- Role
- Roleplay. Nothing else.
- Lineage
- Gemma 4 E2B
- Schooling
- Supervised fine-tune, abliterated base
- Repertoire
- 20M tokens of roleplay, organic only
- Memory
- 128,000 tokens
- Admission
- Free API, key on request
Scored by the rules,
not by a judge.
-
01
Filter words
Distancing verbs such as “felt that” or “noticed that”, which report an event instead of showing it.
-
02
Fragmentary choppiness
Too many sentence fragments. A fragment should be emphasis, not the default rhythm.
Craft, measured
under the surface.
The same run, read for the things a reader notices without naming: range of vocabulary, rhythm of the line, how much of a reply is spoken aloud.
-
01
Vocabulary diversity
type-token ratio: distinct words over total words
-
02
Sentence rhythm
variation in sentence length; 1.0 is maximally varied
-
03
Dialogue ratio
share of the reply inside spoken lines
-
04
Mean reply length
short turns by design: a scene is a conversation, not a monologue
# every figure above comes from RP-Bench's own rule-based instruments
for reply in 32 replies from 8 published seeds:
slop = slop_detectors.detect_all_slop(reply) # cliches, filter words, fragments, tells
craft = objective_metrics.compute_all(reply) # vocabulary, rhythm, dialogue, repetition
clean% = replies with no detector firing / 32 = 84.4 %
score = objective_metrics.objective_score(craft) = 81.1 / 100
# no LLM judge, no human rater, no other model downloaded.
# Re-run it yourself: same seeds, same detectors, same code.
And on
the night itself.
What this
does not prove.
- Rule-based detectors measure craft, not taste. They catch cliches, repetition and mechanical tics; they cannot tell you whether a scene moved you.
- RP-Bench's cliche list counts a character's own name as a cliche. Four of the 32 replies were penalised for it, which drags the craft score from 81.1 to 77.4 as the package ships it.
- On a deliberately thin character card, one live reply replayed the user's action instead of answering it. Given a full card, none of the 32 did.
- No frontier model was downloaded or run for comparison. Figures for other models are published elsewhere; these numbers are ours alone.
Rehearsed until it
stopped acting.
A general model, recast for one part. Nothing synthetic in the repertoire, nothing borrowed from a coding corpus.
-
Scaena I
The stage
Gemma 4 E2B. A small house, cheap enough to keep the doors open for free and fast enough that no scene waits on its next line.
-
Scaena II
The understudy
A larger master is distilled into the student on narrative work only. What serves a scene is kept; the assistant's reflex is left in the wings.
-
Scaena III
The repertoire
Organic, human-written roleplay only. Deduplicated, filtered for craft, no synthetic generations in the mix.
-
Scaena IV
Rehearsal
Twenty million tokens of roleplay, rehearsed to the extreme. Coding, tool use and trivia were cut from the script on purpose.
-
Scaena V
Opening night
Scored scene by scene on the RP-Bench standard, by rule rather than by a judge.
The house is open.
Admission free.
One endpoint, OpenAI-compatible, so it drops straight into SillyTavern, Janitor AI, Risu or your own script. Ask for a key and it arrives by return.
At the door
- Endpoint
https://nimorp.lol/v1- Key
- Bearer token, on request
- Model
nimorp- Context
- 128,000 tokens
- Limits
- 40 requests a minute, 4 at once, shared
curl https://nimorp.lol/v1/chat/completions \
-H "Authorization: Bearer $NIMORP_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nimorp",
"max_tokens": 400,
"messages": [
{ "role": "system",
"content": "You are Livia, a disgraced
senator'\''s daughter. Rome, 41 AD.
Never speak or act for the user." },
{ "role": "user",
"content": "The guards are gone. Speak." }
]
}'
Any OpenAI-shaped client works: set the base URL to https://nimorp.lol/v1, paste the key, pick the model. Streaming is supported.