Skip to content

Releases: twmb/kcl

0.18.0

22 Apr 00:12

Choose a tag to compare

Large release with many intentional breaking changes. Treat this as a
beta for 1.0 -- hopefully the last round of breakage, though further
breaks may happen based on feedback before 1.0 tags. Read the
CHANGELOG
carefully if you script against kcl.

Highlights

  • New kcl fake command -- start a kfake cluster in-process for testing, probing, and CI without Docker.
  • Named [profiles.NAME] support in the config file with --profile/-C.
  • Share group client support (KIP-932) -- kcl share-group subtree and kcl consume --share-group.
  • New kcl topic trim-prefix, kcl topic describe (with sections and health filters), kcl group seek, kcl cluster features, kcl client-metrics.
  • Global -B/--bootstrap-servers one-off override.
  • Global --help-json for programmatic introspection.
  • Consistent --yes/-y confirmation skipping, standardized exit codes {0, 1, 2}, and JSON output that always lands valid on stdout (errors on stderr).
  • Binary tags itself with its version on the wire (ClientID = "kcl/<version>") so brokers can identify kcl in ACL audit logs and metrics.
  • Config timeouts switched from integer milliseconds to Go duration strings (broker_timeout = "5s", etc.).

Breaking summary (see CHANGELOG for full detail)

  • kcl myconfig -> kcl profile (old name is a hidden alias).
  • kcl transact, kcl admin delete-records, kcl admin topic alter-config, kcl admin txn unhang removed; most have direct replacements.
  • Resource commands (topic, group, acl, cluster, config, quota, logdirs, reassign, user, dtoken, client-metrics, txn) promoted from under kcl admin to the top level.
  • --execute / --no-confirm standardized to --yes/-y.
  • --if-exists / --if-not-exists removed -- non-zero exit codes + JSON output replace them.
  • timeout_ms renamed to broker_timeout; value format is now a Go duration string.
  • Column headers in text output no longer contain spaces (GROUP ID -> GROUP-ID etc.).

Upstream

  • Builds with Go 1.26.
  • franz-go v1.21.0, kadm v1.18.0, kmsg v1.13.1, kfake latest.

Install

go install github.com/twmb/kcl@v0.18.0

or download a pre-built binary below.

0.17.0

17 Oct 02:59
20218ec

Choose a tag to compare

  • Bumps all deps, notably pulling in franz-go v1.20.0 which can detect Kafka 4.1
  • Builds with Go 1.25.3
  • Fixes kcl misc raw-req request pinning

0.16.0

12 May 22:36
39ff08c

Choose a tag to compare

  • Bumps all deps
  • Builds with go1.24.2
  • Enables fish command completion
  • Allows -1 to reset offsets in delete-records

0.15.0

07 Feb 03:38
6c05245

Choose a tag to compare

  • Bumps all deps
  • Builds with go1.22.0
  • Fixes kcl misc raw-req to obey a version in the input json, if a version is specified

0.14.0

22 Jan 00:34
2572bb0

Choose a tag to compare

  • Bumps all deps
  • Fixes kadm admin user-scram alter typo
  • Supports --as-version for all Kafka versions, and kcl misc api-versions --version for all Kafka versions -- and makes it so no code changes are needed in kcl when franz-go adds support for newer Kafka versions
  • Builds with go1.21.6

0.13.0

04 Aug 01:40

Choose a tag to compare

  • Bumps all deps
  • Now detects Kafka 3.5, and should detect KRaft properly
  • Adds a new tls_insecure option (thank you @dbudworth!)
  • Builds with Go 1.20.7
  • Fixes bug from 0.12.0 where kcl admin topic create stopped supporting --config-path (turns out, the bug was isolated to this command only)

0.12.0

14 Mar 05:17

Choose a tag to compare

This release bumps alls deps, builds with Go 1.20, and disables CGO entirely. Ideally, disabling CGO should resolve #28.

0.11.0

08 Feb 08:43
a5c9868

Choose a tag to compare

This release fixes one minor issues, one feature improvement, and now can detect Kafka 3.4.

Issue: previously, an empty tls struct would be omitted when marshaled, now it is not (meaning tls with no custom certs is preserved). Feature: the myconfig command now can autocomplete available configuration files (thanks @robsonpeixoto, as well for the bug fix!). Kafka 3.4: all deps have been bumped, and the latest franz-go can detect Kafka 3.4 from kcl misc probe-version.

0.10.0

05 Jan 23:47

Choose a tag to compare

This release adds --proto-file and --proto-message to kcl consume, allowing consume to deserialize protobuf encoded values before printing the value (thanks @moming00)!. This release also recognizes 3.3 in kcl misc probe-version. Lastly, all deps have been bumped.

0.9.0

07 Jun 22:49

Choose a tag to compare

This release contains some nice improvements to kcl produce and kcl consume from @Zach-Johnson:

  • kcl produce -Z now produces tombstones
  • kcl produce -p can now produce to a specific partition
  • kcl consume's offset flag is now more intelligent and has consume-until semantics

As well, kcl now detects (through kcl misc probe-versions) Kafka 3.0, 3.1, and 3.2. Lastly, modules have been updated, most significantly bumping franz-go from v1.2.3 to v1.6.0, which contains many bug fixes and improvements.