Kempten, Allgäu
Deutsch
Marcel Bruckner

Software.

What I build, what I contribute to other projects, and a few excursions from university and game jams.

01Activity

GitHub

9,912

contributions on GitHub in the last year, 4,838 of them in private repositories.

NovDecJanFebMarAprMayJunJulAugSeptOctNov2025-11-16: 02025-11-17: 02025-11-18: 02025-11-19: 02025-11-20: 02025-11-21: 02025-11-22: 02025-11-23: 22025-11-24: 02025-11-25: 62025-11-26: 22025-11-27: 02025-11-28: 02025-11-29: 02025-11-30: 02025-12-01: 02025-12-02: 02025-12-03: 02025-12-04: 02025-12-05: 02025-12-06: 02025-12-07: 12025-12-08: 82025-12-09: 02025-12-10: 02025-12-11: 02025-12-12: 02025-12-13: 02025-12-14: 02025-12-15: 02025-12-16: 02025-12-17: 02025-12-18: 02025-12-19: 02025-12-20: 02025-12-21: 02025-12-22: 02025-12-23: 02025-12-24: 02025-12-25: 02025-12-26: 02025-12-27: 02025-12-28: 02025-12-29: 02025-12-30: 82025-12-31: 02026-01-01: 02026-01-02: 02026-01-03: 02026-01-04: 02026-01-05: 02026-01-06: 02026-01-07: 32026-01-08: 02026-01-09: 02026-01-10: 02026-01-11: 142026-01-12: 02026-01-13: 02026-01-14: 02026-01-15: 02026-01-16: 02026-01-17: 02026-01-18: 02026-01-19: 02026-01-20: 02026-01-21: 62026-01-22: 22026-01-23: 02026-01-24: 02026-01-25: 02026-01-26: 02026-01-27: 02026-01-28: 02026-01-29: 02026-01-30: 02026-01-31: 02026-02-01: 02026-02-02: 02026-02-03: 02026-02-04: 02026-02-05: 02026-02-06: 02026-02-07: 02026-02-08: 02026-02-09: 02026-02-10: 02026-02-11: 02026-02-12: 02026-02-13: 02026-02-14: 02026-02-15: 22026-02-16: 32026-02-17: 02026-02-18: 12026-02-19: 62026-02-20: 02026-02-21: 02026-02-22: 02026-02-23: 42026-02-24: 32026-02-25: 02026-02-26: 22026-02-27: 02026-02-28: 02026-03-01: 02026-03-02: 02026-03-03: 202026-03-04: 02026-03-05: 02026-03-06: 02026-03-07: 02026-03-08: 02026-03-09: 02026-03-10: 02026-03-11: 02026-03-12: 02026-03-13: 02026-03-14: 02026-03-15: 02026-03-16: 02026-03-17: 42026-03-18: 02026-03-19: 02026-03-20: 02026-03-21: 02026-03-22: 02026-03-23: 02026-03-24: 02026-03-25: 02026-03-26: 02026-03-27: 02026-03-28: 02026-03-29: 02026-03-30: 12026-03-31: 02026-04-01: 32026-04-02: 02026-04-03: 02026-04-04: 02026-04-05: 92026-04-06: 02026-04-07: 02026-04-08: 02026-04-09: 02026-04-10: 02026-04-11: 32026-04-12: 132026-04-13: 132026-04-14: 22026-04-15: 392026-04-16: 62026-04-17: 342026-04-18: 02026-04-19: 02026-04-20: 02026-04-21: 02026-04-22: 62026-04-23: 62026-04-24: 612026-04-25: 02026-04-26: 02026-04-27: 42026-04-28: 02026-04-29: 12026-04-30: 02026-05-01: 02026-05-02: 02026-05-03: 02026-05-04: 42026-05-05: 302026-05-06: 132026-05-07: 32026-05-08: 02026-05-09: 02026-05-10: 02026-05-11: 02026-05-12: 02026-05-13: 02026-05-14: 52026-05-15: 02026-05-16: 02026-05-17: 202026-05-18: 152026-05-19: 02026-05-20: 02026-05-21: 02026-05-22: 92026-05-23: 472026-05-24: 02026-05-25: 182026-05-26: 152026-05-27: 02026-05-28: 02026-05-29: 12026-05-30: 112026-05-31: 32026-06-01: 352026-06-02: 122026-06-03: 772026-06-04: 42026-06-05: 1032026-06-06: 132026-06-07: 72026-06-08: 42026-06-09: 162026-06-10: 152026-06-11: 22026-06-12: 272026-06-13: 142026-06-14: 132026-06-15: 32026-06-16: 02026-06-17: 02026-06-18: 02026-06-19: 02026-06-20: 12026-06-21: 02026-06-22: 02026-06-23: 12026-06-24: 02026-06-25: 02026-06-26: 02026-06-27: 02026-06-28: 02026-06-29: 02026-06-30: 22026-07-01: 02026-07-02: 02026-07-03: 02026-07-04: 02026-07-05: 02026-07-06: 252026-07-07: 02026-07-08: 672026-07-09: 62026-07-10: 02026-07-11: 02026-07-12: 02026-07-13: 12026-07-14: 12026-07-15: 62026-07-16: 02026-07-17: 02026-07-18: 02026-07-19: 02026-07-20: 12026-07-21: 12026-07-22: 32026-07-23: 202026-07-24: 12026-07-25: 02026-07-26: 02026-07-27: 182026-07-28: 382026-07-29: 152026-07-30: 82026-07-31: 252026-08-01: 22026-08-02: 02026-08-03: 02026-08-04: 02026-08-05: 02026-08-06: 42026-08-07: 402026-08-08: 142026-08-09: 102026-08-10: 102026-08-11: 762026-08-12: 02026-08-13: 02026-08-14: 42026-08-15: 22026-08-16: 02026-08-17: 02026-08-18: 22026-08-19: 02026-08-20: 02026-08-21: 122026-08-22: 882026-08-23: 652026-08-24: 02026-08-25: 482026-08-26: 132026-08-27: 522026-08-28: 792026-08-29: 02026-08-30: 02026-08-31: 12026-09-01: 272026-09-02: 112026-09-03: 192026-09-04: 672026-09-05: 122026-09-06: 02026-09-07: 362026-09-08: 712026-09-09: 322026-09-10: 622026-09-11: 952026-09-12: 572026-09-13: 892026-09-14: 792026-09-15: 872026-09-16: 1132026-09-17: 1212026-09-18: 402026-09-19: 132026-09-20: 22026-09-21: 262026-09-22: 542026-09-23: 632026-09-24: 1202026-09-25: 742026-09-26: 522026-09-27: 842026-09-28: 1422026-09-29: 762026-09-30: 1062026-10-01: 1712026-10-02: 2282026-10-03: 862026-10-04: 1912026-10-05: 492026-10-06: 162026-10-07: 252026-10-08: 512026-10-09: 362026-10-10: 1482026-10-11: 912026-10-12: 392026-10-13: 672026-10-14: 1792026-10-15: 892026-10-16: 1032026-10-17: 1912026-10-18: 1482026-10-19: 972026-10-20: 3072026-10-21: 2202026-10-22: 812026-10-23: 1412026-10-24: 932026-10-25: 3052026-10-26: 2932026-10-27: 2532026-10-28: 2292026-10-29: 1442026-10-30: 3432026-10-31: 1322026-11-01: 1232026-11-02: 1892026-11-03: 2192026-11-04: 2622026-11-05: 952026-11-06: 392026-11-07: 02026-11-08: 02026-11-09: 62026-11-10: 1812026-11-11: 662026-11-12: 2332026-11-13: 2822026-11-14: 2372026-11-15: 5
LessMore
Monthly totals as a table
MonthContributions
November 202510
December 202517
January 202625
February 202621
March 202625
April 2026200
May 2026194
June 2026349
July 2026236
August 2026522
September 20261,830
October 20264,546
November 20261,937
Commits
3,442
Pull requests
976
Issues
598
Public repositories
113

