Broka 1.0.1
Highlights
- Kafka's own health, over JMX. With JMX set up, every broker and controller reports what it measures about itself — the active controller, offline partitions, partitions under their minimum in-sync replicas, request rates and their 99th-percentile time, how idle the request handlers and network threads are, heap, garbage collection, CPU and file descriptors. The figures are read live and never stored.
- Alerts on what surrounds Kafka. A rule can watch a Kafka Connect cluster and its connectors, the Schema Registry, and every JMX figure worth acting on, with starter rules for each.
- Alerting that settles. An incident resolves once its figure has stayed clear for a while, an incident that reopens soon after does not notify again, and everything that breaches on one connection at once reaches a channel as one message.
- An MCP server for AI assistants (Commercial). Claude Code, Claude Desktop, Cursor or another MCP client reads the estate and, where an administrator allows it, changes it — as the owner of an API token, with that person's permissions, under every guard the console applies, and on the audit trail. Off until an administrator turns it on.
- Data masking (Commercial). Rules hide chosen fields of messages and values — a card number, an address, a header — from people who may read the rest. Seeing them unmasked is a permission of its own, and every such read is recorded.
Changes
Kafka
- JMX in its own dialog — an address per broker and per controller, for clusters whose brokers sit behind a load balancer, and a test that asks every node once and names why one did not answer.
- Health on the Brokers page — Active controller, Offline partitions and Under min ISR tiles, and optional State and Offline log dirs columns.
- Graphs — requests per second and their p99 time by type, handler and network idle, the request and response queues, and messages in per broker.
- A broker's Metrics tab — heap, garbage collection, CPU, file descriptors, threads, log flush time, ISR changes, failed requests and rejected bytes. A controller that is not a broker is read as a node too, from the Quorum tab.
- A topic's rates — bytes in and out and messages in per second, read when its page is open.
- When not every node answers — a figure about one node shows for each node that answered; a figure about the whole cluster shows only when every node it depends on answered, and says why when it does not.
Alerts
New things to watch — Kafka Connect clusters and connectors (unreachable, failed, paused or stopped, failed tasks), the Schema Registry (unreachable, slow, read-only, subject count), and the JMX figures per node. A component that does not answer reads reachable = 0, which a rule can fire on.
Resolve after and Cooldown — two minutes and ten minutes unless you choose otherwise; Notify when resolved, on unless you turn it off.
Stale and unevaluatable, said plainly — a rule nothing has evaluated for three periods reads stale; a rule on an old Kafka snapshot says how old; a rule that would watch more than 500 targets on one cluster watches the first 500 and says so.
Each connection on its own schedule — a cluster that is down or slow delays only its own rules, and a component that does not answer fails alone.
Delivery — one message per channel per connection per evaluation, listing every breach; a channel that asks to be waited for is waited for, and a slow channel holds back no other.
History — resolved incidents and the record of their notifications are kept for the audit retention window, then removed.
Shovels, federation links, bridges and broker connections (Commercial, with RabbitMQ or Apache Artemis) — a rule can watch whether a RabbitMQ shovel or federation link runs, what a shovel has pending, whether an Artemis bridge or broker connection is connected, and how many members a cluster connection sees.
MCP server (Commercial)
- Settings ▸ MCP — Off by default, Read only, or Read and write; the endpoint's address and the configuration for Claude Code, Claude Desktop and Cursor. A token for an assistant is made under Profile ▸ API tokens and can be limited to the permissions the work needs.
- The
mcp.usepermission — in the built-in Admin role only; anyone else is granted it, across the installation. - Tools for Kafka, Redis, RabbitMQ, Apache Artemis and Memcached — reads, including message contents where the token's owner may read them; changes the console makes, with a preview first where the console previews and a reason on every destructive tool.
- Never through MCP — users, roles, grants, tokens, settings, the licence, connections, environments, alerting, broker access control and whole-cluster operations stay in the console.
- On the record — every call carries the channel MCP with the tool, the client and the token's prefix, and the audit log filters on it. Contents somebody else wrote come back marked as data, never as instructions.
Data masking (Commercial)
- Settings ▸ Data masking — rules by platform, scope and resource pattern; fields by JSON path, header, record key, whole value or Redis hash or stream field; Redact, which keeps a JSON value's type, or Partial, which keeps the first and last characters you choose; a live preview and who sees each rule unmasked.
- Everywhere contents are shown — Kafka records, RabbitMQ and Artemis messages, Redis and Memcached values, and what the MCP server returns, masked before they leave the broker service. A value a rule cannot read is masked whole.
- Read masked contents unmasked (
messages.read.unmasked) — in no built-in role, granted on an environment, a connection or a resource pattern; every unmasked read is recorded, whatever the read-recording setting. - Filters, writes and copies — a filter cannot reveal a masked field, a masked item cannot be written back, and moving or copying masked contents somewhere the rule does not reach is refused.
- Kept when a licence lapses — every rule stays applied; only changing the rules waits for a valid licence.
RabbitMQ (Commercial)
- Restart a shovel — from its row, after the far end of a shovel that terminated is fixed. Recorded in the audit trail.
Console
- Resizable columns — the resize handles are visible and easy to grab, and a resized name column can be made narrower.
Known limitations
linux/amd64only.- The API runs as a single replica; there is no high-availability mode.
- TLS is not terminated in the stack: put a reverse proxy or a load balancer in front.
- The Compose recipe runs its own PostgreSQL; it has no setting for an external one.
- No single sign-on (SSO, LDAP) and no multi-factor authentication.
- No self-service password reset in the console: an administrator resets a user's password.
- JMX figures are live only: there is no history of them. A managed Kafka service that exposes no JMX shows Needs JMX where they would be.
- A topic's own rates are shown on its page and cannot be alerted on.
- Data masking changes what BROKA shows, not what the broker holds: a client reading the broker directly sees the original, and nothing is encrypted at rest.
- The MCP server reaches no alert rule, incident or silence, and changes no Kafka ACL. A plan an assistant previewed is kept in memory for ten minutes, so a restart of the API drops it and the assistant previews again.
Upgrade notes
- Change the pinned version. Apart from the version they pin, 1.0.1's
compose.ymland.env.exampleare 1.0.0's, so onlyBROKA_VERSIONchanges in your.env: set it to1.0.1, pull and start. The API applies its database migrations when it starts. - Back up first. Back up the database, and
.envwith it —BROKA_KEKdecrypts every stored credential. Migrations go forward only: moving back to 1.0.0 on the same database is not supported. - JMX settings carry over. A connection's JMX port, user and password from 1.0.0 are read as they are. Open the JMX dialog to give a broker or a controller an address of its own.
- Existing alert rules take the new defaults — resolve after two minutes, a ten-minute cooldown, and a notice when an incident resolves. Change them on the rule.
- Commercial: nothing new is switched on. The MCP server starts Off, no masking rule exists until one is written,
and no role holds
messages.read.unmasked. Upgrading a Commercial installation is described in the customer portal.

