Almost Perfect KafkaBrowse Kafka topics and round-trip encrypted Avro messages without leaving VS Code. Built for clusters that are not plain: mutual TLS from a trust file and an identity file, a Schema Registry over HTTPS, and message values that are encrypted before they are ever written to a topic. Point it at your own cluster and describe how your payloads are wrapped — the decoding chain is configuration, not a hardcoded recipe. FeaturesThree views, and as many environments connected as you like. Environments lists every environment you have configured and whether each one is connected. Topics and Schemas show one group per connected environment, and hide that group when only one is connected, so the usual case is a flat list. Hold dev and test open together and read the same subject in both. Connecting is one probe, not a held-open session. Connect reads the broker's metadata and the registry's subject list, then closes everything. Nothing stays open between clicks, so a laptop that sleeps does not leave a socket behind. If the registry is unreachable the environment still connects and says so; only the broker decides whether you are connected. Producer and consumer tabs. Open either from a topic. Each becomes a real editor tab, so several topics can be open side by side and VS Code owns the layout. Every tab is titled with the environment first — A producer tab that knows the shape you have to send. The value box opens pre-filled with a skeleton built from the topic's schema — every field present, defaults kept, one element shown for a list. Send checks what you typed against that schema and names the field that is wrong, so a typo fails in front of you instead of at the broker. Free paste turns the check off when you want to send something the schema does not describe. Payloads you send often can be named and reloaded, per topic. Search a whole topic without holding it. The search box filters the rows a consume tab already holds as you type. Press Enter, or Search topic, and the extension walks the topic from its newest record backward in chunks, decodes each through the chain, and streams only the matches into the same list, newest first, with a running count and a Cancel. It hands over Reads without joining a consumer group. Partitions are assigned directly. No offsets are committed, no rebalance is triggered, and the read is invisible in your cluster's group listings — safe to point at a production topic that other consumers are already reading. Avro against the registry. Encode and decode against A payload chain you configure. Steps are ordered by you and reversed automatically when consuming, so producing and consuming stay symmetric. Nothing is pre-configured — a new environment has no chain and shows raw bytes until you build one, so a topic of plain JSON is readable on day one. mTLS from the files you already have. JKS, PKCS#12 or PEM — one file picker for trust, one for identity. No folder scanning and no naming conventions. Passwords in the OS keychain. Keystore and truststore passwords and encryption keys go to VS Code's secret storage, which is macOS Keychain, Windows DPAPI or Linux libsecret. Everything else stays in readable JSON. Getting started
Whatever you had connected comes back when VS Code reopens, re-checked rather than assumed, so a broker that has gone away shows as failed instead of as an empty list. Environment settings live in SettingsThree numbers are yours to change, under Almost Perfect Kafka in VS Code's settings.
Everything about an environment — brokers, registry URL, certificate paths, the payload chain — is per environment and lives in the extension's own storage instead, so nothing in a folder you opened can aim this extension at a cluster you did not choose. Requirements
No broker-side plugin, no CLI, and no native binary to compile — the extension talks to Kafka and the registry over their own protocols. StatusEarly preview, developed in the open. Producing and consuming, mTLS, the Schema Registry client and the payload chain are built; expect rough edges at the connection and error surface. On a high-throughput topic a consume tab keeps only the most recent Deliberately out of scope for now: consumer group and lag listings, creating or deleting topics, registering or evolving schemas, SASL authentication, and Confluent's field-level encryption. The extension reads the registry and never writes to it, and it has no topic administration commands at all. Questions, bug reports and feature requests: the Q & A tab on this extension's Marketplace page, or dev.almostperfect+kafka@gmail.com. LicenseMIT, in the |