An unofficial generator for use with Cyberpunk RED.
A generator that generates NPCs based on json configs using the specified rank and role.
Generates:
-
Description
The nationality is selected based on the approximate number of different nationalities in Night City, and a first name and surname are generated accordingly.
A backstory, appearance, values, lovers, enemies and friends are generated based on the core book’s generation rules.
If an AI model is connected, an easy-to-read description of the character’s appearance and behaviour is generated. -
Stats
Stats are generated based on the list of stats for each role for a street rat from the rulebook: a random set is selected and scaled according to the rank. The lowest rank has a stat sum of 40, the highest has a stat sum of 80.
-
Skills
Skills are generated based on the list of skills for the role for a street rat from the rulebook: the list is taken and scaled according to rank. The lowest rank has a skill sum of 50, the highest has a skill sum of 130.
-
Cyberware
Cyberware is generated based on a list of cyberware unique to each role and a purchase budget that is determined by rank. The generator will attempt to buy dependent cyberware and paired cyberware. If a cyberware has modifiers, they will be added to stats/skills.
-
Armor
If armor or shields are generated in cyberware, they will be added. Otherwise, the generator will try to buy armor according to the role's preferences. For example, media will be satisfied with Kevlar®, while solo will try to buy Metalgear®. If the budget is not enough, the generator will try to buy a cheaper armor. A body armor is generated with priority.
-
Weapon
If a weapon was generated in the cyberware, it will be added. If there was no weapon preferred by the role among these cyberware, it will be generated according to the budget. The main weapon will be generated with priority.
All long-range weapons are generated unloaded, the user must select the required ammunition, subtract the amount of ammunition in the inventory and insert it into the weapon.
-
Ammunition for selected weapons and grenades
Some amount of basic ammunition will always be added. Further grenades and improved ammunition will be added according to role preference as long as there is enough money.
-
Equipment
Different tools will be generated that best suit the selected role. The tools will not replicate cyberware with similar functionality.
-
Drugs
If Airhypo was generated in the equipment, drugs will be generated that depend on the role of the NPC. For example, a solo will prefer Berserker, a netrunner - Sixgun, and a rockerboy will prefer Prime Time.
-
Different junk for the entourage
Various items that have no practical use and are intended to add realism to the contents of pockets. Some of them can be used by gamemaster for spontaneous stories (photo, letter, corporate business card), hiding places (key to safe, note). Most of them are worthless, but expensive items like a gold chain can be found.
You may be a netrunner and not need such explanations, but not everyone here knows their way around a computer, choom!
This is a console application, which means that you need to do the following to get a sensible result:
- On the right side of the github page there is a releases section, open the last one.
- Download
npc_generator_for_cp_red.zipand unpack it. The archive contains the executable, theconfigsdirectory, and a ready-to-editsettings.jsonin the same directory as the executable. - Open Explorer where the
npc_generator_for_cp_red.exefile is, type "cmd" in the address bar and press Enter. - Now you should see a command prompt opened in the right directory where you can type commands from examples.
Try this for starters:npc_generator_for_cp_red.exe --rank=captain --role=solo.
Calling npc_generator_for_cp_red.exe without arguments generates a captain-rank solo.
Full -h output
usage: main.py [-h]
[--rank {private,corporal,lieutenant,captain,lieutenant_colonel,lieutenant_general,general,0,1,2,3,4,5,6}]
[--role {rockerboy,solo,netrunner,tech,medtech,media,exec,lawman,fixer,nomad,civilian}]
[--nationality {United States,Mexico,Japan,China,India,Philippines,Canada,Russia,Vietnam,Colombia,Brazil,South Korea,Indonesia,Australia,Argentina,Germany,United Kingdom,Chile,Pakistan,Thailand,France,Ukraine,Italy,Spain,Bangladesh,Nigeria,Poland,New Zealand,Türkiye,Netherlands,Egypt,South Africa,Ethiopia,Portugal,Nepal,Romania,Belgium,Switzerland,Iran,Sweden,Austria,Kenya,Czechia,Uzbekistan,Greece,Ireland,Ghana,Hungary,Denmark,Norway,Algeria,Saudi Arabia,Finland,Bulgaria,Azerbaijan,United Arab Emirates,Israel,Slovakia,Croatia,Georgia,Jordan,Lithuania,Bosnia & Herzegovina,Armenia,Cyprus,Latvia,Albania,Slovenia,Estonia,Palestinian Territories,North Macedonia,Luxembourg,Malta,Iceland,Bahrain,Liechtenstein}]
[--allow-non-basic-ammo | --no-allow-non-basic-ammo]
[--allow-grenades | --no-allow-grenades]
[--allow-armor | --no-allow-armor]
[--allow-cyberware | --no-allow-cyberware]
[--allow-borgware | --no-allow-borgware]
[--allow-drugs | --no-allow-drugs]
[--allow-equipment | --no-allow-equipment]
[--allow-money | --no-allow-money]
[--allow-junk | --no-allow-junk]
[--allow-melee-weapon | --no-allow-melee-weapon]
[--allow-ranged-weapon | --no-allow-ranged-weapon]
[--allow-martial-arts | --no-allow-martial-arts]
[--allow-description | --no-allow-description]
[--allow-lifepath | --no-allow-lifepath] [--seed SEED]
[--model-id MODEL_ID] [--model-api-key MODEL_API_KEY]
[--model-base-url MODEL_BASE_URL]
[--model-language MODEL_LANGUAGE] [--flat | --no-flat]
[--json-output | --no-json-output]
[--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}]
[--forbidden-skills FORBIDDEN_SKILLS [FORBIDDEN_SKILLS ...]]
options:
-h, --help show this help message and exit
NPC Customization:
--rank {private,corporal,lieutenant,captain,lieutenant_colonel,lieutenant_general,general,0,1,2,3,4,5,6}
A measure of the development of a given NPC, where
private is an unskilled and unknown newcomer, and
general is a world-class character. Rank determines
how advanced an NPC's skills are and how cool his
equipment is. (default: captain)
--role {rockerboy,solo,netrunner,tech,medtech,media,exec,lawman,fixer,nomad,civilian}
An occupation the NPC is known by on The Street.
`civilian` means that this is just a regular human.
The role can determine the equipment and the direction
of the NPC's skills. The default value is `solo`.
(default: solo)
--nationality {United States,Mexico,Japan,China,India,Philippines,Canada,Russia,Vietnam,Colombia,Brazil,South Korea,Indonesia,Australia,Argentina,Germany,United Kingdom,Chile,Pakistan,Thailand,France,Ukraine,Italy,Spain,Bangladesh,Nigeria,Poland,New Zealand,Türkiye,Netherlands,Egypt,South Africa,Ethiopia,Portugal,Nepal,Romania,Belgium,Switzerland,Iran,Sweden,Austria,Kenya,Czechia,Uzbekistan,Greece,Ireland,Ghana,Hungary,Denmark,Norway,Algeria,Saudi Arabia,Finland,Bulgaria,Azerbaijan,United Arab Emirates,Israel,Slovakia,Croatia,Georgia,Jordan,Lithuania,Bosnia & Herzegovina,Armenia,Cyprus,Latvia,Albania,Slovenia,Estonia,Palestinian Territories,North Macedonia,Luxembourg,Malta,Iceland,Bahrain,Liechtenstein}
Nationality used to generate the NPC name, e.g. Russia
or United States. If omitted, a random nationality is
used. (default: None)
--allow-non-basic-ammo, --no-allow-non-basic-ammo
If specified, allow non-basic ammo, such as armor
piercing and expansive. (default: True)
--allow-grenades, --no-allow-grenades
If specified, allow grenades. (default: True)
--allow-armor, --no-allow-armor
If specified, allow armor items (cyberware armor will
still be there). (default: True)
--allow-cyberware, --no-allow-cyberware
If specified, allow cyberware. (default: True)
--allow-borgware, --no-allow-borgware
If specified, allow borgware. Usually you don't want
regular mooks to use that cool stuff. (default: False)
--allow-drugs, --no-allow-drugs
If specified, allow adding drugs. Drugs may be added
or not depending on airhypo generation. (default:
True)
--allow-equipment, --no-allow-equipment
If specified, allow equipment, such as flashlight and
airhypo (cyberware equipment will still be there).
(default: True)
--allow-money, --no-allow-money
If specified, allow money. (default: True)
--allow-junk, --no-allow-junk
If specified, allow useless junk for flavor. (default:
True)
--allow-melee-weapon, --no-allow-melee-weapon
If specified, allow melee weapons (brawling, martial
arts and cyberware weapons will still be there).
(default: True)
--allow-ranged-weapon, --no-allow-ranged-weapon
If specified, allow ranged weapons (cyberware weapons
will still be there). (default: True)
--allow-martial-arts, --no-allow-martial-arts
If specified, allow martial arts (brawling will still
be there). (default: True)
--allow-description, --no-allow-description
If specified, allow AI generation of the NPC
description. (default: False)
--allow-lifepath, --no-allow-lifepath
If specified, randomly generate the NPC Lifepath from
the core rulebook tables. (default: True)
Generation settings:
--seed SEED A number for the random engine. The same seed always
gives the same result when the other arguments are
unchanged. Zero means "use Unix epoch". (default: 0)
--model-id MODEL_ID Model identifier used to generate the NPC description.
(default: qwen/qwen3.6-35b-a3b)
--model-api-key MODEL_API_KEY
API key for the OpenAI-compatible model server.
(default: lm-studio)
--model-base-url MODEL_BASE_URL
Base URL of the OpenAI-compatible model server.
(default: http://localhost:1234/v1)
--model-language MODEL_LANGUAGE
Language in which the model generates the NPC
description. (default: English)
Appearance:
--flat, --no-flat If specified, don't use columns. Easier for editing
and copy-pasting, but takes much more space. (default:
None)
--json-output, --no-json-output
If specified, output results in JSON format. (default:
False)
--log-level {CRITICAL,FATAL,ERROR,WARN,WARNING,INFO,DEBUG,NOTSET}
Logging level. (default: INFO)
Compatibility:
--forbidden-skills FORBIDDEN_SKILLS [FORBIDDEN_SKILLS ...]
A skill that must not be generated because the target
module does not support it. Accepts one or more
values. (default: ())
Every Boolean option has a positive and negative form. Command-line arguments override values loaded from
settings.json.
For balance details, see ranks.xlsx. There is a ruff explanation of every rank:
| Rank number | Rank name | Combat number | Description |
|---|---|---|---|
| 0 | private | 7-9 | weak boosters |
| 1 | corporal | 8-10 | boosters |
| 2 | lieutenant | 10-13 | starter edgerunners |
| 3 | captain | 12-14 | advanced edgerunners, police |
| 4 | lieutenant_colonel | 13-16 | high profile gangs, local corps |
| 5 | lieutenant_general | 16-17 | megacorps, military, mafia |
| 6 | general | 17-18 | MaxTac, special forces, legends |
Private (the lowest rank, punching dolls for the initial characters)
Input:--rank=0 --role=solo --allow-descriptionPossible output:
<=================================================================================================>
Andrea Long (United States, 21 yo)
Lifepath:
Cultural origin: United States
Language: English
Personality: Shy and secretive
Clothing style: Generic Chic (Standard, Colorful, Modular)
Hairstyle: Mohawk
Affectation: Tattoos
Values most: Power
Feelings about people: Every person is a valuable individual.
Most valued person: A brother or sister
Most valued possession: A photograph
Family background: Nomad Pack
Background details: Home was a mix of rugged trailers, vehicles, and road kombis; family, fresh food, driving,
fighting, and home schooling shaped childhood.
Childhood environment: In the ruins of a deserted town or city taken over by Reclaimers.
Family crisis: Your family is imprisoned, and you alone escaped.
Friends:
None
Enemies:
Enemy 1 - Who: Person working for you
Cause: One of you was a business rival.
Wronged party: You
Resources: The local cops or other Lawmen.
Reaction: Avoid the scum.
Enemy 2 - Who: Government official
Cause: Caused the other to lose face or status.
Wronged party: They
Resources: Themselves and a few friends.
Reaction: Set them up for a crime or other transgression they didn't commit.
Enemy 3 - Who: Boosterganger
Cause: Caused a major public humiliation.
Wronged party: You
Resources: An entire city, government, or agency.
Reaction: Avoid the scum.
Tragic love affairs:
Love affair 1 - What happened: A personal goal or vendetta came between you and your lover.
Life goal: Get off The Street no matter what it takes.
Description:
A jagged crimson mohawk cuts across a scalp scarred by old road burns, framing a face where a Kill Display glows
faintly against the jawline. She wears modular leathers dyed in faded electric blue and rust, tailored to move
without whispering. Her build is lean and unassuming, built for endurance rather than brute force, with a quiet,
deliberate pace that never rushes. When she shifts her weight, her movements are fluid and precise, shoulders
rolling with a practiced economy.
Sharp cheekbones and a steady gaze give her a striking, almost polished presence, sharpened by a half-tube of
rouge noir she applies with methodical care. She speaks little, listening with a practiced stillness that feels
both shy and calculating. Her posture carries the quiet tension of someone who has watched too much burn, yet
her eyes linger on people with a rare, unspoken respect. She never fidgets unnecessarily, preferring to stand
just slightly off-center, ready to step back or step forward without breaking rhythm. The neon of the street
reflects off her leather collar, but she keeps her hands tucked close, knuckles pale from gripping her own
sleeves.
Has items total worth of 382eb
Stats: Conditions:
[4] INT HP: 30/30 (Seriously Wounded: 15)
[5] REF TraumaTeam status: NONE
[5] DEX Can evade bullets: False
[2] TECH No intangible obscurement penalties: False
[6] COOL Has flashes of light protection: False
[4] WILL Has ears protection: False
[4] LUCK Has breath protection: True (Anti-Smog Breathing Mask)
[4] MOVE
[4] BODY
[4] EMP
Skills:
Education Technique Social
[4(INT)=4] Accounting [2(TECH)=2] AirVehicleTech [6(COOL)=6] Bribery
[4(INT)=4] AnimalHandling [2(TECH)=2] BasicTech [4(EMP)+2=6] Conversation
[4(INT)=4] Bureaucracy [2(TECH)=2] Cybertech [4(EMP)+2=6] HumanPerception
[4(INT)=4] Business [2(TECH)=2] Demolitions [6(COOL)+3=9] Interrogation
[4(INT)=4] Composition [2(TECH)=2] ElectronicsSecurityTech [6(COOL)+2=8] Persuasion
[4(INT)=4] Criminology [2(TECH)+3=5] FirstAid [6(COOL)=6] PersonalGrooming
[4(INT)=4] Cryptography [2(TECH)=2] Forgery [6(COOL)=6] Streetwise
[4(INT)=4] Deduction [2(TECH)=2] LandVehicleTech [6(COOL)=6] Trading
[4(INT)+2=6] Education [2(TECH)=2] PaintDrawSculpt [6(COOL)=6] WardrobeStyle
[4(INT)=4] Gamble [2(TECH)=2] Paramedic Body
[4(INT)=4] LibrarySearch [2(TECH)=2] PhotographyFilm [5(DEX)+2=7] Athletics
[4(INT)+2=6] LocalExpertYourHome [2(TECH)=2] PickLock [5(DEX)=5] Contortionist
[4(INT)+3=7] Tactics [2(TECH)=2] PickPocket [5(DEX)=5] Dance
[4(INT)=4] WildernessSurvival [2(TECH)=2] SeaVehicleTech [4(WILL)=4] Endurance
[4(INT)+2=6] LanguageStreetslang [2(TECH)=2] Weaponstech [4(WILL)+3=7] ResistTortureDrugs
Awareness Fighting [5(DEX)+2=7] Stealth
[4(WILL)+2=6] Concentration [5(DEX)=5] Brawling Ranged_Weapon
[4(INT)=4] ConcealRevealObject [5(DEX)+3=8] Evasion [5(REF)=5] Archery
[4(INT)=4] LipReading [5(DEX)+3=8] MeleeWeapon [5(REF)+3=8] Autofire
[4(INT)+3=7] Perception [5(REF)=5] Initiative [5(REF)+3=8] Handgun
[4(INT)=4] Tracking [5(DEX)+1=6] MartialArts (Kung Fu) [5(REF)=5] HeavyWeapons
Control Performance [5(REF)+3=8] ShoulderArms
[5(REF)=5] DriveLandVehicle [6(COOL)=6] Acting
[5(REF)=5] PilotAirVehicle
[5(REF)=5] PilotSeaVehicle
[5(REF)=5] Riding
Cyberware:
Fashionware [1/7]
Kill Display [100eb]
Armor: Ranged weapons:
Leathers (Head) [20eb (everyday), SP=4/4] [8(S)/8(A)] Chadran Arms "City Reaper" (poor) [50eb (costly), Damage=3d6, ROF=1, Mag=/40 ()]
Leathers (Body) [20eb (everyday), SP=4/4] Melee weapons:
[8] Machete [50eb (costly), Damage=2d6, ROF=2]
[6] MartialArts (Kung Fu) [Damage=1d6, ROF=2]
Inventory:
Ammo Equipment / Drugs Junk
[1] Grenade (Armor-Piercing) [100eb (premium)] [1] Anti-Smog Breathing Mask [20eb (everyday)] [48] Eddies [1eb (cheap)]
[80] Heavy Pistol (Basic) [1eb (cheap)] [1] Area Streetmap [10eb (cheap)]
[1] Prayer Beads [10eb (cheap)]
[1] A pair of six-sided dice
[1] Half-Used Tube of Rouge Noir Lipstick
[1] Zip Ties
[1] Storage Locker Key
Captain (equivalent of the players' starting characters)
Input:--rank=3 --role=solo --allow-descriptionPossible output:
<=================================================================================================>
Huang Shan Ben (Japan, 31 yo)
Lifepath:
Cultural origin: Japan
Language: Japanese
Personality: Sneaky and deceptive
Clothing style: Generic Chic (Standard, Colorful, Modular)
Hairstyle: Neat and short
Affectation: Spiked boots or heels
Values most: Knowledge
Feelings about people: Wipe ‘em all out and let the cockroaches take over.
Most valued person: A pet
Most valued possession: A photograph
Family background: Corporate Managers
Background details: Well-to-do, with a large home, safe neighborhood, nice cars, and a mix of private and
corporate education.
Childhood environment: In a Nomad pack with roots in transport (ships, planes, caravans).
Family crisis: Your family is imprisoned, and you alone escaped.
Friends:
None
Enemies:
Enemy 1 - Who: Ex-friend
Cause: One of you was a romantic rival.
Wronged party: You
Resources: Themselves and a close friend.
Reaction: Go into a murderous rage and try to physically rip their face off.
Tragic love affairs:
None
Life goal: Save, if possible, anyone else involved in your background, like a lover or family member.
Description:
A tailored, modular jacket drapes over a rigid Medium Armorjack, its panels shifting with practiced ease. His
frame is lean and wiry, built for endurance rather than raw mass. Every step is economical, yet his movements
carry a fluid, predatory grace that makes him seem to glide through crowded streets. Striking, polished features
command attention—sharp cheekbones, a clean jawline, and an effortless, curated elegance that feels both
expensive and deliberately understated. Subtle telemetry glows from a slim chest strap, while a discreet wrist
rig flashes a quiet crimson tally. His eyes are fitted with tinted OptiShield lenses that catch the neon glare
without reflecting it. He watches everything with a calculating stillness, fingers occasionally brushing a worn
photograph tucked into his collar. His gaze lingers a fraction too long, dissecting conversations before
offering a polished, untrustworthy smile. He treats every interaction as a ledger to be balanced, always three
steps ahead, moving through the sprawl like a ghost in tailored fabric.
Has items total worth of 2012eb
Stats: Conditions: Actions: Abilities:
[6] INT HP: 40/40 (Seriously Wounded: 20) Black Lace Radio Communicator
[7-2(Medium Armorjack (Head))=5] REF TraumaTeam status: NONE Synthcoke Handcuffs
[7-2(Medium Armorjack (Head))=5] DEX Can evade bullets: False
[3] TECH No intangible obscurement penalties: False
[8] COOL Has flashes of light protection: True (OptiShield)
[6] WILL Has ears protection: False
[5] LUCK Has breath protection: True (Anti-Smog Breathing Mask)
[5-2(Medium Armorjack (Head))=3] MOVE
[6] BODY
[4] EMP
Skills:
Education Technique Social
[6(INT)=6] Accounting [3(TECH)=3] AirVehicleTech [8(COOL)=8] Bribery
[6(INT)=6] AnimalHandling [3(TECH)=3] BasicTech [4(EMP)+2=6] Conversation
[6(INT)=6] Bureaucracy [3(TECH)=3] Cybertech [4(EMP)+2=6] HumanPerception
[6(INT)=6] Business [3(TECH)=3] Demolitions [8(COOL)+6=14] Interrogation
[6(INT)=6] Composition [3(TECH)=3] ElectronicsSecurityTech [8(COOL)+2=10] Persuasion
[6(INT)=6] Criminology [3(TECH)+6=9] FirstAid [8(COOL)=8] PersonalGrooming
[6(INT)=6] Cryptography [3(TECH)=3] Forgery [8(COOL)=8] Streetwise
[6(INT)=6] Deduction [3(TECH)=3] LandVehicleTech [8(COOL)=8] Trading
[6(INT)+2=8] Education [3(TECH)=3] PaintDrawSculpt [8(COOL)=8] WardrobeStyle
[6(INT)=6] Gamble [3(TECH)=3] Paramedic Body
[6(INT)=6] LibrarySearch [3(TECH)=3] PhotographyFilm [5(DEX)+2=7] Athletics
[6(INT)+2=8] LocalExpertYourHome [3(TECH)=3] PickLock [5(DEX)=5] Contortionist
[6(INT)+6=12] Tactics [3(TECH)=3] PickPocket [5(DEX)=5] Dance
[6(INT)=6] WildernessSurvival [3(TECH)=3] SeaVehicleTech [6(WILL)=6] Endurance
[6(INT)+2=8] LanguageStreetslang [3(TECH)=3] Weaponstech [6(WILL)+6=12] ResistTortureDrugs
Awareness Ranged_Weapon [5(DEX)+2=7] Stealth
[6(WILL)+2=8] Concentration [5(REF)=5] Archery Control
[6(INT)=6] ConcealRevealObject [5(REF)+6=11] Autofire [5(REF)=5] DriveLandVehicle
[6(INT)=6] LipReading [5(REF)+6=11] Handgun [5(REF)=5] PilotAirVehicle
[6(INT)+6=12] Perception [5(REF)=5] HeavyWeapons [5(REF)=5] PilotSeaVehicle
[6(INT)=6] Tracking [5(REF)+6=11] ShoulderArms [5(REF)=5] Riding
Fighting Performance
[5(DEX)+2=7] Brawling [8(COOL)=8] Acting
[5(DEX)+6=11] Evasion
[5(DEX)+6=11] MeleeWeapon
[5(REF)=5] Initiative
Cyberware:
Auditory System [1/1] Fashionware [2/7] External Cyberware [1/7]
Discount Cyberaudio Suite [100eb] [1/1] Kill Display [100eb] OptiShield [500eb]
Radio Communicator [100eb] Biomonitor [100eb]
Armor: Ranged weapons:
Medium Armorjack (Head) [100eb (premium), SP=12/12] [11(S)/11(A)] Militech "Mini-Gat" [100eb (premium), Damage=2d6, ROF=1, Mag=/30 ()]
Medium Armorjack (Body) [100eb (premium), SP=12/12] Melee weapons:
[12] Naginata (excellent) [500eb (expensive), Damage=4d6, ROF=1]
[11] Unarmed [Damage=2d6, ROF=2]
Inventory:
Ammo Equipment / Drugs Junk
[1] Grenade (Armor-Piercing) [100eb (premium)] [1] Airhypo [50eb (costly)] [504] Eddies [1eb (cheap)]
[60] Medium Pistol (Basic) [1eb (cheap)] [1] Handcuffs [50eb (costly)] [1] Zip Ties
[1] Black Lace [50eb (costly)] [1] Poker Chip
[1] Carryall [20eb (everyday)]
[1] Anti-Smog Breathing Mask [20eb (everyday)]
[1] Synthcoke [20eb (everyday)]
General (Adam Smasher)
Input:--rank=6 --role=solo --allow-descriptionPossible output:
<=================================================================================================>
Nancy Soto (United States, 53 yo)
Lifepath:
Cultural origin: United States
Language: English
Personality: Stable and serious
Clothing style: Generic Chic (Standard, Colorful, Modular)
Hairstyle: Mohawk
Affectation: Spiked boots or heels
Values most: Honesty
Feelings about people: People are untrustworthy. Don't depend on anyone.
Most valued person: A parent
Most valued possession: A piece of jewelry
Family background: Corporate Technicians
Background details: Middle-middle class, with a comfortable conapt or Beaverville home and corporate-run
technical schooling.
Childhood environment: Spent in a safe Corp Zone walled off from the rest of the City.
Family crisis: Your family vanished. You are the only remaining member.
Friends:
None
Enemies:
Enemy 1 - Who: Ex-lover
Cause: One of you was a romantic rival.
Wronged party: They
Resources: Themselves and a few friends.
Reaction: Go into a murderous rage and try to physically rip their face off.
Enemy 2 - Who: Estranged relative
Cause: Turned down the other's offer of a job or romantic involvement.
Wronged party: You
Resources: An entire city, government, or agency.
Reaction: Backstab them indirectly.
Enemy 3 - Who: Boosterganger
Cause: Turned down the other's offer of a job or romantic involvement.
Wronged party: You
Resources: Themselves and a close friend.
Reaction: Go into a murderous rage and try to physically rip their face off.
Tragic love affairs:
None
Life goal: Get rid of a bad reputation.
Description:
A sharp, geometric mohawk dyed in fading corporate blue frames a face carved by quiet suspicion. She stands
broad-shouldered and densely muscled, her physique honed to an unyielding solidity. Despite the polished chrome
arms—one ending in a heavy, toothed ChainRipp, the other housing a popup SMG and a compact grenade launcher—she
moves with economical precision. Each step is measured, her cyberlegs terminating in sharply spiked heels that
click against the pavement like a metronome.
She wears a modular, color-blocked trench coat over sleek tactical gear, tailored to look expensive in the
sprawl. Cybereyes glint with a faint targeting reticle, and a slim kill-display band wraps her wrist. Her beauty
is striking but severe, accentuated by sharp cheekbones and a calm, unreadable expression.
She rarely lingers, scanning perimeters with a steady gaze. When listening, she stands perfectly still,
shoulders squared, waiting for others to reveal their hand first. Tapping a single finger against her thigh
betrays her impatience with half-truths. City neon catches her chrome, but she pays it no mind, moving through
the grime with deliberate grace.
Has items total worth of 25312eb
Stats: Conditions: Actions: Abilities:
[8] INT HP: 55/55 (Seriously Wounded: No, Pain Editor) Sandevistan Appetite Controller
[8-4(Metalgear® (Head))=4] REF TraumaTeam status: EXECUTIVE Berserker Radio Communicator
[8-4(Metalgear® (Head))=4] DEX Can evade bullets: False Timewarp Targeting Scope
[8] TECH No intangible obscurement penalties: False Black Lace Jump Booster
[8] COOL Has flashes of light protection: True (Anti-Dazzle) Synthcoke Jump Booster
[8] WILL Has ears protection: True (Level Damper) Radar Detector
[8] LUCK Has breath protection: True (Anti-Smog Breathing Mask) Flashlight
[8-4(Metalgear® (Head))=4] MOVE
[8+2(Grafted Muscle and Bone Lace)=10] BODY
[2] EMP
Skills:
Education Technique Social
[8(INT)=8] Accounting [8(TECH)=8] AirVehicleTech [8(COOL)=8] Bribery
[8(INT)=8] AnimalHandling [8(TECH)=8] BasicTech [2(EMP)+3=5] Conversation
[8(INT)=8] Bureaucracy [8(TECH)=8] Cybertech [2(EMP)+3=5] HumanPerception
[8(INT)=8] Business [8(TECH)=8] Demolitions [8(COOL)+10=18] Interrogation
[8(INT)=8] Composition [8(TECH)=8] ElectronicsSecurityTech [8(COOL)+3=11] Persuasion
[8(INT)=8] Criminology [8(TECH)+10=18] FirstAid [8(COOL)=8] PersonalGrooming
[8(INT)=8] Cryptography [8(TECH)=8] Forgery [8(COOL)=8] Streetwise
[8(INT)=8] Deduction [8(TECH)=8] LandVehicleTech [8(COOL)=8] Trading
[8(INT)+3=11] Education [8(TECH)=8] PaintDrawSculpt [8(COOL)=8] WardrobeStyle
[8(INT)=8] Gamble [8(TECH)=8] Paramedic Body
[8(INT)=8] LibrarySearch [8(TECH)=8] PhotographyFilm [4(DEX)+3=7] Athletics
[8(INT)+3=11] LocalExpertYourHome [8(TECH)=8] PickLock [4(DEX)=4] Contortionist
[8(INT)+10=18] Tactics [8(TECH)=8] PickPocket [4(DEX)=4] Dance
[8(INT)=8] WildernessSurvival [8(TECH)=8] SeaVehicleTech [8(WILL)=8] Endurance
[8(INT)+3=11] LanguageStreetslang [8(TECH)=8] Weaponstech [8(WILL)+10+2(Toxin Binders)=20] ResistTortureDrugs
Awareness Ranged_Weapon [4(DEX)+3=7] Stealth
[8(WILL)+3=11] Concentration [4(REF)=4] Archery Control
[8(INT)=8] ConcealRevealObject [4(REF)+10=14] Autofire [4(REF)=4] DriveLandVehicle
[8(INT)=8] LipReading [4(REF)+10=14] Handgun [4(REF)=4] PilotAirVehicle
[8(INT)+10=18] Perception [4(REF)=4] HeavyWeapons [4(REF)=4] PilotSeaVehicle
[8(INT)=8] Tracking [4(REF)+10=14] ShoulderArms [4(REF)=4] Riding
Fighting Performance
[4(DEX)+3=7] Brawling [8(COOL)=8] Acting
[4(DEX)+10=14] Evasion
[4(DEX)+10=14] MeleeWeapon
[4(REF)+3(Sandevistan)=7] Initiative
Cyberware:
Internal Cyberware [7/7] Shoulders [2/2] Eye Sockets [2/2]
Grafted Muscle and Bone Lace [1000eb] Cyberarm [500eb] [4/4] Cybereye [100eb] [2/3]
Appetite Controller [500eb] Popup Ranged Weapon (SMG) [500eb] Targeting Scope [500eb]
Grafted Muscle and Bone Lace [1000eb] Popup Grenade Launcher [500eb] Anti-Dazzle [100eb]
Bodyweight AutoInjector [100eb] Cyberarm [500eb] [4/4] Cybereye [100eb] [1/3]
Toxin Binders [100eb] ChainRipp (excellent) [500eb] Anti-Dazzle [100eb]
Radar/Sonar Implant [1000eb] Neuralware [1/1] Hips [2/2]
Hardened Shielding (Internal) [1000eb] Neural Link [500eb] [2/5] Cyberleg [100eb] [2/3]
Auditory System [1/1] Chipware Socket [500eb] [1/1] Jump Booster [500eb]
Cyberaudio Suite [500eb] [2/3] Pain Editor [1000eb] Cyberleg [100eb] [2/3]
Level Damper [100eb] Sandevistan [500eb] Jump Booster [500eb]
Radio Communicator [100eb] Fashionware [2/7]
Biomonitor [100eb]
Kill Display [100eb]
Armor: Ranged weapons:
Metalgear® (Head) [5000eb (luxury), SP=18/18] [4] Popup Grenade Launcher [500eb (expensive), Damage=6d6, ROF=1, Mag=/2 ()]
Metalgear® (Body) [5000eb (luxury), SP=18/18] [14(S)/14(A)] Popup Ranged Weapon (SMG) [500eb (expensive), Damage=2d6, ROF=1, Mag=/30 ()]
Bullet Proof Shield [100eb (premium), SP=10/10] Melee weapons:
[14] Unarmed [Damage=3d6, ROF=2]
[15] ChainRipp (excellent) [500eb (expensive), Damage=4d6, ROF=1]
Inventory:
Ammo Equipment / Drugs Junk
[30] Medium Pistol (Armor-Piercing) [10eb (cheap)] [1] Radar Detector [500eb (expensive)] [2495] Eddies [1eb (cheap)]
[2] Grenade (Smoke) [50eb (costly)] [1] Bullet Proof Shield [100eb (premium), SP=10/10] [1] Cheap Necklace [20eb (everyday)]
[30] Medium Pistol (Basic) [1eb (cheap)] [1] Berserker [100eb (premium)]
[1] Timewarp [100eb (premium)]
[1] Black Lace [50eb (costly)]
[1] Carryall [20eb (everyday)]
[1] Anti-Smog Breathing Mask [20eb (everyday)]
[1] Flashlight [20eb (everyday)]
[1] Synthcoke [20eb (everyday)]
By default, the character sheet uses multiple columns to keep the output compact. Use --flat for a single-column
layout that is easier to edit and copy, but takes considerably more vertical space.
Python 3.13 or newer is required. Install the package from the repository and run the CLI as a module:
python -m pip install .
python -m cp_red_npc_generator --helpBuild an installable wheel with:
python -m pip install build
python -m buildThe library API is asynchronous:
import asyncio
from cp_red_npc_generator import GenerationRules, generate_npc
rules = GenerationRules(
rank="captain",
role="solo",
nationality="United States",
seed=123,
model_id=None,
)
npc = asyncio.run(generate_npc(rules))Inside an existing async application, use npc = await generate_npc(rules) instead of asyncio.run().
generate_npc() does not read command-line arguments, print output, or terminate the process. Invalid rules raise
Python
exceptions. It returns an Npc; use npc.to_string(flat=True) for text.
UI option discovery uses the same field definitions as argparse:
from cp_red_npc_generator import get_generation_options
for option in get_generation_options().fields:
print(option.name, option.help, option.type, option.choices, option.default, option.group)Each option provides its name, help text, Python type, choices, default value, group, and Boolean flag. This keeps a UI,
settings.json, and command-line parsing on the same option definitions.
The package is designed for Pyodide running in a Chromium Web Worker. Pyodide supplies NumPy; micropip installs the
built generator wheel and its pure-Python dependencies. Serve the wheel over HTTP rather than opening it from a local
filesystem path.
importScripts("https://cdn.jsdelivr.net/pyodide/v314.0.2/full/pyodide.js");
const pyodide = await loadPyodide();
await pyodide.loadPackage(["numpy", "micropip"]);
await pyodide.runPythonAsync(`
import micropip
await micropip.install("./wheels/cp_red_npc_generator-0.1.0-py3-none-any.whl")
`);
const npcProxy = await pyodide.runPythonAsync(`
from cp_red_npc_generator import GenerationRules, generate_npc
await generate_npc(GenerationRules(
rank="captain",
role="solo",
nationality="United States",
seed=123,
model_id=None,
))
`);Destroy PyProxy objects when they are no longer needed (npcProxy.destroy()). A Web Worker and the main page have
separate Pyodide instances and separate Python global state.
When AI description generation is enabled, native Python and the EXE use urllib; Pyodide uses
pyodide.http.pyfetch. The configured OpenAI-compatible server must allow requests from the Foundry origin through
CORS, including the Authorization and Content-Type headers and the POST method. Browser mixed-content rules also
block an http:// model endpoint when Foundry is served over https://. Set allow_description=False to disable AI
requests without clearing the model configuration.
The tested native environment is Python 3.13 with NumPy 2.2. Pyodide 314.0.2 uses Python 3.13 and is the selected browser target. Browser generation runs on one Worker thread; long synchronous NPC generation temporarily occupies that Worker. Network access remains asynchronous. Browser persistence, IndexedDB caching, and Foundry-specific JavaScript integration are intentionally outside this pure-Python repository.
- No skill chips
- Skills - only upgrades to street rat
- (Almost) only items from the basic rulebook
- No weapon modifications
- No exotic weapons
The original source code of this project is licensed under GNU GPLv3.
This tool is not intended to replace the Cyberpunk RED Core Rulebook.
Cyberpunk, Cyberpunk RED, Night City, and related names, terminology, game data, and other intellectual property belong to R. Talsorian Games and/or their respective licensors. Such material is not licensed under GNU GPLv3 by this repository.
NPC Generator is unofficial content provided under the Homebrew Content Policy of R. Talsorian Games and is not approved or endorsed by RTG. This content references materials that are the property of R. Talsorian Games and its licensees.