Making mods and apps
This part of the REDnode section is for people who want to make something. You need some JavaScript, or REDagent to write it with you. You don’t need to know redscript, Lua or C++.
Packages
Everything REDnode runs is a package: a folder in the apps folder with a manifest file, rednode-app.json. A package can be:
| Kind | What it is | Made of | Good for |
|---|---|---|---|
| Node mod | Code that runs in Node, outside the game | A .mjs file |
Logic: reacting to the game, changing values, talking to other programs. Can open simple windows without any HTML |
| Overlay app | A web page drawn over the game | An .html page, with CSS and JavaScript |
Rich windows and tools |
| HUD widget | An overlay app that never takes input | The same, with "kind": "hud" |
Read-outs that sit on screen like the game’s HUD |
| App and mod together | A page for the looks and a Node mod behind it | Both, talking over a channel | A web UI with a back end |
Node mods and overlay apps use the same rednode package to reach the game, so what works in one works in the other.
| Node mod | Overlay app | |
|---|---|---|
| Runs in | Its own Node process | A Chromium page in the overlay host |
| UI | REDnode’s ui builder | Any HTML and CSS, or the UI kit |
| npm packages | Yes | Yes, bundled or as plain browser scripts |
| If it crashes | Only that mod stops. Restart in the launcher | Only that page |
| Page | Node mods | Overlay apps |
The manifest
rednode-app.json tells REDnode what the package is. A Node mod:
{
"id": "hello-mod",
"name": "Hello mod",
"version": "0.1.0",
"author": "you",
"description": "Shows where V is.",
"main": "mod.mjs",
"open": true
}
The fields you’ll use most:
| Field | Means |
|---|---|
id |
Unique. Lowercase letters, digits, - and _. REDnode saves positions and settings under it, so don’t change it later |
name, version, author, description |
Shown in the launcher and Mod Manager |
main |
A Node mod: the file to run |
entry |
An overlay app: the page to show. Needs width and height |
open |
Start it on (true) until the player decides otherwise |
permissions |
Powers the package asks the player for. See below |
requires |
Other mods it needs, with versions |
The full list, with window placement (anchor, x, y), kind, hideWith and isolation, is in Settings and controls.
The apps folder
Packages live in red4ext\plugins\REDnode\apps in the game folder, one folder each. The overlay host watches that folder while the game runs:
| You | REDnode |
|---|---|
| Add a package folder | Finds it at once. It starts if its manifest says "open": true; otherwise switch it on in the Mod Manager. It starts unpinned and counts as new |
| Change the manifest | Restarts the package |
| Change a file, with Hot reload on | Restarts the mod, or reloads the page, in about a second |
| Delete the folder | Stops the package |
| Save a manifest that names a file you haven’t written yet | Skips the package until that file exists |
So the loop is: game running, Hot reload switched on in the launcher, your package’s folder open in an editor. Save, and look. No game restart.
Write files your package keeps (settings, saves) to its data folder (pkg.dataDir), never into its own folder: hot reload watches that, and an update would overwrite it.
Permissions
A package can ask for powers the player must allow, in its manifest:
"permissions": ["agent", "bridge"]
| Permission | Gives | See |
|---|---|---|
mcp |
REDnode’s MCP tools for an AI agent inside the package | Agents and MCP |
agent |
Asking REDagent questions | Agents and MCP |
bridge |
REDbridge: the game’s archives and files | Game API |
front |
Staying in the tool layer, above other packages | Spaces and layers |
solo |
Solo mode | Spaces and layers |
The calls that need a permission reject until the player allows it. Explain in your description why you need it.
Requirements
If your package needs another mod, say so:
"requires": {
"codeware": ">=1.14",
"tweakxl": ">=1.10"
}
REDnode checks the game folder: RED4ext plugins by folder or DLL, redscript modules in r6/scripts, Cyber Engine Tweaks mods, and red4ext, cet and redscript themselves. Versions come from the DLL where it has one. Ranges work the npm way (>=1.16, ^1.16, ~1.16, *). The player sees what’s missing in the launcher and Mod Manager, and your code can ask with kernel.requirements(). Your package still runs, so it can explain.
The overlay apps guide has every rule for names and ranges.
What’s in the rednode package
| Part | For | Page |
|---|---|---|
game |
Player position, game events, what the game is showing, UI sounds | Game API |
api |
Any game function, typed | Game API |
tweakdb |
Reading and changing TweakDB | Game API |
world |
Spawning and moving objects (needs Codeware) | Game API |
ui |
Windows from Node, and solo mode | Node mods |
pkg, secrets |
Your package’s id, folders and secrets | Node mods |
channel |
Messages between your page and your Node mod | Node mods |
kernel |
Requirements, REDbridge, the MCP server | Game API, Agents |
agent |
Asking REDagent | Agents and MCP |
The rednode package is written in TypeScript and carries types for every call, and for the game’s 15,000-odd classes. An editor such as REDcode completes them as you type. The API reference lists every call with examples.
Learn from the samples
REDnode’s deploy puts its sample packages in the apps folder. Each is small and readable:
| Sample | Shows |
|---|---|
| Hello mod | A Node mod with a window, a button and live data |
| Ticker mod | A Node mod with no window: logs game events |
| Crash mod | Breaking on purpose, to see isolation and restarts |
| UI kit | Every UI kit widget in one window |
| Native button | A borderless button that looks like the game’s |
| Coords HUD, Vitals | HUD widgets, reading V’s position, health, level and money |
| Game API mod | Calling the game from Node, including a change (100 eddies) |
| TweakDB test | Reading and changing TweakDB |
| World test | Spawning a box in front of V |
| Layers test, Pointer lock test, Test timer | Solo mode, holding the cursor, staying on top |
| Ask mod | Asking REDagent and streaming the answer |
| Packaging test | Requirements and REDbridge |
Their source is in REDnode’s repo under packages/overlay/apps.
Or let REDagent write it
REDagent writes, runs, checks and fixes REDnode packages with you, in the game. It only writes inside the apps folder, shows every change before making it, and can undo. See Your first mod with REDagent.
Sharing your package
There’s no REDnode release for players yet, so there’s no standard way to publish a package. For now, share the folder: players put it in their apps folder. When REDnode ships as a normal mod, packages are planned to be separate mods that list REDnode as a requirement, the way CET mods list CET.