Streaming And Assets
The server exposes client-accessible resource files through the HTTP port and sends a resource manifest to the client over the game connection.
Manifest
/resources/manifest.json is built by the server from enabled resources (CResourceManager::BuildManifestJson). The manifest contains:
schema(currently1)totalFilesandtotalBytesfiles[]— one entry per client fileresources[]— one entry per resource, in load order (theresourcesorder fromserver.toml, otherwise discovery order)
Each files[] entry: resource, path, url, size, a stream flag, sha256 (of the plaintext), and enc only for encrypted-at-rest files.
Each resources[] entry: name, type, clientType, assetsBase, streamBase, clientMain (when set), exports, dependencies, clientFiles, dataFiles and the parsed config. The server entry (main) is not included — it stays server-side.
The same manifest is delivered to the in-game client over the encrypted game connection; the launcher prefetches /resources/manifest.json before GTA connects.
Client Files
Only the files that end up in the manifest files[] are reachable by the client:
- the configured
client-main - paths matched by
client-files - files declared in
stream.toml(filesglobs and[meta]data files)
client-files supports exact paths, ** (all files), prefix/* (one level) and prefix/** (recursive).
Asset URL Routing
Any advertised client file is reachable under:
/assets/<resource>/<path>The server canonicalizes this URL to /resources/files/<resource>/<path> and matches it against the manifest allowlist. Path traversal segments are rejected before the server reads a file. type = "asset-pack" is a resource type, not a routing gate.
Stream URL Routing
Any advertised file whose resource-relative path starts with stream/ gets a URL — regardless of the resource type:
/stream/<resource>/<path>Files under stream/ can be declared either through client-files or through stream.toml. stream.toml provides:
files— globs of files understream/[meta]— data-file tags (key = path, value = GTA data-file type, e.g.HANDLING_FILE)
There is no automatic stream/** default: if stream.toml lists no files (and client-files does not cover them), no stream files are published.
Client Helpers
const ui = varion.assetUrl('inventory-ui', 'index.html');
const ydr = varion.streamUrl('vehicle-pack', 'car.yft');varion.HttpClient and varion.Http allow HTTP calls only to the server manifest host or asset-pack host. The client runtime rejects invalid protocols, the game port and hosts outside the manifest/asset base.
Source Backing
This page is derived from server/src/CResourceManager.cpp, src/network/CNetworkManager.cpp, sdk/client-js-runtime/injected/events-bootstrap.js and sdk/client-js-runtime/injected/services-bootstrap.js.