Remote spy

Every FireServer and InvokeServer, with arguments decoded and grouped by remote.

The remote spy is what NetBridge is for. Every call a game makes through a RemoteEvent or RemoteFunction is captured with its arguments, its caller, and a timestamp.

Turning it on#

Capture starts off. A busy game fires hundreds of remotes a second, and connecting straight into that flood is useless.

In the interface, switch on Capture remotes. Rows start arriving immediately.

What a row gives you#

FieldWhat it tells you
PathReplicatedStorage.Remotes.BuyItem — where the remote lives
MethodFireServer or InvokeServer
ArgumentsDecoded and typed, not a stringified blob
CallerWhich script fired it
CountHow many times this remote has fired this session

Calls are grouped by path:method, so a remote fired two hundred times is one row with a count, not two hundred rows — with the last twenty calls kept so you can see what actually varies between them.

Refiring a remote#

Any captured call can be fired again, with the arguments edited first. The refire is logged into the same stream, so you see it alongside the game's own traffic.

Refires are fired directly, not through the hook

A refire calls the remote by index rather than by namecall, so it never re-enters the capture hook. That avoids a double-log, and it keeps working on executors that route their own namecalls past metamethod hooks. The row you see is emitted explicitly.

Blocking remotes#

Any remote can be blocked by path substring. Blocked calls are dropped before they leave the client — useful for stopping an anti-cheat heartbeat while you work, or for finding out what a remote is actually responsible for.

All namecalls#

There is a heavier mode that captures every namecall, not just remotes.

This mode is expensive

Every namecall in the game means thousands per frame. NetBridge queues these and flushes them on a timer rather than sending inline — an earlier version did a synchronous encode, compress and socket write on the game's own calling thread, which stalled the caller thousands of times a frame and visibly broke camera and movement scripts.

Even queued, it is the most expensive thing here. Turn it on to answer a specific question, then turn it off.

Inbound remotes#

OnClientEvent traffic — what the server sends you — is captured separately and can be toggled independently. It is often where the interesting data is: the server telling the client what it is allowed to know.