SDKcraft is a tool that packages and publishes SDKs to be used with Workshop, a related user-facing product. SDKcraft solves the essential problem of creating reproducible, distributable development environments by allowing developers to define, build, and package complete SDKs as singular installable units.
SDKcraft is useful for developers who need to distribute complex development toolchains, maintainers who want to ensure consistent development environments across teams, and organizations looking to streamline toolchain distribution and management.
Here are the core SDKcraft commands that demonstrate the essence of the tool.
Initialize a new SDK project:
sdkcraft initBuild and package your SDK:
sdkcraft packPack the SDK and stage it in the Workshop try area for manual try-out:
sdkcraft tryRun the SDK's spread suite (scaffolded by sdkcraft init) against the
freshly packed artifact in a clean LXD container:
sdkcraft testClean build artifacts:
sdkcraft cleanPublishing flows through the SDK Store. Authenticate once, reserve the SDK name, then upload a revision and release it to a channel:
sdkcraft login
sdkcraft register <NAME>
sdkcraft upload <NAME>_<ARCH>_<BASE>.sdk --release latest/edgePromote an existing revision between channels with sdkcraft release:
sdkcraft revisions <NAME>
sdkcraft release <NAME> <REVISION> latest/stableSDKcraft is supported on Ubuntu and other snap-enabled Linux distributions.
Install the snap using the --classic option:
sudo snap install --classic sdkcraftSDKcraft requires LXD 6.6 or later for low-level operation.
If the snap install command reports an issue with LXD,
install a recent LXD version with snap:
sudo snap install --channel=6/stable lxd # to install
sudo snap refresh --channel=6/stable lxd # to updateRefer to Part 4 of the tutorial in our docs for a detailed introduction to SDKcraft; for more detailed guidance, see the Build an SDK and Publish an SDK how-to guides.
For reference examples of SDK implementation, see the reference SDKs repository.
To know more about Workshop in general, jump straight to the documentation home page.
Generate the project schema JSON:
uv run python sdkcraft/models/project.pyThis uses the exact version of craft-application locked in uv.lock,
ensuring schema consistency.
Use the following resources for communication, support, and feedback:
To join the development effort, see How to contribute.