Recently worked on

02Engineering conventions

How I build software with AI agents: written rules for architecture, code and repository setup, which a Claude Code plugin brings into every session, so agents work to the same standards I do. It is the same question I work on as a software quality consultant: how a team makes quality a shared goal, now for a team that includes agents.

engineering-conventions

My conventions for architecture, code, working with Claude, repository setup and stacks, as a website and as a Claude Code plugin that brings them into every session: agents read the pages that apply before they design, build or review, and can audit a repository against every convention.

Claude Code

claude-marketplace

My harness for Claude Code: a curated plugin marketplace with the plugins I use daily and my own, the conventions among them.

Claude Code

03Software

Everything can be self-hosted, nearly all of it is open source. Some of it I also run for you: sign up and go.

notefeed Ready to useFree, subscription for more

An inbox for Markdown notes: post via HTTP, web UI or client, read as RSS.

App · MCP server

Gamepanion Ready to useFree, subscription for more

A spoiler-free companion for the games you play: tell Claude about quests, build and items while you play, and it knows where you were next time.

App · MCP server

Gesetze für KI Ready to use

A public MCP server with current German federal and state law, so AI assistants look laws up instead of quoting from memory.

MCP server

noticebox

An inbox for the forms on static pages: every submission with a state, a reason and an audit trail, and usable by Claude over MCP.

App · MCP server

passageway Free for private use, licence for companies

Searches wiki, notes and documentation at once and gives Claude, over MCP, exactly the passages that answer a question, each with its source.

MCP server

gassi

A small dog diary for one household: walks, food, pee and poop.

App

trilium-recall

Claude remembers what you wrote in Trilium: a container with keyword and meaning search, as an MCP tool and as a prompt hook for Claude Code.

Trilium · MCP server

trilium-llm-wiki

