loading   

skip to content
loc Münster · DE time --:--:--CET focus enterprise k8s / AI agents

[00] index

Krystian Słowik

słowik · /ˈswɔ·vik/ · Polish for “nightingale”

Support and integrations engineer at n8n, enterprise tier. I get pulled into customer environments where Kubernetes, integrations, and AI pipelines are failing in ways nobody documented, and I build what makes them work: the fix, the custom node, the reusable play.

Root cause over vibes, but the deliverable is a working system in the customer's hands, not a diagnosis. I read the source when the docs lie.

słowik online

Ask the słowik anything.

Trained on my notes, talks and postmortems — it says “don't know” when it wasn't taught the answer.

or press / to type your own
[01]

Now

role

Senior product support engineer (enterprise) at n8n. Self-hosted and cloud deployments across Kubernetes, distributed state, security boundaries, and AI agent pipelines that break in ways nobody documented. I build the fix and the tooling so it does not break the same way twice.

building

Internal tooling at work: MCP servers, Slack automation, CI/CD. Shipped n8n-nodes-plainapi, a community node for the Plain support platform, 34 operations across 8 resources. At home: a scanning console for the cluster, and the słowik at the bottom of this page.

learning

Cybersecurity, part-time studies. And writing down anything I catch myself explaining twice.

[02]

Selected work

01

End-to-end delivery

~20 min → 1.5 s / file

End-to-end delivery of an event-driven platform for gigabyte-scale imaging: content-addressed ingest, a native tiler, a domain-specific detection model, and the operational system on top.

  • Python + C#
  • RabbitMQ
  • computer vision
  • hybrid on-prem

problem

An instrument pipeline took roughly 20 minutes per file before anyone could look at the contents, and results lived outside the system people actually worked in.

action

Built the chain end to end: a versioned, content-addressed ingest buffer, a native tiler integration that cut per-file processing to about 1.5 seconds, a detection service consuming tiles over RabbitMQ with a custom-trained model, results flowing into the operational app for lifecycle, billing and reporting, across on-prem GPU and cloud.

outcome

A 20-minute batch step became near-real-time, landing in the same system where the work gets managed, invoiced and reported.

what i'd do differently

CI/CD and backups first, not last.

02

An n8n node, because the platform was missing one

34 operations, 8 resources, one credential

Plain is a support platform built for technical teams. n8n had no node for it, so I built and shipped one to the community: the full GraphQL surface wrapped in n8n's resource and operation model, with a typed credential and filter support.

  • n8n
  • custom node
  • GraphQL
  • community package

problem

A high-value integration did not exist. Driving Plain from n8n meant hand-writing GraphQL in HTTP Request nodes and re-deriving auth, filters and pagination in every workflow.

action

Built n8n-nodes-plainapi end to end: 34 operations across threads, customers, companies, emails, notes, labels, users and CSAT, full filter and sort support, a typed credential, strict mode, zero runtime deps. Published on npm, installable from Settings, Community Nodes.

outcome

A bespoke need became a reusable node. Per-workflow GraphQL glue collapsed to one install and a credential.

what i'd do differently

Ship the node the first time I hit the gap, not the third.

03

Reusable deployment plays, not one-off fixes

every engagement → a play

Sole author of an enterprise Kubernetes deployment playbook: execution-mode decisions, Helm chart tradeoffs, sizing, security hardening, and a troubleshooting index tied to real incidents. Every engagement codified into a play so the next deployment starts sharper.

  • Helm
  • methodology
  • docs as product

problem

Every enterprise deployment re-derived the same decisions from scratch, and then hit the same incidents, which got re-diagnosed from scratch too.

action

Codified the whole path into one playbook, verified against live deployments, with every troubleshooting entry indexed to incidents that actually happened rather than ones that might.

outcome

Deployments start from the playbook instead of a blank page, and new incidents map to a known chapter more often than not.

what i'd do differently

Started it months later than I should have. The second time you explain something, write the play.

