REDDECK / DESIGN DOC / DRAFT 0.3 VS CODE EXTENSION · CYBERPUNK 2077 ONLY
// Design draft

REDdeck

A mod manager for Cyberpunk 2077 that lives inside REDcode and VS Code. One list of mods, four verbs, no jargon. It keeps a library of mods outside the game folder, deploys the ones you turn on, and shows you the conflicts Vortex cannot see because it can read inside the archives.

Goal: simple, friendly, obvious Own repository, loaded by REDcode when present One game, one list, hardlink deploy Name: REDdeck, a deck of mods

01Goal and the rules that follow from it

The project goal

Simplicity with a friendly and obvious UI. Vortex works, but it is built for two hundred games and it shows: profiles, activators, purge, phases, rules, dialogs that ask the user to decide things the tool could decide. REDdeck supports one game and can be as plain as that allows.

Rules
  • One list. Every mod in one list, grouped by what it is. No separate pages for downloads, plugins and load order.
  • Four verbs. Add, turn on or off, deploy, remove. Everything else lives in a mod's detail panel and is optional.
  • Plain words. "Deploy" not "activate". "Turn off" not "disable in profile". "Conflicts" not "file override rules". The word list is in section 04.
  • Decide, don't ask. Where a file goes, whether to hardlink or copy, what wins a conflict by default: the tool decides and shows what it decided. A dialog appears only when a wrong guess would lose data.
  • Safe by default. REDdeck never deletes a file it did not put there, keeps a manifest of what it did, and can undo all of it with one command.
  • Works offline, works alone. No Nexus account needed to add a mod from a file. No REDcode or REDbridge needed to run; they add features when present.
Scope
  • In: install from a file or a Nexus link, enable and disable, deploy and undo, the core frameworks, archive load order, REDmod deploy, conflicts, updates from Nexus, import from Vortex.
  • In, through REDcode: install a packed project with one click and test it in the game. REDnode mods as a mod kind.
  • Out for v1: collections, multiple games, FOMOD installers, Nexus login by OAuth (a personal API key is enough), mod merging, save editing, launching the game through a launcher wrapper.

02How Cyberpunk mods are installed

Read on 2026-10-11 from a reference machine whose game folder Vortex manages (361 deployed files from 16 mods). A Cyberpunk mod is a set of files dropped into known places under the game folder. There is no plugin list like Bethesda games have; the folder is the registry.

