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

[Install for VS Code](https://marketplace.visualstudio.com/items?itemName=conduktor.conduktor-console) [Zed and other editors →](#install)

## Catch problems while you type, not after you ship

Help on every line Suggestions and docs for every setting, straight from your Conduktor Console.
Typos caught on the spot Point at a cluster or a team that doesn't exist and you know right away, with the fix one click away.
Your team's rules, checked on save Every save is checked against your platform's policies, so nothing bounces back from review.
See what will change Compare your change with what is running before you apply it.
Rename once, everywhere Rename a team and every file that mentions it follows. Nothing changes on Kafka until you apply.
Let your AI do the typing Copilot and Claude Code get Conduktor's tools. They write, Conduktor checks, you decide.

**********

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

-  **ret**ention.mslong

-  **ret**ention.byteslong

-  local.**ret**ention.mslong

-  delete.**ret**ention.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-eu1**prod-eu-1*

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

metadata.cluster · string · required

View Problem Quick 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*

Problems**1**

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-payments**payments-squad*

team-payments payments-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

main acme-prod · user · prod ⊗ 0  ⚠ 0 ⊗ 0  ⚠ 1 ⊗ 1  ⚠ 0 Spaces: 2  UTF-8  YAML

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

```
code --install-extension conduktor.conduktor-console
```

- Open the **Conduktor** view and choose **Add Connection**.

- Paste your Console's URL and a personal access token. The connection starts in prod.

- 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](https://github.com/conduktor/conduktor-language-tools/releases/latest).

In review for Zed's extension registry

```
{
  "lsp": {
    "conduktor-console": {
      "settings": {
        "url": "https://console.acme-corp.com",
        "name": "acme-prod",
        "mode": "prod"
      }
    }
  }
}
```

Already set up the conduktor CLI? The extension reads CDK_BASE_URL and CDK_API_KEY, so there's nothing to add. Want it before it's listed? [Install it as a dev extension](https://github.com/conduktor/conduktor-language-tools/blob/main/extensions/zed/README.md).

```
npm install -g @conduktor/console-language-server
```

The language server behind the Zed extension. Point your editor's LSP client at conduktor-console-language-server --stdio for YAML files. It reads the same CDK_BASE_URL and CDK_API_KEY as the CLI.

|  | VS Code | Zed |
| --- | --- | --- |
| Completion, docs and errors from your Console's schema | Yes | Yes |
| Names checked, with quick fixes, go to definition and rename | Yes | Yes |
| Dry run on open and save, apply in dev | Yes | Yes |
| Resource tree, Diff with Live, sync folder, CLI plan and apply | Yes | Not yet |
| Tools for Copilot, Claude Code and any MCP client | Yes | Not yet |

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

## Where to get it

[Conduktor Console Conduktor Install Visual Studio Marketplace The VS Code extension, with every feature on this page. Install for VS Code](https://marketplace.visualstudio.com/items?itemName=conduktor.conduktor-console)

[@conduktor/console-language-server Install npm i @conduktor/console-language-server npm The language server, for any editor that speaks LSP. View the package](https://www.npmjs.com/package/@conduktor/console-language-server)

[conduktor / conduktor-language-toolsPublic Conduktor Console for VS Code and Zed: your Kafka platform's resources as YAML, checked against your Console as you type  TypeScriptApache-2.0 GitHub All of it is open source, under Apache-2.0. View the source](https://github.com/conduktor/conduktor-language-tools)

[Conduktor Console conduktor-console-lsp Conduktor Console resources as YAML, checked against your Console's schema as you type. In review Zed extensions In review for Zed's registry. Meanwhile, it installs as a dev extension. Install as a dev extension](https://github.com/conduktor/conduktor-language-tools/blob/main/extensions/zed/README.md)

[Conduktor Console conduktor.conduktor-console In review Open VSX In review, for VSCodium and other editors that install from Open VSX. Get the .vsix meanwhile](https://github.com/conduktor/conduktor-language-tools/releases/latest)

## Frequently Asked Questions

**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](https://marketplace.visualstudio.com/items?itemName=conduktor.conduktor-console) [View on GitHub](https://github.com/conduktor/conduktor-language-tools)
