Home / Product / Vscode Zed Extension

Your Kafka platform, right inside your editor.

Every cluster, topic and application in VS Code or Zed, with help on every change and a check before anything ships.

payments.yaml
topics › payments.yaml › spec › configs
Conduktor Console resource | Dry run | Diff with Live
apiVersion: kafka/v2
kind: Topic
metadata:
name: payments.refunds
cluster: prod-eu-1
spec:
partitions: 6
replicationFactor: 3
configs:
cleanup.policy: delete
ret
  • retention.mslong
  • retention.byteslong
  • local.retention.mslong
  • delete.retention.mslong

retention.ms

long · default 604800000

This configuration controls the maximum time we will retain a log before we will discard old log segments to free up space if we are using the "delete" retention policy.

orders.yaml
topics › orders.yaml › metadata › cluster
Conduktor Console resource | Dry run · + Created | Diff with Live
apiVersion: kafka/v2+ Created (dry run)
kind: Topic
metadata:
name: orders.created
cluster: prod-eu1prod-eu-1

KafkaCluster 'prod-eu1' is not in the repository or on acme-prod. Conduktor

metadata.cluster · string · required

View ProblemQuick Fix… (⌘.)

Quick Fix

Change to 'prod-eu-1'

spec:
partitions: 12
replicationFactor: 3
configs:
retention.ms: "604800000"
payments-topics.yaml
topics › payments-topics.yaml
Dry run all (2) | Dry run · + Created | Diff with Live
apiVersion: kafka/v2+ Created (dry run)
kind: Topic
metadata:
name: payments.refunds
cluster: prod-eu-1
spec:
partitions: 6
---
Dry run · ✗ failed | Diff with Live
apiVersion: kafka/v2✗ failed (dry run)Policies check failed: payments-topics: partitions must be between 3 and 12
kind: Topic
metadata:
name: payments.chargebacks
cluster: prod-eu-1
spec:
partitions: 48

Problems1

Policies check failed: payments-topics: partitions must be between 3 and 12 Conduktor [Ln 9, Col 1]

orders.created (acme-prod) ↔ orders.yaml

On acme-prod

apiVersion: kafka/v2
kind: Topic
metadata:
name: orders.created
cluster: prod-eu-1
spec:
partitions: 6
replicationFactor: 3
configs:
cleanup.policy: delete

In your file

apiVersion: kafka/v2
kind: Topic
metadata:
name: orders.created
cluster: prod-eu-1
spec:
partitions: 12
replicationFactor: 3
configs:
cleanup.policy: delete
retention.ms: "259200000"
payments-core.yaml
applications › payments-core.yaml › spec › owner
Conduktor Console resource | Dry run | Diff with Live
apiVersion: self-service/v1
kind: Application
metadata:
name: payments-core
spec:
title: Payments core
description: Card payments and refunds.
owner: team-paymentspayments-squad

team-paymentspayments-squad

Enter to Rename, ⇧Enter to Preview

Renamed in your files only. acme-prod still has Group 'team-payments': applying creates 'payments-squad' beside it.

topics.yaml
topics.yaml
Conduktor Console resource | Dry run · + Created | Diff with Live
apiVersion: kafka/v2+ Created (dry run)
kind: Topic
metadata:
name: orders-eu
cluster: prod-eu-1
spec:
partitions: 6
replicationFactor: 3
configs:
retention.ms: "604800000"

Chat

Using the Conduktor tools, write topics.yaml with an orders-eu topic on prod-eu-1: 6 partitions, 7 days retention. Validate and dry-run it.

  • Ran Get Conduktor kind schema
  • Ran Validate Conduktor YAML
  • Ran Dry-run Conduktor YAML

topics.yaml has orders-eu on prod-eu-1, with 6 partitions and retention set to 7 days. It passes the schema, and the dry run says it would be Created. Nothing has been applied.

Ask, edit or build

