Testing your integration
You do not need anything from SGA to start. You can prove your device works before you ever talk to us.
There are four tools, in the order you will reach for them.
1. The conformance kit — open, offline, no account#
The kit is part of the open-source standard. It is a Python package — Python 3.10 or newer is the only prerequisite. It runs on your own bench, reads your own files, and sends nothing anywhere.
# from sga-ois/conformance/
python -m sgaconform your-descriptor.json # validate a document you produced
python -m sgaconform --list-rules # every rule, by document kindPoint it at your descriptor, or a scorecard if you are a simulator. It checks documents, not the live frames you send; for those, use §3 or §4. It runs two passes. First it checks the shape against the JSON Schemas. Then it runs the semantic rules — the ones that catch real interoperability bugs rather than typos.
Those are the expensive mistakes: a spin axis reported as a shot shape, a club identified with no method, a field declared measured by something that cannot measure it.
Optional shape checking needs pip install jsonschema referencing. Without it the semantic rules still run, and those are the ones that matter.
2. The SGA Reference Simulator — a complete bay on one machine#
sgasim is the association's reference bay — a whole bay on one computer. A simulator, a launch monitor, a club bag and an SGA Engine, all running together, playing a real nine-hole course with a real ball-flight model.

It exists because the hardest part of building a device is usually not the device. It is having something to plug it into. Without a reference bay you need a simulator license, a launch monitor, a mat and a room before you can see whether your descriptor is right.
With it, you get:
- A working bay to join. Start it, point your device at the engine, and you are a participant in a live round alongside a simulator that is playing golf.
- The whole round, not a fragment. Check-in by QR, roster changes, player rotation, shot composition, scorecards, round boundaries — the flows that are tedious to fake and easy to get subtly wrong.
- A live traffic view. Every frame the engine exchanged with every participant, in both directions, with the bytes as they crossed the wire. Yours next to everybody else's.
- Devices you can unplug. Disconnect the reference bag mid-round and watch
club.club_idfall back from the bag's tag read to the simulator's menu selection. That is the connection matrix — the engine choosing, field by field, which device is the best source for each one — doing its whole job on one field, in a bay you can interfere with by hand.
The SGA Reference Simulator is not open source. It is free, and it is available in the technology partner portal along with engine builds for every platform, test fixtures and the signed bundles. Registering as a technology partner costs nothing and there is no approval queue — see below.
3. The quickest live check: sgapoke#
sgapoke -descriptor your-descriptor.json -shotsgapoke connects to a running engine as your device, sends your descriptor and one shot, and prints everything the engine says back: the manifest, your unmet wants, any refusal. -addr sets the engine address (default 127.0.0.1:9711); -role and -device set what it joins as.
The engine does not check your trust level. It records what you declare, and the cloud verifies it afterward (02 §3a.3).
4. The engine on its own — -livedata#
You do not need the simulator to see what your device is saying. The engine records every frame from every participant, and it will print them as they arrive:
sgaengine -livedata lmNormal logging drops to errors only and stdout carries nothing but traffic:
01:41:11.414 -> 127.0.0.1:57025 217B
{"type":"session.hello","protocol_version":"1.0",...
01:41:11.415 <- sga:device:probe-lm [sensor.ball] 191B
{"type":"session.describe","identity":{...
01:41:11.419 -> sga:device:probe-lm [sensor.ball] 863B
{"type":"session.manifest","manifest_version":1,...Name a subject rather than a filter expression: sim, lm, bag, display, other, cloud, all, or any role or device id. -livedata-json gives one object per line for piping.
This is the tool for the question "what did my device actually put on the wire", and it answers it without a simulator, a browser, or anything to install. A bay running a launch monitor, a bag and nothing else is a complete, useful configuration for development.
What you can do with none of them#
Read the field catalog, implement four fields, and open a socket. The standard is open and free, and neither it nor the engine requires an account, a license or a conversation. The engine's source will be published as open source; builds are in the partner portal today.
The tools above make it faster. They are not a gate.
Becoming a technology partner#
It is free and there is no approval queue. You do not need an account to read the specification, implement it, run the conformance kit against your build, or ship a product that speaks SGA-OIS.
Registering means accepting the Technology Partner Agreement: report data truthfully, declare settings honestly, build nothing that lets a player cheat, and tell us about any way you find that would allow it. That agreement, plus a published digest of each release, is trust level A1 — where your users' rounds start counting toward an SGA Player Rating (trust levels).
What the account adds:
- The SGA Reference Simulator and engine builds for every platform, versioned, in one place.
- A named contact at SGA who knows your product and your integration, so an implementation question does not start from scratch every time.
- Schema extension tooling for proposing a field for the core namespace and opening it to peer review and comment before it becomes part of the standard.
- The community where the schema actually gets shaped: drafts before they are ratified, and the review that keeps everyone compatible.
What we ask in return is three contacts kept current — administrative, technical, and abuse and fraud. They can all be the same person, and most partners start that way.
Register as a technology partner →