# Kits

Kits were originally discussed on the community forum. Check out the original thread (opens new window)!

# Preamble

This page covers what kits are and do and the basic concepts behind them. Here can read how to write your own kit.

NOTE

Currently kits are only supported by our .NET SDK

# What are Kits?

Kits are at the heart of how Speckle manages interoperability. They are, in a nutshell, a package consisting of:

  • an object model that defines the structure of the data
  • a set of converters, implementations for various AEC authoring applications (ie, conversion routines that make the translations happen)

Whenever a connector is "sending to Speckle", it needs to convert data (lines, points, beams, doors, etc.) into this intermediate object model. Upon receiving, the opposite process happens.

IMPORTANT 🙌

Kits are not tied into the core of Speckle, they are pluggable. Anyone can add/remove them as they wish or develop their own.

# How Kits Work

A kit is assumed to be able to handle all element types, geometries and disciplines in use by a user/team/company. This is a core difference from previous iterations of Speckle. If multiple kits are available on a user machine, the user (or system administrators) will be responsible of selecting the default kit.

IMPORTANT 🙌

Kit selection is not yet available in most of our connectors. We are planning to add it soon!

When a connector needs to convert an object, it will only search for available conversion routines in the selected kit and will not automatically fall back on other kits - this might change in the future!

# Objects

Objects is the name of our default kit. It ships with any of our connectors and it's the perfect base for any customization and/or extension. You can read more about it in the Objects kit section.