PlaceWhat goes thereLoaded byOrder
archive/pc/mod/.archive files, plus .archive.xl manifests for ArchiveXLThe game, ArchiveXLAlphabetical; an archive loaded earlier wins over later ones, which is why modders prefix names with # or 00_. modlist.txt in the same folder names archives to load first, in order.
mods/REDmod packages: a folder per mod with info.json, archives/, scripts/, tweaks/, customSounds/REDmod (CDPR's own system), after redMod.exe deploy and launching with -moddedSet at deploy time by the order passed to redMod.exe. Deploy compiles scripts into r6/cache/modded.
r6/scripts/redscript .reds files, usually in a folder per modredscript (scc.exe) at game startNone; all compiled together
r6/tweaks/TweakXL .yaml and .tweak filesTweakXLAlphabetical within a folder
r6/audioware/, r6/input/, r6/config/Audioware sound packs, input_loader bindings, settings overridesAudioware, input_loader, the gameNone
red4ext/plugins/Native plugins: a folder per plugin with a .dll (ArchiveXL, TweakXL, Codeware, mod_settings, input_loader, REDnode)RED4extNone; plugins declare dependencies
bin/x64/plugins/cyber_engine_tweaks/mods/CET Lua mods: a folder per mod with init.luaCyber Engine TweaksNone
bin/x64/, bin/x64/plugins/The frameworks themselves: winmm.dll (RED4ext loader), version.dll (ASI loader), .asi files, red4ext/RED4ext.dll, engine/tools/scc.exe for redscriptWindows, at process startNone
The frameworks are mods too

RED4ext, CET, redscript, ArchiveXL, TweakXL, Codeware, Audioware, input_loader and mod_settings are all installed from Nexus like any mod, and most other mods depend on one or more of them. REDdeck treats them as mods in a pinned "Frameworks" group at the top of the list, and checks their versions against the game version, because a game patch is the usual reason a modded game stops starting.

The name

REDdeck: a deck of mods, a nod to the cyberdeck every player knows, and the mods waiting "on deck" in the library before they are deployed. Chosen 2026-10-11 after REDmods (one letter from CDPR's REDmod) and REDpack ("pack" is the verb WolvenKit and REDcode use for building an archive). CDPR's official modding system is called REDmod. It owns the mods/ folder, redMod.exe and the -modded launch flag, and the Vortex extension talks about "REDmod deploy" and "REDmod load order". REDdeck will still say "REDmod" in its UI when it prepares those packages; the two words are far enough apart to read.

03What Vortex solves, and what to keep

Vortex is an Electron app (React, Redux, TypeScript, GPL-3.0) with one extension per game. The Cyberpunk extension (version 0.12.1, by KellieAtTheLab) is 64 source files and defines 34 installer types, one per mod layout it knows how to recognise and fix up. Vortex itself keeps mods in a staging folder under AppData, hardlinks them into the game folder, and records what it did in vortex.deployment.json. The user is right that some of its complexity is unavoidable: the problems below exist whether or not the UI shows them.

Must solve too
  • A library outside the game folder. Otherwise "turn off" means "delete" and "update" means "hope".
  • Deployment and undo. Hardlinks when the library is on the game's drive (Vortex checks with a canary file), copies otherwise. A manifest of every deployed file. Undo removes only files in the manifest.
  • Changes made outside the manager. The game, the launcher, Steam's verify, CET's own updater and the user all touch the folder. Vortex classifies four change types and offers six actions. REDdeck reduces this to two questions, section 05.
  • Recognising a mod's layout. Mod archives from Nexus are inconsistent: some are rooted at the game folder, some at archive/pc/mod, some are a bare .archive, some ship a readme and a choice of options. Vortex has 34 installers for this. REDdeck has one classifier and one "where should this go?" picker, section 06.
  • Load order for archives and REDmod. Vortex writes modlist.txt and runs redMod.exe deploy with a mod list.
  • Nexus links. The "Mod manager download" button on Nexus opens an nxm:// link. Someone must handle it.
  • Conflicts. Two mods shipping the same file path. Vortex shows them and lets the user set before/after rules per pair.
Can drop
  • Multi-game. Game discovery, per-game extensions, generic "mod types" with their own deployment targets.
  • Profiles as a first-class concept. Most people have one. REDdeck offers "save this list as a loadout" later, as a file, not a mode.
  • 34 installers. Most exist to be strict about layouts. A picker that shows the user the folder tree and a guess is friendlier and covers the long tail.
  • Collections. A Nexus product with its own GraphQL API and a Vortex-specific manifest. Out of scope.
  • Redux state, LevelDB, the extension API. REDdeck state is one JSON file per mod and one for the library, which is also what makes it AI-readable.
  • Symlink and move deployment, elevation. Hardlink or copy covers Windows and both drive layouts.
  • Jargon. Activator, purge, phase, rule, staging, mod type, primary tool.

04The UI

One view in the REDcode activity bar, or its own activity bar icon when REDcode is not installed. The main part is a list. Selecting a mod opens its detail panel in the editor area, a webview in the HUD style. The status bar shows one thing: whether what is deployed matches the list.

The mods view, as it would look with the reference machine's mods

What each part does

Plain words

Vortex saysREDdeck saysWhy
Enable / Disable, ActivateOn / OffIt is a switch.
Deploy, PurgeDeploy, Undo deployDeploy is the one term worth teaching. Its opposite should sound like its opposite.
Staging folderLibraryWhere your mods are kept.
Mod type, InstallerKindWhat is inside.
File override rules, Load afterConflicts, WinsShows the result, not the mechanism.
ProfileLoadout (later)A saved list, not a mode you are in.
External changes dialog"This file changed in the game folder. Keep the changed file, or put the mod's file back?"One question, two answers.
REDmod deploy, REDmod load order"Prepare REDmod mods" (automatic on Deploy)The user should not need to know REDmod has its own compiler step.

05Architecture

Standalone, and loaded by REDcode

The extension lives in its own repository, REDdeck, under MIT, and is packaged and published on its own. It activates on its own events (its view, its commands, an nxm URI). REDcode's extension pack lists it, so installing REDcode installs it. When redcode-core is present, it does two things: it contributes "Install into REDdeck" to the project's packed output, and it hands its bridge client to reddeck through the exported API, which turns on archive-level conflict detection. When it is absent, REDdeck still manages the game; conflicts are then detected by file path only, and the detail panel says so.

The library

// %USERPROFILE%\REDdeck (default; user can move it, ideally onto the game's drive)
library.json                      // game path, game version, order, settings
library/
  trauma-team-subscription/       // one folder per mod, files laid out exactly as they deploy
    mod.json                      // name, version, kind(s), nexus {modId, fileId, md5}, enabled, added, files[]
    archive/pc/mod/TraumaTeamSubscription.archive
    archive/pc/mod/TraumaTeamSubscription.archive.xl
    r6/scripts/TraumaTeamSubscription/...
  testmod/                        // installed from a REDcode project: mod.json says source: project, path
downloads/                        // original archives kept for reinstall; md5 named
deployed.json                     // mirror of <game>\reddeck.deployment.json

Because each mod folder is laid out exactly as it deploys, "what will this do to my game folder" is answered by listing the folder, and a person or an assistant can inspect or fix a mod with a file explorer. The classifier's job is only to produce that layout once, at add time.

Deployment

06Mod kinds and the classifier

Instead of 34 installers, one classifier with a short rule list. It walks the extracted archive, finds the deepest folder that contains a known top-level name, and maps every file to a target under the game folder. Files it cannot place are shown to the user in a tree with a guess, not rejected.

RuleKindFiles go to
Contains archive/pc/mod/, or a bare .archive at any deptharchive (+ xl if .archive.xl)archive/pc/mod/, flattened
Contains mods/<name>/info.json, or info.json with archives/, scripts/ or tweaks/ beside itredmodmods/<name>/
Contains r6/scripts/ or .reds filesredsr6/scripts/<ModName>/
Contains r6/tweaks/ or .yaml with TweakXL keystweakr6/tweaks/<ModName>/
Contains init.lua or cyber_engine_tweaks/mods/cetbin/x64/plugins/cyber_engine_tweaks/mods/<ModName>/
Contains red4ext/plugins/ or a .dll beside no exered4extred4ext/plugins/<ModName>/
Contains r6/audioware/, r6/input/, r6/config/, engine/config/, bin/x64/*.asiaudioware, input, config, asiSame relative path
Known framework files: RED4ext.dll, cyber_engine_tweaks.asi, scc.exe, ArchiveXL, TweakXL, Codeware, Audioware, input_loader, mod_settingsframeworkSame relative path; shown in the Frameworks group
Contains a REDnode package (package.json with a rednode field)rednodeREDnode's mods folder; the REDnode runtime is itself a red4ext framework
Nothing matched, or several candidates (an archive with "Option A" and "Option B" folders)askThe picker: folder tree, a guess per folder, and "this is a choice between folders" when sibling folders contain the same kinds

A mod can be several kinds at once; Drive an Aerial Vehicle on the reference machine is archive, reds, cet, tweak and audioware together. Kinds are chips, not categories, and a mod is never split into several entries.

07Conflicts, the part Vortex cannot do

File conflicts (always)

Two enabled mods deploy the same relative path. Detected from the library alone. The list shows "1 conflict" on both, the detail panel shows the files and the winner, and up or down in the list changes the winner.

Archive conflicts (with REDbridge)

Two .archive files with different names that both contain base\characters\...\t0_000_pma_base__full.mesh conflict inside the game, and no file-level manager sees it. With REDbridge, REDdeck opens every enabled mod archive, lists its resource hashes, and intersects. It shows the overlapping resources, which archive wins under the current order, and whether the mods' .archive.xl files change that. This is the same check WolvenKit's conflicts CLI command does, surfaced where the user decides the order. It needs one new bridge method: archive.openMod(path), returning the file list of an archive outside the game folder.

Conflicts are information, not errors. Most are intentional (a texture replacer over a body mod). The UI marks them, explains the winner in one sentence, and offers reorder. It never blocks Deploy.

08Nexus Mods

What the API gives
  • REST v1 at api.nexusmods.com/v1 with a personal API key from the user's Nexus account page, sent as a header. Rate limited to 2,500 requests a day, then 100 an hour. REDdeck caches mod and file metadata and checks updates once a day or on demand.
  • Mod and file metadata: games/cyberpunk2077/mods/{id}.json, /files.json. Identify a file the user already has by hash: mods/md5_search/{md5}.json. Updates: compare the newest file for the user's installed file's category.
  • Download links: files/{fileId}/download_link.json works directly for Premium members. Free members get links only with the key and expires parameters that the website puts into an nxm:// link when they press "Mod manager download". So the nxm handler is what makes downloads work for everyone.
  • Nexus asks tools to identify themselves with an application name and version in the user agent, and to register the application. Both go on the checklist before release.
The nxm link

Format: nxm://cyberpunk2077/mods/{modId}/files/{fileId}?key=...&expires=...&user_id=.... VS Code cannot register a custom protocol for an extension, but it does handle vscode://publisher.extension/... links. REDdeck installs a tiny forwarder (reddeck-nxm.cmd) under HKCU\Software\Classes\nxm that opens vscode://cyberbuilds.reddeck/nxm?url=..., and the extension's URI handler downloads and adds the mod. Registration is a button in settings, "Handle Nexus download links", which also says if Vortex currently has them, and a matching button to give them back. Pasting a link into Add mod always works regardless.

09Living next to Vortex

10The REDcode and REDnode loop, and AI

From project to game in one click

REDcode's pack step produces packed/archive/pc/mod/<Mod>.archive. With REDdeck present, the project gets an "Install into REDdeck" command and a "Test in game" command that installs, deploys only that mod's changes and launches the game. The library entry remembers its source project, so a rebuild shows "rebuilt, not deployed" in the list and Deploy picks it up. The same path serves REDnode mods: a REDnode package is a kind, and the REDnode runtime plugin is a framework.

AI-first

All state is JSON files in the library, so an assistant can read what is installed, enabled and conflicting without the UI. The exported commands (reddeck.add, reddeck.setEnabled, reddeck.deploy, reddeck.list) are callable by other extensions and by Claude through VS Code. Later, the same core ships as a reddeck npm CLI and as MCP tools next to REDbridge's, so "install these three mods and tell me if anything conflicts" is one request.

11Risks

RiskImpactMitigation
"Deck" overlaps with cyberdeckIn-game, a cyberdeck is hacking hardware; a mod might even be named after one.Accepted. The association is the point of the name, and the activity bar says "Mods".
Data loss on undoDeleting a user's own file in the game folder.Only manifest entries are ever removed, and hardlinks are verified by identity before unlinking. Copies are compared by size and mtime.
Steam verify and game patchesVerify can rewrite files REDdeck linked; a patch changes the executable and breaks frameworks.Change detection on refresh. Version check against Nexus for frameworks. Clear status text.
Hardlinks on another driveNot possible across volumes.Detect at setup, offer to move the library or use copies. One sentence, one choice.
nxm handler fights with VortexWhoever registered last gets the links.Explicit take and give-back buttons; pasting links always works.
Long tail of mod layoutsClassifier guesses wrong.The picker shows the tree and the guess; the user corrects it once and the layout is stored in the library, not re-guessed.
REDmod deploy is slow and chattyDeploy takes a minute when REDmod packages are enabled.Only run when a REDmod package changed. Show its progress in the Output channel.
Nexus terms and rate limitsAPI key revoked, app blocked.Register the application, send a proper user agent, cache, no scraping.
AntivirusBlocks hardlink creation or deletes DLLs.Detect failures per file and report them by name with the usual advice.

12Roadmap

Status 2026-10-11

This is a draft. M0 is done: the name, the repository and the extension scaffold with the Mods view over an empty library. Everything from M1 on is intent, and the docs index keeps the current phase status.

M0DECIDE

Name, library location, word list

Name settled: REDdeck, with its own repository (renamed from REDpack). Default library folder. Agree the plain-words table and the four verbs. Scaffold the repository in the house style with the view and an empty library.

M1LIBRARY

Add, on and off, deploy, undo

Add from zip, 7z, rar and folder with the classifier and picker. The library layout and mod.json. Hardlink and copy deployment with the manifest, undo, change detection, modlist.txt. Status bar and Output channel. Vortex detection and import. REDdeck manages the reference machine's game end to end.

M2KINDS

Frameworks, REDmod, conflicts

Frameworks group with game version check. REDmod packages and redMod.exe deploy with order. File conflicts with winner and reorder. Archive conflicts through REDbridge (archive.openMod). Detail panel webview.

M3NEXUS

Links, metadata, updates

API key setting, mod pages and metadata, md5 identification of existing files, update check, nxm forwarder and URI handler, downloads for Premium and free members. Application registration with Nexus.

M4LOOP

REDcode and REDnode

"Install into REDdeck" and "Test in game" from a REDcode project. REDnode packages as a kind. Rebuild detection. Exported API used by redcode-core.

M5SHARE

Loadouts, CLI, MCP

Save and load a list as a loadout file. reddeck CLI on npm over the same core. MCP tools beside REDbridge's. Publish to Open VSX and the Marketplace.

13Open questions