bussard
Open-source CLI for KNXOpen-Source-CLI für KNX

Your KNX installation, in plain YAML. Programmed from the terminal.Deine KNX-Anlage, in einfachem YAML. Programmiert aus dem Terminal.

bussard imports your ETS project into YAML files you can keep in git, pushes changes to the devices over your KNXnet/IP gateway, and decodes everything that happens on the bus. Built so an LLM can work on your installation with you.bussard importiert dein ETS-Projekt in YAML-Dateien, die du in git versionieren kannst, überträgt Änderungen über dein KNXnet/IP-Gateway auf die Geräte und decodiert alles, was auf dem Bus passiert. Gebaut, damit ein LLM mit dir an deiner Anlage arbeiten kann.

Download Read the docsZur Doku v0.1.0 · macOS, Linux, Windows
bussard monitor
$ bussard import demo-house.knxproj
33 group addresses, 10 devices, 55 links → knx
$ bussard monitor
12:03:41 1.1.7 Weather Station → 3/0/0 Wind Alarm = Alarm
12:03:44 1.1.1 Push Button Hall → 0/0/0 Hall Light = On
12:03:44 1.1.3 Switch Actuator → 0/0/1 Hall Light Status = On
$ bussard read 4/1/11
21.4 °C (9.001)
$ 
How it fits togetherSo passt es zusammen

One model in git. Two paths to the bus.Ein Modell in git. Zwei Wege zum Bus.

Everything bussard knows about your installation lives in a folder of YAML files. Commands either write that model to the devices, or read the bus and explain it using the model.Alles, was bussard über deine Anlage weiß, liegt in einem Ordner mit YAML-Dateien. Befehle schreiben entweder dieses Modell auf die Geräte oder lesen den Bus und erklären ihn mit Hilfe des Modells.

.knxproj ETS project export, optional ETS-Projektexport, optional .knxprod vendor product data, optional Herstellerdaten, optional import import-product YAML model in git YAML-Modell in git devices.yaml · groups.yaml · links.yaml · reviewable diffs, edited by people and LLMs devices.yaml · groups.yaml · links.yaml · prüfbare Diffs, bearbeitet von Menschen und LLMs Claude / any LLM Claude / beliebiges LLM edits YAML, uses MCP bearbeitet YAML, nutzt MCP edits the model bearbeitet das Modell MCP write path Schreibweg validate · plan · apply · flash observe path Beobachtungsweg monitor · capture · read · viz bussard one binary: CLI, MCP server, live network view eine Binary: CLI, MCP-Server, Live-Netzwerkansicht KNXnet/IP gateway KNXnet/IP-Gateway tunneling or routing Tunneling oder Routing KNX bus KNX-Bus actuatorpush buttonsensorweather AktorTasterSensorWetter
Green is the write path: bussard turns the model into device tables and downloads them. Amber is the observe path: telegrams from the bus get device names, group address names and typed values from the same model.Grün ist der Schreibweg: bussard macht aus dem Modell Gerätetabellen und lädt sie auf die Geräte. Gelb ist der Beobachtungsweg: Telegramme vom Bus bekommen Gerätenamen, Gruppenadressnamen und typisierte Werte aus demselben Modell.
What it doesWas es kann

Day-to-day KNX work without opening ETS.Tägliche KNX-Arbeit, ohne die ETS zu öffnen.

ETS stays in the drawer for the things only ETS can do: certification, planning and the odd exotic device.Die ETS bleibt in der Schublade für das, was nur die ETS kann: Zertifizierung, Planung und das eine exotische Gerät.

Import your ETS projectETS-Projekt importieren

One command turns a .knxproj into YAML with named devices, group addresses and links. Keep it in git and review every change as a diff.Ein Befehl macht aus einer .knxproj YAML-Dateien mit benannten Geräten, Gruppenadressen und Verknüpfungen. Versioniere sie in git und prüfe jede Änderung als Diff.