Claude Code plugin that builds and maintains an LLM wiki in Trilium, after Karpathy's pattern: schema, templates, graph, review queue and a write lock.

Trilium · Claude Code

trilium-mcp-proxy

OAuth login for Trilium's built-in MCP server: connect any MCP client by URL and sign in with your Trilium password.

Trilium · MCP server

trilium-plugin

Claude Code plugin for Trilium: skills for notes, attributes, templates and journal, on Trilium's built-in MCP server.

Trilium · Claude Code

karakeep-trilium-sync

Copies tagged Karakeep bookmarks, with their article text, into Trilium as notes, as sources for my LLM wiki.

Trilium

paperless-ngx-plugin

Claude Code plugin for Paperless-ngx: skills for inbox clean-up, duplicates, encrypted PDFs, search and metadata, on the Paperless MCP server.

Paperless-ngx · Claude Code

invoiceninja-mcp

MCP server for the Invoice Ninja API with around 377 tools, as a container sidecar.

Invoice Ninja · MCP server

invoiceninja-plugin

Claude Code plugin for Invoice Ninja: skills for clients, invoices, quotes, payments and reports, on the invoiceninja-mcp server.

Invoice Ninja · Claude Code

mcp-login-oauth

OAuth 2.1 browser login for FastMCP servers whose login is a form checked by the service behind them.

MCP server · Library

teamscale-mcp

MCP server that exposes the Teamscale REST API as tools, as a container sidecar that passes each client's own credentials through.

MCP server

github-runner

Self-hosted GitHub Actions runners with isolated Docker-in-Docker per runner.

Infrastructure

self-hosted-runner-selector

Picks a self-hosted runner when one is available, otherwise GitHub-hosted.

Infrastructure · Library

creem-grafana-bridge

Revenue, cashflow, forecast and payouts of Creem stores as JSON series for Grafana.

Infrastructure

Spanwire

A service that lets AI agents on different machines send each other messages.

In progress

TraureiseComing soon

An app that lets couples create and share their own wedding websites.

In progress

04Open source contributions

When a tool I use every day lacks something or has a bug, I report it to the project or send the fix. On GitHub under the account Marceltov.

mailflow Open

fix(imap): skip \Noselect folders in the backfill walk

mailflow Open

Backfill tries to open \Noselect parent folders (Gmail nested labels → [NONEXISTENT] Unknown Mailbox)

mailflow Open

Folder-status pass opens a fresh IMAP login per account every minute (~22k logins/day with 9 accounts)

Wishlist: all data through its own API Proposal, open

After the public API was declined, a second proposal that adds no upkeep: the app reads and writes its data only through its own /api, and other clients use exactly that. Rules on who may see what then live in one place instead of being spread over pages, forms and components.

Trilium Notes Merged

Notes written through the built-in MCP server or the chat now get their links recorded. Before, they were missing from backlinks and the note map.

Wishlist: public API Proposal, declined

A proposal for a small interface with personal keys, so other self-hosted apps can read wish lists. The maintainer decided against it because of the upkeep.

Trilium: sign-in with OAuth Proposal, open

A proposal that clients connect to the built-in MCP server with just its address, with no plain-text token in their configuration.

Invoice Ninja: CI tests the wrong code Fixed

A pull request's tests ran against the development branch instead of the change itself. Reported, and fixed by the project.

Trilium: partial edits for notes Proposal, open

A proposal for four improvements to the built-in MCP server: partial edits of text notes, a version check on writes, links when reading and match snippets in search.

AutoKuma: a configurable wait on connect Open

With many AutoKuma instances, every Uptime Kuma restart became a reconnect storm: no instance got its state within the fixed 9-second wait, all of them reconnected, and Kuma ran no monitor check for over two and a half hours. The wait is now configurable; the default stays as it was.

Invoice Ninja Merged

A contract test that checks the whole documented API against its OpenAPI description, and the fix for the differences it found.

giftmanager: data survives a restart Merged

Every container restart lost all gift ideas and users. The data now lives in its own directory that can be mounted. The maintainer took the code into the Docker version.

HortusFox: the app starts before its database Fixed

With Docker Compose the app started before MariaDB was ready and showed only a database error at sign-in. Reported with the cause; the app now waits for the database.

SCM-Manager: missing default branch Fixed

A new Git repository created without initialising it showed a default branch in the UI but had none, so cloning with JGit failed. Reported, and fixed in version 2.46.

Patterns in Software Engineering: summary Merged

Updated the shared summary of the TUM lecture for the winter 2017/18 exam: taxonomies, REST and object-oriented modelling.

05More

Research & studies

HyperCRL

Extension of “Continual Model-Based Reinforcement Learning with Hypernetworks”.

bark-ml

Fork of the BARK ML simulator for autonomous driving, with substantial contributions of my own.

Game jams

Think-fast-Punch-hard

Entry for the ARD Game Jam 2026 (Unity/C#) with a live Wikipedia quiz.

More projects on GitHub