04

Enterprise deployments, debugged at source

root cause > vibes

Enterprise deployments across EKS and AKS, where incidents arrive as symptoms with three plausible causes. TLS handshakes dying somewhere between cert validation, a proxy, a WAF and the network layer; licensing state that expires only in multi-instance mode, months apart.

  • Kubernetes
  • TLS/mTLS
  • Grafana
  • source-level RCA

problem

At enterprise scale the easy explanation is usually wrong, and it's often already been confidently stated by someone else. Multi-month recurrences span accounts with materially different architectures.

action

Run the elimination chain, MTU, SNI, proxy env, DNS, egress paths, and read the product's source (licensing, leader election) instead of trusting the docs. Walk back the pet theory when the evidence kills it, including my own. Send the honest 'no fix, no date' update instead of overpromising.

outcome

Fixes land where the bug actually lives, and customers get evidence their own infra teams can act on.

what i'd do differently

I used to argue against the theory; now I just bring the packet capture.

05

AI pipelines, debugged where they broke

sometimes it's the model

Enterprise agent systems running several model providers at once: tool calls that don't match the schema, context windows that truncate silently mid-chain, retry logic that cascades on provider 429s.

  • LLM pipelines
  • MCP
  • multi-provider
  • production

problem

Agent failures look like model quality problems. Usually they aren't, but proving which layer actually broke takes reading source, not docs.

action

Trace at the failing layer: the tool-call JSON the model generated versus the schema the node expects, contexts that truncate so the agent reasons on incomplete state, provider rate-limit retries that fire wrong and cascade. Verify vendor claims at source level, including correcting confident AI-generated answers before they become commitments.

outcome

Honest diagnoses, model, prompt, or the infrastructure in between, and internal tooling so the next engineer doesn't re-derive the trace.

what i'd do differently

Trust the reproduction, not the reply. Including the AI's.

[03]

Experience

  1. e8d3a1f 2026-01 Senior product support engineer, IC3 enterprise — n8n (remote)— HEAD
  2. 7b1e004 2025-01 Senior product support engineer — Cognigy · AI/LLM/NLU SME on k8s (→ 2025-12)
  3. a3f9c2e 2024-06 Software engineer, fullstack cloud — jaraco GmbH (part-time, → 2026)
  4. c40d18a 2022-08 2nd level technical support — Trusted Shops (→ 2025-01, left with a reference letter and an award)
  5. b95fc27 2022-07 Game operator, plemiona.pl — InnoGames (co-op) · childhood game, other side of the banhammer
  6. 1f9aa75 2015-19 ZST Kolbuszowa — CS technikum, CISCO IT Essentials, olympiad laureate
[04]

Writing

all notes →

[05]

Stack & numbers

operate

  • Kubernetes — EKS, AKS, and kubeadm on bare metal
  • Prometheus · Grafana · Loki · Jaeger
  • Vault · Keycloak · mTLS · SSO (OIDC/SAML)
  • Terraform · Helm · ArgoCD · GitHub Actions

build

  • TypeScript · Python · Kotlin · Go — and PHP where it pays
  • NestJS · FastAPI · Spring Boot · React/Next
  • MCP servers, agents, n8n workflows — do it once, never again
  • Postgres · Redis · RabbitMQ · Kafka
  • YOLO · CVAT — models into systems, not notebooks

homelab

  • 3 bare-metal Ryzen nodes, kubeadm on Ubuntu, GitOps
  • last rolling OS upgrade: three nodes, zero bytes lost
  • where the bad ideas go first
[06]

Ask the słowik

słowik (SWOH-veek) — Polish for nightingale, and my surname. This one is the bird: a wind-up copy trained on my notes, talks and postmortems. It sings them back in my register — and says “don't know” when it wasn't taught the answer. The living Słowik is the one you email; the bird runs on my own backend, and your browser never calls a vendor.

[07]

Contact

Best path is email. I read everything and reply to most of it.