Watch the bus, decodedDen Bus beobachten, decodiert

Every telegram shows the sending device, the group address by name and the value as a typed unit. Filter by address or sender, or stream JSON to your own tools.Jedes Telegramm zeigt das sendende Gerät, die Gruppenadresse mit Namen und den Wert als typisierte Einheit. Filtere nach Adresse oder Sender, oder streame JSON in deine eigenen Tools.

Program devicesGeräte programmieren

Adopt a new device, flash its application from the vendor .knxprod, and write group and association tables. Every write is planned, confirmed and verified.Nimm ein neues Gerät in Betrieb, flashe seine Applikation aus der .knxprod des Herstellers und schreibe Gruppen- und Assoziationstabellen. Jeder Schreibvorgang wird geplant, bestätigt und verifiziert.

Let an LLM helpEin LLM helfen lassen

bussard mcp exposes the model and the bus to Claude or another agent. Writes are off unless you turn them on, and protected group addresses stay out of reach.bussard mcp macht Modell und Bus für Claude oder einen anderen Agenten zugänglich. Schreiben ist aus, bis du es einschaltest, und geschützte Gruppenadressen bleiben außer Reichweite.

Writing to devicesAuf Geräte schreiben

Every device write follows the same six steps.Jeder Schreibvorgang folgt denselben sechs Schritten.

You see what will change before anything is sent, and the previous state is saved so you can go back.Du siehst, was sich ändert, bevor etwas gesendet wird. Der vorherige Zustand wird gesichert, damit du zurück kannst.

  1. ReadLesenFetch the live tables from the device.Die aktuellen Tabellen vom Gerät holen.
  2. DiffVergleichenCompare them to your YAML model.Mit deinem YAML-Modell abgleichen.
  3. ConfirmBestätigenThe plan names the gateway and asks for a yes.Der Plan nennt das Gateway und fragt nach einem Ja.
  4. Back upSichernSave the current tables to disk.Die aktuellen Tabellen auf die Platte schreiben.
  5. WriteSchreibenDownload the new tables to the device.Die neuen Tabellen auf das Gerät laden.
  6. VerifyPrüfenRead back and check every byte.Zurücklesen und jedes Byte vergleichen.

flash writes a whole application image and is the one command that skips the backup. Writes to a gateway that is not on localhost are refused until you pass --allow-remote-gateway.flash schreibt ein komplettes Applikations-Image und ist der einzige Befehl, der die Sicherung überspringt. Schreibvorgänge an ein Gateway, das nicht auf localhost läuft, werden abgelehnt, bis du --allow-remote-gateway übergibst.

Reading the busDen Bus lesen

One telegram, fully decoded.Ein Telegramm, vollständig decodiert.

Raw KNX telegrams carry addresses and bytes. bussard resolves both against your model, so a line in monitor reads like a sentence.Rohe KNX-Telegramme enthalten Adressen und Bytes. bussard löst beides gegen dein Modell auf, sodass sich eine Zeile in monitor wie ein Satz liest.

12:03:44.809time receivedEmpfangszeit
1.1.1sender, individual addressSender, physikalische Adresse
Push Button Hallwaydevice name from devices.yamlGerätename aus devices.yaml
0/0/0group addressGruppenadresse
Hallway Light SwitchGA name from groups.yamlGA-Name aus groups.yaml
= Ondecoded valuedecodierter Wert
(1.001,datapoint type, sets the decoderDatenpunkttyp, bestimmt den Decoder
obj "Rocker 1")com object that sent it, from links.yamlsendendes Kommunikationsobjekt, aus links.yaml
Addresses come from the telegram. Names, datapoint types and com objects come from the three YAML files. A group address missing from the model shows as raw hex until you add it.Adressen kommen aus dem Telegramm. Namen, Datenpunkttypen und Kommunikationsobjekte kommen aus den drei YAML-Dateien. Eine Gruppenadresse, die im Modell fehlt, erscheint als rohes Hex, bis du sie ergänzt.
LLM accessLLM-Zugriff

