Skip to content

Releases: kitops-ml/kitops

Release v1.12.0

02 Apr 19:35

Choose a tag to compare

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.

New Features

Support for datasets stored remotely in S3 buckets

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

Skill support for kit init

Kit 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.

Huggingface datasets support for kit import

Kit 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!

Generate Kitfiles for remote repositories

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

Filtering output of kit list

The 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!

Significant Changes

  • Add pluggable Logger interface to output package by @gorkem in #1100

Bug Fixes

New Contributors

Full Changelog: v1.11.0...v1.12.0

Release v1.11.0

03 Feb 17:28

Choose a tag to compare

Welcome to the v1.11.0 release of Kit! We've added some exciting new features and improvements.

New Features

LLM Prompt support in ModelKits

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

Self-signed certificates support for Kit commands

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

Significant Changes

  • Add Kubeflow Pipeline components for ModelKits by @gorkem in #1033
  • Restrict matching for .bin files to pytorch_model from transformers by @amisevsk in #1059
  • Automatically retry pushing chunks on HTTP errors by @amisevsk in #1073

Bug Fixes

New Contributors

Full Changelog: v1.10.0...v1.11.0

Release v1.10.0

07 Nov 19:06

Choose a tag to compare

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.

New Features

CNCF ModelPack support

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

Documentation updates

Bug Fixes

  • Handle missing tag in ModelKit references per command by @amisevsk in #1003

Full Changelog: v1.9.0...v1.10.0

Release v1.9.0

20 Oct 19:34

Choose a tag to compare

Welcome to the v1.9.0 release of Kit! We've added some exciting new features and improvements.

New Features

Untagging ModelKits in remote repositories

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:

  • If the remove command has a digest (e.g. 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 it
  • If, however, the remove command uses a tag (e.g. kit 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
    • To delete the ModelKit itself, you can use a tag and the --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

Significant Changes

KitOps version check endpoint change

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:

  • It's generally faster to respond than the GitHub API we were using
  • It will correctly list the latest full release, skipping draft releases and prerelease versions

With this change, Kit will now also send two pieces of additional information on version checks:

  • A user-agent string matching what KitOps sends to registries (kitops-cli/<version>)
  • An 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

New Contributors

Full Changelog: v1.8.0...v1.9.0

Release v1.8.0

17 Sep 18:28

Choose a tag to compare

Welcome to the v1.8.0 release of Kit! We've added some exciting new features and improvements.

New Features

SBOM generation for KitOps CLI releases

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

Support for using ModelKit references with kit dev

The 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:latest

For more information, see kit dev start --help or @gorkem's PR: #944

Dynamic shell completions

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 | source

Completions 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

Significant Changes

  • The Kit CLI will now default to using the 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: #935

Bug Fixes & Documentation Improvements

New Contributors

  • @bupd made their first contribution in #951

Full Changelog: v1.7.0...v1.8.0

Release v1.7.0

27 Jun 16:47
4147a72

Choose a tag to compare

Welcome to the v1.7.0 release of Kit! We've added some exciting new features and improvements.

New Features

GKE support in KServe container

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

Docker credential store fallback for Kit CLI

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

Format flag for kit list command

The 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

Bug Fixes

  • Fix HF import to handle files that do not have Content-Length header by @amisevsk in #911

New Contributors

Full Changelog: v1.6.1...v1.7.0

Release v1.6.1

17 Jun 18:15

Choose a tag to compare

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)

Bug Fixes

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

Release v1.6.0

21 May 01:02

Choose a tag to compare

Welcome to the v1.6.0 release of Kit! We've added some exciting new features and improvements.

New Features

Ignore existing files when using kit unpack

Previously, kit unpack worked in one of two ways: either it would fail if unpacking would require overwriting a file, or it would overwrite the file (via the --overwrite flag). With v1.6.0, we've added a third option, --ignore-existing (or -i for short), which lets kit unpack succeed without overwriting existing files.

This was implemented to support the "init contianer" use case (see issue #874), as an init container might commonly unpack a model into a persistent volume (where the files already exist).

For more information, see issue #874 and PR #882

Significant Changes

  • Add --ignore-existing|-i flag to kit unpack by @amisevsk in #882

Bug Fixes

  • kit dev: if model path is a directory search for a gguf file for dev by @amisevsk in #881

Documentation improvements

Full Changelog: v1.5.1...v1.6.0

Release v1.5.1

25 Apr 19:00

Choose a tag to compare

Welcome to the v1.5.1 release of Kit! This release fixes a couple of bugs with ModelKit unpacking and the KServe container image

Bug Fixes

Fixes to unpacking ModelKits with references

Due to a bug in how ModelKit references were being handled, attempting to use filters when unpacking a ModelKit that references another ModelKit would result in the entire referenced ModelKit being unpacked. This was fixed in #842

Fixes to the release version of the KitOps KServe container

The KitOps KServe image did not include bash for release-tagged versions, which led to the entrypoint script failing to execute. This did not affect the next tag for the container, as the next image had a slightly different set of packages installed. PR #852 made sure that both release and rolling images use the same base packages.

In addition, PR #852 moved installing the AWS CLI (which is needed for AWS IRSA support in KServe) to the KServe container, reducing the size of the base KitOps container by around 200MB.

Full Changelog: v1.5.0...v1.5.1

Release v1.5.0

21 Apr 16:15
5931e59

Choose a tag to compare

Welcome to the v1.5.0 release of Kit! This release adds support for logging in to private registries when using the KitOps KServe container

New Features

Private registry support for KServe container

When using the KServe container, you can now access private registries by setting the KIT_USER and KIT_PASSWORD environment variables. See the KServe README.md for more information.

Additionally, thanks to @dpnoworyta, the KServe container now also supports AWS IRSA for authentication, simplifying access on AWS clusters. For more information, see PR #825.

New Contributors

Full Changelog: v1.4.0...v1.5.0