RonyKit is a Go toolkit for building high-performance network services. It is organized
as a Go workspace (go.work, Go 1.25+) containing 27+ independent modules.
Two abstraction levels exist:
kit/-- low-level core (EdgeServer, Gateway, Cluster, Contract, Context)rony/-- high-level, batteries-included framework built onkit
kit/ Core building blocks (EdgeServer, contracts, context, codecs)
rony/ High-level framework (server, typed context, state management)
flow/ Workflow helpers (Temporal SDK integration)
stub/ Client stub generation (Go / TypeScript)
ronyup/ Project scaffolding CLI
testenv/ Testing environment utilities
std/
gateways/ Gateway implementations (fasthttp, silverhttp, fastws, mcp)
clusters/ Cluster implementations (rediscluster, p2pcluster)
x/ Extended utilities (di, telemetry, apidoc, cache, datasource,
i18n, ratelimit, batch, settings, testkit, rkit, p)
example/ Runnable examples (ex-01 through ex-11)
scripts/ Build & maintenance scripts
docs/ Diagrams and extra documentation
make setup # Install tools (gotestsum, golangci-lint)
make test # Run tests across all modules (excludes example/, ronyup/)
make lint # Lint all modules (excludes example/)
make vet # go vet all modules (excludes example/)
make tidy # go mod tidy all modules (excludes example/)To test a single module: cd <module> && go test ./...
To test ronyup specifically: cd ronyup && go test ./...
- Framework: Ginkgo v2 with Gomega matchers.
- Test runner:
gotestsumwith--format pkgname-and-test-fails. - Coverage:
covermode=atomic, generatescoverage.outper module. - Run focused module tests first; use
make testfor broader validation.
Request flow:
Client -> Gateway -> northBridge -> EdgeServer -> Contract lookup -> Handler chain -> Response
Key abstractions:
- EdgeServer -- orchestrator that binds Gateways, Clusters, and Services.
- Gateway -- inbound traffic (fasthttp, silverhttp, fastws, mcp).
- Cluster -- multi-instance coordination (Redis, libp2p P2P).
- Service -- logical grouping of Contracts.
- Contract -- single API operation (input/output types, route selectors, handlers).
- Context -- request-scoped state with four storage layers: per-request, per-connection, per-service (local), cluster-wide.
Encoding: JSON, Protobuf, MessagePack, multipart/form-data, or custom.
Routing: RESTRouteSelector (HTTP method + path) and RPCRouteSelector (predicate).
- Preserve existing architecture and naming conventions.
- Add comments only when logic is non-obvious.
- Do not introduce unrelated formatting churn.
- Keep edits scoped to the specific task.
- Read the relevant package/module README before changing behavior.
- Each module under
std/andx/has its owngo.mod; respect module boundaries.
- Keep commits atomic with clear intent.
- Do not revert unrelated local changes.
- Avoid destructive git operations unless explicitly requested.
- Main branch:
main.