From Kafka

Run in parallel.
Switch when you’re ready.

Prepare KubeMQ alongside your existing Kafka environment. Copy topic history, map consumer positions and validate the target while your source continues serving applications. Then move each workload in a coordinated cutover.

Explore the migration flow ↓

During migration · both environments running

Your production applications
Serving existing workloadsKafka
kmq migrateRead source · copy records · map offsets
KubeMQRunning alongside · ready for validation

Source stays in place. You choose the cutover.

Two environments. One controlled transition.

Build the new path.
Keep the current one running.

Replication and validation happen alongside your source environment. The application switch is a separate, deliberate step.

01 / Existing environment

Kafka keeps serving.

Your producers and consumers stay connected to the source during preparation. The migration tool reads source topics without producing records, committing source offsets or joining source consumer groups.

Production traffic stays here during preparation
Copy recordsMap offsets
02 / Target environment

KubeMQ runs alongside.

Topic records are written into KubeMQ with their keys, values, headers and source partition preserved. Validate application behavior and throughput on the target before moving production traffic.

Test the target before committing to the switch

Bring over a workload. Then the next.

Use --topic to scope record copying. Group related producers, topics and consumers into a migration wave, then repeat for the next independent workload.

A coordinated final step.

At cutover, coordinate producers, pause the selected consumers, complete the remaining copy and seed translated offsets before reconnecting them to KubeMQ.

Check eligibility before copying.

These constraints apply to the KubeMQ migration tools.

Migration assessment and commands

Inside the kmq CLI

Four commands.
A traceable path to production.

Each phase has a specific job. All migration writes go to the KubeMQ target; the source is read-only to the tools.

  1. 1

    Assess the source

    kmq migrate assess

    Inspect topic configuration and consumer groups. Get per-topic fitness results so you can select the first migration wave and address compatibility requirements up front.

    OutputA topic-level migration assessment.
  2. 2

    Replicate the records

    kmq migrate replicate

    Copy in parallel. Catch up before you switch. Each run copies records up to the source offsets captured at its start. Run it again to catch up with new records while Kafka stays active. Copy history into the corresponding target partitions. A local state file tracks copied positions and the source-to-target offset map. Re-run with the same state file to resume copying and bring over additional records.

    OutputTopic history on KubeMQ, plus a persisted offset map.
  3. 3

    Preview consumer positions

    kmq migrate translate

    See where each consumer group will resume on the target. This read-only preview translates committed offsets using the recorded map, giving your team a checkpoint before cutover.

    OutputTarget resume positions you can review before writing them.
  4. 4

    Cut over the workload

    kmq migrate cutover

    With the selected source and target consumer groups inactive, verify replication has reached the committed positions and seed their target offsets. Update client endpoints and authentication settings, then resume consumers on KubeMQ.

    OutputConsumers resume from mapped positions on KubeMQ.
Open the migration guide — commands, authentication and examples

Consumer continuity

Your history moves.
Your consumers keep their place.

Kafka and KubeMQ can assign different offsets to a record. The migration tools record the correspondence so consumers resume from the mapped target position.

Example · same record, different offsets
Kafka / partition 0 / 1042KubeMQ / partition 0 / 876
  • Configure your target before copyingSet retention and other topic settings in KubeMQ before migration. For existing target topics, verify that partition counts match the source.
  • Record contents preservedKeys, values, headers and original CreateTime are copied. Source partition assignments are retained.
  • Progress saved between runsThe migration state file persists copying progress and offset mappings. Copying is resumable and at-least-once.
  • Readiness checked before seedingCutover checks that copying has reached the group’s committed offsets on every partition before writing resume positions.
  • Familiar Kafka clientsSupported clients connect directly to KubeMQ’s Kafka listener after cutover. The migration tool is separate from that application connection.

Practical answers.
A smoother move.

How do Kafka and KubeMQ run in parallel?

Deploy KubeMQ alongside the source and use the migration tools to copy records into it. Existing applications continue using Kafka during preparation while you validate KubeMQ separately. Re-run replication with the same state file to copy additional records, then coordinate the final catch-up and client switch for each workload.

What changes for our applications?

For supported Kafka clients and features, keep your existing client library and application code. Change bootstrap.servers to KubeMQ and configure the target’s authentication. The assessment and a staged test identify any workload-specific adjustments before production cutover.

