NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #1367 by repository stars
Last release 9 days ago
29 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Most releases are documented
notes for 11 of 16 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
28 releases · first in 2025
One column per month.
[BREAKING CHANGE] Remove kit dev command and LLM harness by @gorkem in #1288
Welcome to the v1.16.0 release of Kit! This release includes a couple new features, as well as a significant number of bugfixes.
KitOps v1.16.0 removes the kit dev command. We found that this command was not utilized often and updated rarely, while also not fully aligning with the goals of the project overall. For running LLM models locally, dedicated runtimes such as ollama and llama.cpp are a better choice.
kit skill commandThis release adds a new command: kit skill. This is a simple command that can be used to teach an AI agent how to use the kit CLI by installing a SKILL.md file for installed agents on the system.
For more information, see kit skill --help, or the original PR by @youdie006: #1252
The kit pack command now has a new --push flag, which can be used to push each layer to a remote registry on the fly, rather than storing the ModelKit locally. This can help in storage-constrained situations by avoiding the need to store the entire ModelKit locally before pushing it to a remote registry. Note, however, that this implementation still needs to store each layer (temporarily) before uploading it, so some additional storage is required.
When the --push flag is included, the behaviour of Kit is similar to running
kit pack --tag myregistry.io/myorg/myrepo:tag .
kit push myregistry.io/myorg/myrepo:tag
kit remove --force myregistry.io/myorg/myrepo:tag
For more information, see the PR by @Hemanth-1354 in #1243
Full Changelog: v1.15.0...v1.16.0
Nothing published for this version
Nothing published for this version
Welcome to the v1.15.0 release of Kit! This release improves support for the CNCF ModelPack format, adds support for more options when packing ModelKi
Welcome to the v1.15.0 release of Kit! This release improves support for the CNCF ModelPack format, adds support for more options when packing ModelKit data, and adds support for MCP bundles.
Kit is now better at handling CNCF ModelPack artifacts. When working with a ModelPack that was not generated by Kit, Kit can interpret the fields normally found within a Kitfile from the ModelPack's configuration and annotations.
To use Kit to package artifacts in the ModelPack format instead of ModelKit, you can use the flag --use-model-pack for the pack command. Note that not all KitOps features are supported by ModelPacks currently.
Ultimately, you should be able to use ModelPacks with KitOps, regardless of how they were created. For example, the Docker CLI recently added support for creating ModelPacks, and those are now compatible with KitOps.
For more details, see PR #1202
By default, Kit packages each layer (model weights, datasets, code, etc.) as an uncompressed tarball, which provides a good tradeoff in terms of usability, size, and speed. With KitOps v1.15.0, the following extra options are now available while packing ModelKits (or ModelPacks)
Compression options: in addition to the existing --compression=gzip option, KitOps now supports using Zstandard compression via the flag --compression=zstd.
Layer format options: instead of packaging files and/or directories as tarballs, Kit can now package single files as-is -- i.e. with no tar wrapper. The primary benefit of the raw format is that the layer DiffID (and digest, for the no compression case) match the actual SHA256 sum of the file on disk, making it easier to track which files are stored in which ModelKits.
To enable raw layers, use the flag --layer-format=raw on the pack command, though note that this flag currently applies to all layers in the Kitfile.
These changes were added as part of improving ModelPack support; for more information, see PR #1202
With Kit v1.15.0, the Kitfile now has a mcpServers section, which can be used to package MCP bundles (.mcpb) files in a new layer format. These bundles are a common way to distribute MCP servers, and adding them to the Kitfile allows for building automation and management around MCP servers specifically.
For more details on how MCP bundles are handled, see PR #1214
Full Changelog: v1.14.0...v1.15.0
Welcome to the v1.14.0 release of Kit! We've added some exciting new features and improvements.
Welcome to the v1.14.0 release of Kit! We've added some exciting new features and improvements.
kit importKitOps can now generate attestations when running kit import, saving information about what was imported. The new flag, --attestation-output, can be used to generate a SLSA Provenance v1 predicate for the import process, which can then be pushed alongside the ModelKit to your OCI registry (e.g. by using cosign)
For more information, see PR #1175 by @gorkem.
Version v1.12.0 added support for datasets stored in S3 buckets via the remotePath field. In version v1.14.0, we are extending the remotePath field to support ModelKit references in addition to S3 URLs.
To illustrate how this changes the behaviour of Kit, consider the Kitfile
manifestVersion: v1.0.0
model:
path: my-model.safetensors
datasets:
- path: my-dataset/
remotePath: docker.io/jozu/my-dataset:latestmy-dataset/ will be ignored and not included as a layer in the manifestdocker.io/jozu/my-dataset:latest ModelKit will also be pulled.--include-remote flag is provided, the contents of docker.io/jozu/my-dataset:latest will be unpacked into my-dataset/. This is similar to running kit unpack docker.io/jozu/my-dataset:latest -d my-dataset/.This can be used to group multiple datasets together into one ModelKit for easier management, or to link datasets to model weights without requiring the datasets be pushed and pulled alongside the model.
For details on this change and more explanation, see PR #1185
kit init with --depth flagWith v1.14.0, the output of kit init can be adjusted slightly to include more or less information. Previously, kit init would analyze the files and directories in its target and attempt to group each based on whether it seemed like a dataset, model, code, documentation, or prompt element. With the new --depth flag, this process can continue into subdirectories of the target directory, adding more individual layers to the Kitfile before starting to group entries into whole directories.
This may be useful if a subdirectory contains many large files that ideally should not be included in a single layer. When the flag is not specified, it defaults to --depth=0, which is similar to how kit init behaved prior to this change.
For more details and examples, see PR #1176
During kit init, the generation of a "catch all" code layer, that contains all other files in the directory has changed. You should only see a layer with path: '.' when there are more than 5 files in the base directory. Additionally, when a "catch all" code layer is generated, it no longer replaces all previously-generated code layers. To see the discussion around this change, see #1176 (comment)
KitOps now sets the org.opencontainers.image.created annotation on manifests created when running kit pack. This means that re-packing a ModelKit will result in a different overall digest hash, though individual layers should retain reproducible digests (saving the need to re-push them). For more information, see PR #1139 by @itniuma2026.
Unpacking ModelKits as skills now supports auto-detecting more tools and agents. See PR #1181 for more details
Full Changelog: v1.13.0...v1.14.0
Welcome to the v1.13.0 release of Kit! In this release, we've improved how KitOps handles ModelKits that contain AI agent skills.
Welcome to the v1.13.0 release of Kit! In this release, we've improved how KitOps handles ModelKits that contain AI agent skills.
The kit unpack command now supports flag --as-skill. When specified, any skills within that ModelKit are automatically installed for any AI tools (e.g. Codex, Claude Code) that you have installed on your system. By default, Kit will install skills to all agents, globally.
To install skills only for a specific tool, e.g. Claude Code, specify the tool name as an argument for the --as-skill flag:
kit unpack <my-modelkit> --as-skill=claude-code
To install the skill to a local directory rather than globally, the --directory flag can be used to add skills only for the specified directory.
For more details, see PR #1158
Full Changelog: v1.12.0...v1.13.0
Note: the v1.12.0 had to be re-pushed to address an issue in our release pipeline: #1154
Note: the v1.12.0 had to be re-pushed to address an issue in our release pipeline: #1154
Welcome to the v1.12.0 release of Kit! We've added some exciting new features and improvements.
KitOps can now reference datasets stored in S3 buckets, avoiding the need to include them in ModelKit packages. If you are already storing datasets in S3, you can now link to them in your Kitfile:
datasets:
- name: my-remote-dataset
path: local/path/for/unpack
remotePath: s3://<bucket-name>/<bucket-key>
remoteHash: <ETag for remote object>
if you pack this Kitfile into a ModelKit, the my-remote-dataset dataset will not be included in the ModelKit artifact -- instead, Kit will verify the object in the S3 bucket. When this ModelKit is unpacked, Kit will download the dataset from S3 to the path specified.
For more information, see issue #887 and PR #1085
kit initKit now automatically detects agent skills when running kit init. If a directory contains a SKILL.md file, kit init will generate a Kitfile that includes that directory as a prompt, allowing for it to be easily unpacked independently from the rest of the ModelKit. Kit will also parse the frontmatter on SKILL.md to retrieve metadata related to the skill, and include that in the Kitfile, if applicable.
This is also preparation for future changes coming to Kit, which will allow unpacking ModelKits as agent skills, automatically adding the skill directory to your agent of choice (e.g. Claude Code, Cursor, etc.)
For more information, see PR #1092 by @gorkem.
kit importKit import can now import datasets from huggingface repositories automatically. To import from a dataset, use either kit import datasets/<hf-repository> or the full huggingface URL for import.
For more information, see issue #1004 and PR #1007
Thanks to @arnab2001 for this contribution!
Previously, kit init only worked on local directories. This caused friction when importing a model from Huggingface -- you could see the Kitfile and edit it during the import but it was not possible to get a Kitfile before running kit import. Thanks to @arnab2001, you can now pass huggingface URLs to kit init and have a Kitfile you can edit before passing it into kit import via the --file flag.
For more information, see issue #1055 and PR #1074
kit listThe kit list command now accepts a --filter flag that can be used to filter which ModelKits are included. This flag has the same semantics as --filter for kit unpack -- for example you can use kit list --filter=docs to list ModelKits that have docs layers. If you have a lot of ModelKits saved locally (or are looking at large remote repositories) this makes finding the ModelKit you're after much easier.
For more information, see issue #1091 and PR #1094
Thanks @rishi-jat for this contribution!
Full Changelog: v1.11.0...v1.12.0
Welcome to the v1.11.0 release of Kit! We've added some exciting new features and improvements.
Welcome to the v1.11.0 release of Kit! We've added some exciting new features and improvements.
KitOps now supports storing prompt files (e.g. CLAUDE.md) in ModelKits as a distinct section within the Kitfile. This allows for unpacking and reading prompts in a ModelKit separately from the rest of the ModelKit data.
To get started, you can add a prompts section to your Kitfile:
manifestVersion: 1.0.0
package:
name: prompt-kitfile
prompts:
- path: CLAUDE.md
description: "Additional instructions for Claude"Support for prompts extends to the kit init command; if you run kit init in a directory that contains common agent instructions files (such as Claude.md) or files ending in .prompt, Kit should automatically detect those as prompt files in the generated Kitfile.
This change requires KitOps v1.11 to function; if you attempt to unpack a ModelKit containing prompts in an older version of Kit, it will fail.
For more information, see PRs #1034 and #1054
KitOps now supports the --tls-cert flag for all commands that communicate with a remote server. This allows Kit to verify remote self-signed or otherwise untrusted certificates without disabling TLS functionality entirely (e.g. via the --tls-verify=false or --plain-http flags). If you're running an internal registry with TLS enabled, Kit can now verify the certificate used by that server.
For more information, see PR #1058
kit login failure when trace logging is enabled by @akagami-harsh in #1070Full Changelog: v1.10.0...v1.11.0
Nothing published for this version
Welcome to the v1.10.0 release of Kit! With this release, we're proud to announce initial support for CNCF ModelPack artifacts in the Kit CLI.
Welcome to the v1.10.0 release of Kit! With this release, we're proud to announce initial support for CNCF ModelPack artifacts in the Kit CLI.
We've added support for the CNCF model-spec in the Kit CLI. For most use cases, this should mean that Kit is able to work with ModelPack artifacts in the same way it handles ModelKits, allowing you to push, pull, and unpack artifacts that conform to the ModelPack specification.
To create new ModelPack artifacts, the kit pack command now supports the --use-model-pack flag. If specified, instead of creating a ModelKit OCI artifact, Kit will create an OCI artifact in the model-spec format. Once created, these artifacts should be handled by the Kit CLI transparently, with no additional changes to usage, though additional tools that rely on ModelKit media types may have issues processing ModelPack artifacts.
For more detail, see the PR that added support: #1000
Full Changelog: v1.9.0...v1.10.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Welcome to the v1.9.0 release of Kit! We've added some exciting new features and improvements.
Welcome to the v1.9.0 release of Kit! We've added some exciting new features and improvements.
Prior to v1.9.0, using kit remove with the --remote flag would delete the remote ModelKit, removing both it and all tags that referred to it. With the changes in v1.9.0, removing remote ModelKits behaves more similarly to the local case:
kit remove --remote registry.com/repository/modelkit@sha256:<digest>), the ModelKit with that digest is deleted from the remote repository, removing it and all tags referring to itkit remove --remote registry.com/repository/modelkit:latest), only the tag is removed; the ModelKit can still be pulled by digest or any additional tags pointing to it
--force flag, which will resolve the tag to a digest and then delete that digest.For more details, see kit remove --help, or the PR: #978
As of KitOps v1.9.0, the CLI will use https://kitops.ml/version to check for updates when running Kit commands. The benefits of this endpoint are twofold:
With this change, Kit will now also send two pieces of additional information on version checks:
kitops-cli/<version>)X-Command header containing the top-level Kit command used (e.g. push for kit push <destination>)To disable automatic version checks, use the command below:
kit version --show-update-notifications=false
For more details, see the original PR: #979
Full Changelog: v1.8.0...v1.9.0
Nothing published for this version
Welcome to the v1.8.0 release of Kit! We've added some exciting new features and improvements.
Welcome to the v1.8.0 release of Kit! We've added some exciting new features and improvements.
Thanks to @bupd, KitOps releases now include SBOM manifests in their release assets. You can find these assets published as part of the v1.8.0 release, and similar SBOMs will be included in new releases going forward.
For more details, see the PR by @bupd: #951
kit devThe kit dev command now supports supplying a ModelKit reference instead of using a local directory. This means that it's possible to start a LLM server (based on gguf-formatted model weights) without first unpacking a ModelKit. Try it out using
kit dev start jozu.ml/jozu/qwen2-7b:latestFor more information, see kit dev start --help or @gorkem's PR: #944
The Kit CLI now supports dynamic shell completions based on the ModelKits you have pulled locally. This means that in addition to autocompleting kit command names (e.g. "push" or "pull"), the CLI will suggest completions for ModelKits and their tags when using commands that require a ModelKit reference.
To add completions to your current terminal session, use one of the following commands, depending on your current shell
# bash
source <(kit completion bash)
# zsh
source <(kit completion zsh)
# powershell
kit completion powershell | Out-String | Invoke-Expression
# fish
kit completion fish | sourceCompletions should be supported for bash, zsh, fish, and powershell, though we haven't had a chance to thoroughly test all shell interpreters -- if you encounter issues with completions, please open an issue in this repository so that we can work on fixing it!
For more information, see the PR that added this feature: #963
latest tag when one is not provided. This behaviour mirrors what other OCI CLI's, such as docker and podman do, and avoids potentially confusing error messages when missing a tag during a command. For more information, see the PR by @mohammedahmed18: #935Full Changelog: v1.7.0...v1.8.0
Welcome to the v1.7.0 release of Kit! We've added some exciting new features and improvements.
Welcome to the v1.7.0 release of Kit! We've added some exciting new features and improvements.
Thanks to @tmbochenski, the KitOps KServe container now natively supports authenticating with Google Artifact Registry on GKE clusters. For documentation on setting this up, see the README.md
For more information, see the PR by @tmbochenski: #907
Thanks to @mohammedahmed18, the Kit CLI will now use Docker's credential store as a fallback for authenticating with registries when an entry in Kit's credential store is not available. This means that if you are logged in to a registry in Docker, you no longer need to log in in the Kit CLI.
For more details, see the PR by @mohammedahmed18: #910
kit list commandThe kit list command now supports the --format flag, allowing you to list ModelKits in JSON or Go-templated formats. This is useful for automation and tooling, which might prefer a machine-parseable output instead of the normal table that Kit prints by default.
You can now specify kit list --format=json to output the list as JSON, or use a template to print only the information you need. See kit list --help for more information.
For more details, see @gorkem's PR: #906
Full Changelog: v1.6.1...v1.7.0
Welcome to the v1.6.1 release of Kit! This commit addresses a storage requirements issue when running Kit pack in an otherwise uninitialized system (e
Welcome to the v1.6.1 release of Kit! This commit addresses a storage requirements issue when running Kit pack in an otherwise uninitialized system (e.g. in CI/CD pipelines)
In v1.6.0, we found that in some of our continuous intergration (CI) jobs that make use of the Kit CLI, we were seeing errors around running out of free disk space. As we carefully size storage space to ensure we can process ModelKits in CI, this pointed to a bug in how KitOps was handling initialization of its internal, on-disk storage. In particular, if local storage was not initialized, Kit was falling back to a copy (rather than rename) flow when saving blobs to its internal registry. This led to a higher peak storage requirement during pack and could, in some cases, cause CI jobs to fail due to lack of disk space.
For more information, see PR #901
Full Changelog: v1.6.0...v1.6.1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →