# Gaggimate: a display and a controller for a Gaggia espresso machine

> Gaggimate is a retrofit project that adds a display and custom electronics to a Gaggia espresso machine, giving it boiler temperature monitoring, a brew timer, steam and hot water modes and an automatic shutoff, with a WebSocket API for integrating the machine into a home automation setup. The hardware files live in a separate repository and the docs have moved to the project site.

**jniebuhr/gaggimate** — This project upgrades a Gaggia espresso machine with smart controls to improve your coffee-making experience. By adding a display and custom electronics, you can monitor and control the machine more easily.

- Repository: https://github.com/jniebuhr/gaggimate
- Website: https://gaggimate.eu/
- Stars: 975 · Forks: 290
- Language: C
- License: not declared
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/jniebuhr-gaggimate

## A retrofit, not a replacement

Gaggimate upgrades a Gaggia espresso machine with smart controls, and the way it works is by adding a display and custom electronics so you can monitor and control the machine more easily. That framing matters, because a retrofit is a different proposition from a new machine. The espresso machine stays what it is, with its boiler, its pump and its steam wand, and what changes is that you gain visibility and control over what was previously a set of mechanical switches and an analogue gauge. The project is by a single author, the site is gaggimate.eu, the kits are sold through shop.gaggimate.eu, and there is a Discord community for the project. The repository you are looking at holds the firmware and the documentation pointers, and it is written in C, which is what you would expect for code that drives a microcontroller and has to be deterministic about timing a shot.

## The features, and which of them are safety features

The feature list is short. Temperature control means monitoring the boiler temperature to ensure optimal brewing conditions, and the display shows live temperature updates while the machine runs. A brew timer lets you set a target duration and run the brewing for that specific time, which is the everyday convenience most people will notice. Steam and hot water mode covers controlling the pump and the valve to run the respective task, so the machine's other two functions become selectable rather than mechanical. The user interface is described as a simple, intuitive display to control and monitor the machine, and the readme includes screenshots of a standby screen and a brew screen. The fourth item is the one to read twice. Automatic shutoff if the system becomes unresponsive or overheats is listed as a safety feature, and it is the part of the project that has the most justification: an espresso machine has a heater and a pressurised boiler, and adding electronics to a machine like that without a thermal cutoff would be a poor idea.

## A WebSocket API is where the home automation happens

The most interesting file in the repository for a developer is docs/websocket-api.yaml, an OpenAPI description of the WebSocket API the machine exposes. That is the integration surface. Once the machine speaks a documented WebSocket protocol, it stops being an appliance with a screen and becomes a device on a network that something else can read and control, which is the direction the project topics point, with internet of things, smart home and PID control all listed. The repository also contains an eez-ui directory, a tailwind.config.js and a web directory, which together suggest that the display's user interface is assembled with a component based tool and styled with Tailwind rather than hand drawn on the device, and a schema directory that probably describes the data the firmware exchanges with that interface. If you are planning to put the machine into an automation system, the API description is the document to read first, because it tells you what you can subscribe to and what you can command.

## The firmware side: PlatformIO, a simulator and tests

The build system is described by platformio.ini at the root, which is the configuration file for PlatformIO, the embedded toolchain that compiles, flashes and manages dependencies for microcontroller projects. Around it sit the directories you would expect: src for the firmware sources, lib for local libraries, boards for the board definitions, data for data files, scripts for build helpers, test for the tests and sim for a simulator, and that last one matters more than it sounds. Firmware that drives a heater and a pump is exactly the kind of code you want to be able to run without the hardware attached, and a simulator directory next to the tests suggests the author built one. The C code is formatted with clang-format, there is a.sonarlint directory for the IDE integration, an.nvmrc for the Node version used by the tooling. The continuous integration story is visible in the badges, which point at SonarCloud for the quality gate, the number of violations and the technical debt.

## The hardware and the documentation have moved

The repository is no longer the whole project, and the readme is explicit about where the rest lives. The docs were moved to the project site at gaggimate.eu, and you can find all sourcing and assembly information there, which is the part you actually need if you are building the kit yourself, since sourcing lists and assembly instructions belong with the people doing the work rather than in a code repository. The hardware files were moved to a separate repository, gaggimate/parts, which is the right place for board layouts, panel files and the mechanical design, and it means this repository is about code. There is also a docs directory here, which holds the WebSocket API description, and the readme's images show a rendered PCB, which is a reminder that this is a project with a physical outcome. The separation is a healthy sign, since it means the firmware and the mechanical design can be versioned and licensed independently, and it also means a reader looking for a schematic in this repository will not find one.

## Licence, releases and who should build this

Two things deserve attention before anyone spends an evening with a soldering iron. The first is the licence. This work is licensed under CC BY-NC-SA 4.0, a Creative Commons attribution licence with a non-commercial clause and a share-alike requirement, and the repository itself carries a shield badge for it. Applying a content licence to a project that is mostly firmware, schematics and documentation is a deliberate choice, and it means you can read it, adapt it and share it with attribution as long as your use is not commercial, and that any derivative keeps the same terms. For a hobby retrofit that is exactly right. For a company building a commercial product on the design, it is not, and that is worth knowing before you invest an evening in it. The second is the release cadence. The tags show a nightly release built from the current branch, v1.9.0-135-gb78beee4 with the date in the name, alongside the stable v1.9.0 from late September and v1.8.1 from May, and the last push was on 2026-10-19, so the firmware is moving fast and the nightly build is the honest picture of the current state.

## Conclusion

Gaggimate is the right project if you own a Gaggia machine, find the original controls opaque, and want live temperature readings and a timer without replacing the machine. It is the wrong choice if the electrical work is not something you want to do, since it is a hardware retrofit, and it is the wrong choice for commercial use of the design, because the licence is a non-commercial share-alike one. Before you order a kit, read the assembly documentation on the project site, check that your model is covered, and plan on a second pair of hands for the parts of the job that involve mains electricity.

## FAQ

### What is Gaggimate?

It is a retrofit project that upgrades a Gaggia espresso machine with smart controls, by adding a display and custom electronics so the machine can be monitored and controlled more easily. The firmware is in this repository and the hardware files live in the separate gaggimate/parts repository.

### What does a Gaggimate kit add to an espresso machine?

Boiler temperature monitoring with live readings on the display, a brew timer that runs the brewing for a set duration, steam and hot water modes that control the pump and the valve, a simple user interface, and an automatic shutoff if the system becomes unresponsive or overheats.

### Can I control Gaggimate from my own software?

Yes. The machine exposes a WebSocket API, described in an OpenAPI document at docs/websocket-api.yaml, which is what makes it usable from a home automation system rather than only from its own display.

### How is the Gaggimate firmware built?

With PlatformIO, configured in platformio.ini at the root of the repository. The sources are in src and lib, there is a sim directory for running the firmware without hardware, and a test directory, with clang-format, SonarLint and a Node version file alongside.

### What licence does Gaggimate use?

CC BY-NC-SA 4.0, which allows sharing and adaptation with attribution for non-commercial purposes and requires derivatives to keep the same terms. The sourcing and assembly documentation is published on the project site at gaggimate.eu.

## Sources

- [Issues](https://github.com/jniebuhr/gaggimate/issues)
- [jniebuhr/gaggimate on GitHub](https://github.com/jniebuhr/gaggimate)
- [Project website](https://gaggimate.eu/)
- [README](https://github.com/jniebuhr/gaggimate/blob/master/README.md)
- [Releases](https://github.com/jniebuhr/gaggimate/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/jniebuhr-gaggimate
