OPEN//77 documentation

Documentation for the OPEN//77 platform: the resource model, the authoritative server, player identity, world systems and the complete Lua API reference for both runtimes.

20 guides258 API functionsSynced from the platform wiki

CyberM turns Cyberpunk 2077 into a server-driven multiplayer platform. Gameplay and UI features are packaged as resources: self-contained directories with a manifest, Lua scripts, declared permissions, dependencies, and optional web interfaces.

Developers familiar with FiveM will recognize the client/server split, events, exports, commands, and manifest-driven lifecycle. CyberM APIs remain independent and reflect REDengine constraints.

Session model

The server selects the resource set for a session. A connecting client downloads that set, verifies its signature and content hashes, and activates it before entering the world. Only CyberM's trusted bootstrap resources load outside the server-provided generation.

The server is authoritative. Clients render approved state and submit bounded observations or requests; they do not choose canonical loot, life, vehicle, time, weather, or routing state.

Create a resource

A resource lives below the server's configured resource root and contains a cyberm.lua manifest:

resource "hello"
version "1.0.0"
auto_start true

client_script "client/main.lua"
server_script "server/main.lua"

Client entry point:

AddEventHandler("onClientResourceStart", function(name)
    if name ~= GetCurrentResourceName() then return end

    local state = CyberM.character.state()
    print(("spawned at %.1f, %.1f"):format(state.position.x, state.position.y))
end)

Server entry point:

RegisterCommand("hello", function(source, args)
    print(("player %d said hello"):format(source))
end, false)

Start the server, connect a client, and invoke hello from the CyberM developer console or chat.

Guides

Guide Subject
Server resources Manifests, runtime separation, signing, download, and reload.
Complete server Lua API Every server global, CyberM.* method, permission, constant, and low-level alias.
Official resource exports Every client export exposed by the official Lua packages and how to call it safely.
Game data reference NPC templates, vehicle records, seats, flags, weapons, appearances, VFX, SFX, animations, and sprite catalogues.
Identity and ACL Authentication, restricted commands, and access control.
Player identity Durable identifiers, display names, and rename flow.
Loot Authoritative ground drops and pickup integration.
Weather Session time, weather presets, synchronization, and events.
Vehicles Identity, streaming, authority leases, seats, and Lua APIs.
NPCs Implemented server-owned NPCs, templates, streaming, task queues, authority leases, life, events, and Lua APIs.
Contextual interactions Custom world/NPC prompts, action keys, projection, ownership, and server-safe integration.
Notifications Reusable WebUI toasts, client/server exports, queues, positions, progress, and ownership.
Elevators Implemented server-authoritative native lifts, bucket/chunk streaming, late join, ACL commands, and Lua APIs.
Blips Vanilla map markers, entity attachment, and sprites.
Visual and audio effects Resource-owned world/entity VFX and spatialised SFX.
Privileged debug runtime ACL-targeted client Lua execution, native lab commands, and REDscript bridge probes.
Chat Messages, slash commands, completion, and resource integration.
Clipboard Write-only client clipboard API and the /pos and /rot transform commands.
Client persistent KVP Endpoint- and resource-isolated local key/value persistence, search, atomic operations, and quotas.

API reference coverage

CyberM has three deliberately separate Lua surfaces. The wiki covers all three without implying that a server method exists in a client VM or that a package export is a native:

Surface Reference Coverage
Client native runtime The CLIENT API reference cards in index.html 215 registered functions across 37 namespaces; every signature is reviewed and every card has a detailed description.
Dedicated server runtime The SERVER · CyberM.vehicles cards and Complete server Lua API All 43 authoritative vehicle methods are individually searchable cards; the complete guide covers every server global, CyberM.* namespace, constant, permission, and result shape.
Official client packages Official resource exports Every literal export currently published by the official resource tree: 59 exports across 13 packages.

Generated cards are separated by runtime, so identical names such as CyberM.vehicles.get cannot confuse a client projection with server authority. They state whether a call is shared, needs a live game instance, or uses the network backend, and document permissions, ownership, generation lifetime, and failure values.

Run both documentation checks after changing a binding or export:

python wiki/tools/extract-api.py --json
python wiki/tools/audit-api.py

The generator fails when a registered client function has no verifiable handler body or detailed description. It also compares the 43 server vehicle cards with the real embedded Lua bootstrap, so adding or removing a method cannot silently leave the searchable reference incomplete.

API conventions

Engine IDs are opaque

REDengine identifiers are 64-bit values and may not be exactly representable as Lua numbers. Store, compare, and return them unchanged. Do not pass them through tonumber.

Failures are values

Most APIs return value on success or nil, reason on failure. Callers can distinguish an invalid request from a temporarily unavailable subsystem without wrapping every call in pcall.

Permissions are explicit

Guarded APIs require manifest permissions:

permissions { "network.events", "world.loot" }

Request only the capabilities the resource needs.

Client and server runtimes are separate

server_script files never reach a player's machine. client_script files are distributed in the signed resource set, and shared_script files execute in both runtimes. Secrets and authoritative decisions belong exclusively in server code.

License

CyberM-owned documentation and code follow the repository LICENSE. Third-party names, game data, and dependencies remain subject to their respective terms.

All pages

For agents and LLMs: this page as Markdown · llms.txt · llms-full.txt