Stay in your editor. Conduktor comes to you.

No more switching between the Console, the docs and a failed pipeline to get one change right. The extension brings what Conduktor knows about your platform to the place where you already work.

Platform teams

Put your whole platform under version control

Pull everything that already exists into files your team reviews in git, then roll changes out the same way your pipeline does.

  • Every cluster's topics, applications and policies, synced as files in one go
  • Secrets never written to disk, so they never reach git
  • What changed in the Console since your last sync, visible at a glance
  • A whole environment planned and applied from the editor

Application teams

Ship your changes without the back-and-forth

Create the topics, access and permissions your application needs, with your platform's rules checked as you go.

  • Suggestions and docs for every setting, as you type
  • Typos and wildcard mistakes flagged, with a one-click fix
  • Your platform's rules checked every time you save
  • Exactly what will change, before you ask for a review

Dry-run against production as often as you like

A dry run asks your Console what a change would do, without making it. New connections start in prod mode, where dry runs are all they can do.

On staging, in dev mode

Dry run

The Console says what the change would do, or which rule blocks it.

+ Created (dry run)

Apply

Try it for real, once you confirm.

Apply to staging?

On production, in prod mode

Diff with Live

Your file next to what is running now.

partitions: 6 → 12

Dry run

The same check, against production. Nothing changes.

~ Updated (dry run)

Ship it

Merge the pull request. Your pipeline runs the apply.

conduktor apply -f topics/

Works with the Consoles you run

A Console on your laptop or the ones in your company's network: the extension talks to them directly, with your own token. Already use the conduktor CLI? Zed picks up its settings as they are.

Agents write, you apply

AI agents can write and check changes, but never apply them. Passwords, tokens and keys are hidden from them.

Open source

Apache-2.0, on GitHub. Usage events never include resource names, URLs, files or YAML.

Up and running in two minutes

Install the extension, connect your Conduktor Console, and open your first resource.

In your terminal
code --install-extension conduktor.conduktor-console
  1. Open the Conduktor view and choose Add Connection.
  2. Paste your Console's URL and a personal access token. The connection starts in prod.
  3. Open any Conduktor YAML, or pick New Resource… on a kind in the tree.

Installing from Open VSX? Our listing is in review. Until it's live, install the .vsix from the latest release.

What each editor gets
VS CodeZed
Completion, docs and errors from your Console's schemaYesYes
Names checked, with quick fixes, go to definition and renameYesYes
Dry run on open and save, apply in devYesYes
Resource tree, Diff with Live, sync folder, CLI plan and applyYesNot yet
Tools for Copilot, Claude Code and any MCP clientYesNot yet

Zed extensions can't add panels or views, so the tree and the views stay in VS Code.

Do I need a Conduktor Console?

To check against your platform, yes: a Console you can reach, and a personal access token or an admin API key. Without one, you still get completion and checks from the schema bundled with the extension.

Can it change my Console by accident?

Not in prod, where every new connection starts: no apply, no save to the Console, no delete. In dev, every change is dry-run first and waits for your confirmation.

Does it replace our GitOps pipeline?

No, it feeds it. You write the same YAML the conduktor CLI applies, and every dry run prints the matching conduktor apply -f … --dry-run command, ready for CI.

Which resources does it know?

Every kind your Console's API accepts: users, groups, applications, policies, clusters, topics, subjects, connectors, service accounts and more. The schema comes from your Console, so a newer Console's kinds appear on their own.

Will it touch our Kubernetes or Helm files?

No. It only answers for documents with a Conduktor apiVersion and kind. Kubernetes, Argo CD and Helm documents are left alone, even in the same file.

What does it send to Conduktor?

Usage events: which features are used, as counts, and the Console's kind names. Never resource names, URLs, files or YAML. It follows VS Code's telemetry setting.

Bring your Kafka platform into your editor

Install the extension, connect your Console, and start in minutes.

Install for VS Code View on GitHub