Explore Kafka workload compatibility
How do we keep the transition smooth for customers?

Do the copying and validation ahead of the switch. Choose a cutover window for the selected workload, coordinate its producers and pause its consumers for the final catch-up and offset seeding. Resume on KubeMQ and verify processing before expanding to the next wave. This concentrates the production change into a planned step rather than the entire migration period.

How is copying progress protected?

Use a target running the replicated storage engine used by new installations with strict acknowledgment policy, and retain the migration state file. Copying is resumable and at-least-once: a crash between target acknowledgment and saving the offset map can cause a record to be copied again. Include duplicate handling in your application validation.

What should we verify before moving the next workload?

Confirm a producer can write and a consumer can read through the KubeMQ Kafka listener. Check that migrated consumer groups resume at the positions shown in the translation preview, then compare processing behavior, throughput and latency with your acceptance criteria.

Follow the post-cutover checks
Can we keep the original environment during the transition?

Yes. The migration tools leave source records and committed offsets untouched, so you can retain the original environment while validating each wave. Plan how to handle any new records written after cutover if you need to return traffic to the source; those target writes are not automatically copied back.

Let’s map your first
migration wave.

Bring your topics, consumer groups and throughput requirements. We’ll help plan the parallel setup and cutover.

Start with your Kafka workload.

Run a 14-day Docker evaluation with kmq

Install kmq for macOS, Linux or Windows, start Docker, then run:

kmq onboard --goal evaluation --name kubemq --platform linux/amd64 --pull

Use the returned installation identifier to authenticate and verify. Enter your password locally when prompted.

kmq auth setup --installation INSTALLATION_ID --username admin
kmq deploy verify --installation INSTALLATION_ID

See installation and verification steps →

Use Podman or ask a coding agent to help

For Podman, add the --runtime podman option. The server image is Linux x86-64; Apple Silicon needs x86-64 emulation in the container runtime. Coding agents can read the installed kmq command schema and skills before planning changes.

Help me deploy KubeMQ using kmq. Read https://docs.kubemq.io/deploy/cli and inspect `kmq version`, `kmq schema -o json` and `kmq skills get core`. Ask whether I want evaluation, trial or production and which runtime/context to use. Explain missing prerequisites. Inspect before changing resources. Use saved plans and explicit targets. Keep passwords, email codes and license keys out of chat, command arguments and logs; let me enter them through protected local input. Preserve existing data and installation identity. Verify license adoption, authenticated access and an exact message round trip before reporting success. If anything fails, show the actual state and a bounded recovery step.
Run Docker manually

This single-line evaluation command works in macOS and Linux shells and Windows PowerShell. Replace Docker with Podman when using Podman.

docker run -d --platform linux/amd64 --name kubemq --hostname kubemq -p 127.0.0.1:8080:8080 -p 127.0.0.1:50000:50000 -p 127.0.0.1:9090:9090 -v kubemq-data:/kubemq/store europe-docker.pkg.dev/kubemq/images/kubemq-next:v3.5.0

Open the local dashboard to create your administrator account. Verify the installation and send a message →

The evaluation starts on a fresh standalone data volume. Keep that volume if you later add a trial or paid license. Online evaluation needs outbound HTTPS to license.kubemq.io. By running it, you accept the evaluation terms, including required usage reporting.

Talk to KubeMQ

Let’s find your fit.

A little context helps us make this conversation useful.

Step 1 of 2

What would you like to explore?

Prefer email? [email protected]

Your privacy choices

Essential services · Always active

Required for hosting, security and remembering your privacy choice. We collect anonymous first-party activity counts unless your browser requests no tracking. Google Analytics is optional and only loads with your permission. No advertising trackers are loaded.

Allow Vimeo videos to load. Vimeo receives your IP address and may use cookies. You can change this choice at any time.

Disabling videos stops them on this page. It cannot undo information already shared or remove Vimeo cookies; manage those in your browser settings.

Google Analytics measures visitors, sessions, traffic sources and known button clicks. Google receives connection information such as your IP address. No form values are sent. You can withdraw consent here; this stops future measurement and removes this site’s Analytics cookies.

Read our privacy notice