---
title: "NetKit - s&box library"
description: "The missing layer between s&box's raw networking API and your gameplay code. Every common networking task in one line."
canonical: "https://sbox.watch/libraries/calloway/netkit/"
generated_at: "2026-07-22T23:10:23.126Z"
---

# NetKit

The missing layer between s&box's raw networking API and your gameplay code. Every common networking task in one line.

- Type: library
- Ident: calloway.netkit
- Creator: calloway
- Canonical: https://sbox.watch/libraries/calloway/netkit/
- Markdown: https://sbox.watch/libraries/calloway/netkit.md
- sbox.game: https://sbox.game/calloway/netkit/
- Generated: 2026-07-22T23:10:23.126Z

## Stats

- 24h momentum: +0
- Terry score: 60%
- Favorites: 4
- Upvotes: 4
- Downvotes: 0
- Updated: Apr 10, 2026
- Created: Apr 10, 2026
- Size: 777.7 KB
- Files: 17
- Tags: async, client, cooldown, events, framework, gamemode, library, multiplayer

## Description

NetKit - Networking primitives for s&box. Every common multiplayer networking task in one line.
What's included:

NetRequest - Async request/response over RPCs. Client awaits a typed response from the host. No more fire-and-forget.
NetChannel - Typed event bus. Push events to specific clients or broadcast to all. No more JSON + FilterInclude ceremony.
NetCooldown - Shared per-player cooldowns with client-side countdown. No more per-feature TimeSince fields.
NetTransaction - Optimistic client prediction. Apply changes instantly, rollback if the host rejects.
NetState<T> - Replicated state machines. Synced enum with transition events, timing, and previous-state tracking.
NetVisibility - Declarative network visibility. Distance-based, owner-only, or custom filter. Drop the component and configure.

Why NetKit?
s&box gives you the building blocks: RPCs, Sync, NetList. But every time I made something new, I had to rebuild the same patterns on top: request/response, event broadcasting, cooldowns, rate limiting. NetKit is the missing layer. Drop it in, make your life easier.

Quick example:

Register a handler on the host:
NetRequest.Handle<BuyReq, BuyRes>((caller, req) => new BuyRes { Success = true });
Client sends and awaits:
var res = await NetRequest.Ask<BuyReq, BuyRes>(new BuyReq { ItemId = "sword" });
No boilerplate RPCs. No JSON serialization. No request ID management. Typed, async, one line.

Support: Discord - callowayisweird
Source: github.com/CallowayIsWeird/netkit