Three tiers for the MCP server.Drei Stufen für den MCP-Server.

An agent connected over MCP gets exactly the access you start the server with. Nothing an LLM says can raise it.Ein über MCP verbundener Agent bekommt genau den Zugriff, mit dem du den Server startest. Nichts, was ein LLM sagt, kann ihn erweitern.

$ claude mcp add knx -- bussard mcp --dir knx

Home Assistant users get the same model twice: bussard ha-config writes the KNX integration config from the YAML files.Home-Assistant-Nutzer bekommen dasselbe Modell doppelt: bussard ha-config erzeugt die Konfiguration der KNX-Integration aus den YAML-Dateien.

Download

One binary. No installer.Eine Binary. Kein Installer.

Built by GitHub Actions for every release. Each file has a .sha256 checksum next to it. Links always point to the latest release.Von GitHub Actions für jedes Release gebaut. Zu jeder Datei gibt es eine .sha256-Prüfsumme. Die Links zeigen immer auf das neueste Release.

This machineDieser Rechner
macOS
Apple Silicon
Download
bussard-macos-arm64 · sha256
This machineDieser Rechner
macOS
Intel
Download
bussard-macos-x64 · sha256
This machineDieser Rechner
Linux
x86_64
Download
bussard-linux-x64 · sha256
This machineDieser Rechner
Linux
arm64, Raspberry Pi 4 and laterarm64, Raspberry Pi 4 und neuer
Download
bussard-linux-arm64 · sha256
This machineDieser Rechner
Windows
x64
Download
bussard-windows-x64.exe · sha256

Install on macOS and LinuxInstallation auf macOS und Linux

# make it executable and put it on your path# ausführbar machen und in den Pfad legen
chmod +x bussard-macos-arm64
mv bussard-macos-arm64 /usr/local/bin/bussard

# macOS only: the binary is not notarized, allow it once# nur macOS: die Binary ist nicht notarisiert, einmal erlauben
xattr -d com.apple.quarantine /usr/local/bin/bussard

# optional: verify the download# optional: den Download prüfen
shasum -a 256 -c bussard-macos-arm64.sha256

Windows shows a SmartScreen warning for the same reason. Homebrew, winget and a curl | sh installer are not available yet.Windows zeigt aus demselben Grund eine SmartScreen-Warnung. Homebrew, winget und einen curl | sh-Installer gibt es noch nicht.

Or build from sourceOder aus dem Quellcode bauen

# needs Rust 1.85 or newer# braucht Rust 1.85 oder neuer
git clone https://github.com/tmbo/bussard
cd bussard
cargo install --path crates/bussard-cli

You need a KNXnet/IP gateway to talk to a bus. An ETS export and vendor .knxprod files are optional but make the first minutes much nicer.Du brauchst ein KNXnet/IP-Gateway, um mit einem Bus zu sprechen. Ein ETS-Export und .knxprod-Dateien der Hersteller sind optional, machen die ersten Minuten aber deutlich angenehmer.

This is early software that writes to real building hardware. Device programming currently covers System B devices (mask 07B0). Read the safety notes before your first write, and try it on a spare device or the simulator first.Das ist frühe Software, die auf echte Gebäudetechnik schreibt. Geräteprogrammierung deckt derzeit System-B-Geräte (Maske 07B0) ab. Lies die Sicherheitshinweise vor dem ersten Schreiben und probiere es zuerst an einem Ersatzgerät oder im Simulator.

DocumentationDokumentation

Everything from the first command to the wire format.Alles vom ersten Befehl bis zum Protokoll.

Rendered from the Markdown files in the repository, so the docs always match the code.Erzeugt aus den Markdown-Dateien im Repository, deshalb passen die Docs immer zum Code. Sie sind auf Englisch.