[{"data":1,"prerenderedAt":198},["ShallowReactive",2],{"content-blog":3},{"items":4},[5,68,134],{"id":6,"collection":7,"slug":8,"status":9,"locale_primary":10,"data":11,"sort_date":66,"published_at":67,"created_at":67,"updated_at":67},9,"blog","ship-ai-agents-to-production","published","en",{"body":12,"date":56,"grad":57,"slug":8,"title":58,"excerpt":61,"readMin":64,"category":65},[13,17,21,24,27,30,33,36,39,42,45,48,53],{"de":14,"en":15,"type":16},"Fast jedes Team kann ein LLM an ein Tool hängen und in einem Nachmittag einen Wow-Moment erzeugen. Dann stirbt es — weil Produktion Dinge verlangt, die eine Demo nie testet: Gedächtnis, Leitplanken, Kosten, Beobachtbarkeit und eine saubere Übergabe. Der Unterschied liegt nicht an der Modellqualität, sondern an Engineering-Disziplin.","Almost any team can wire an LLM to a tool and get a wow moment in an afternoon. Then it dies — because production tests for things a demo never does: memory, guardrails, cost, observability, and a clean hand-off. The gap between the two is not model quality. It is engineering discipline.","p",{"de":18,"en":19,"type":20},"1. Gib dem Agenten ein Gedächtnis, dem er trauen kann","1. Give the agent a memory it can trust","h2",{"de":22,"en":23,"type":16},"Ein Agent ohne gemeinsamen Zustand leitet bei jedem Aufruf den Kontext neu her und widerspricht sich über Sessions hinweg. Ich betreibe Org-Memory auf Postgres + pgvector mit Hybrid-Suche — Vektor, BM25 und Trigram, fusioniert per Reciprocal Rank Fusion. Die Retrieval-Qualität ist der größte Hebel dafür, ob ein Agent kompetent wirkt oder halluziniert.","An agent with no shared state re-derives context on every call and contradicts itself across sessions. I run org memory on Postgres + pgvector with hybrid search — vector, BM25 and trigram fused with Reciprocal Rank Fusion. Retrieval quality is the single biggest lever on whether an agent feels competent or hallucinates.",{"de":25,"en":26,"type":20},"2. Setze echte Leitplanken um Aktionen","2. Put real guardrails around actions",{"de":28,"en":29,"type":16},"Ein Demo-Agent, der nur chatten kann, ist harmlos. Ein Produktions-Agent, der E-Mails sendet, ins CRM schreibt oder Geld bewegt, braucht gescopte Tools, explizite Freigabe-Gates für alles Unumkehrbare und eine harte Trennung zwischen Lesen und Schreiben. Das Modell schlägt vor; das System entscheidet, was es wirklich tun darf.","A demo agent that can only chat is safe. A production agent that can send email, write to a CRM or move money needs scoped tools, explicit approval gates for anything irreversible, and a hard line between read and write. The model proposes; the system decides what it is allowed to actually do.",{"de":31,"en":32,"type":20},"3. Kontrolliere die Kosten, bevor sie dich kontrollieren","3. Control cost before it controls you",{"de":34,"en":35,"type":16},"Token-Verbrauch ist ein Produktions-SLO, keine Überraschung auf der Rechnung. Ich leite jeden LLM-Aufruf durch ein einziges Gateway, das Budgets pro Aufgabe durchsetzt, das Modell nach Aufgabentyp wählt und Limits deckelt — damit keine außer Kontrolle geratene Schleife still ein Monatsbudget verbrennt.","Token spend is a production SLO, not a surprise on the invoice. I route every LLM call through a single gateway that enforces per-task budgets, picks the model by task kind, and caps limits — so one runaway loop cannot quietly burn a month of credits.",{"de":37,"en":38,"type":20},"4. Mach es beobachtbar","4. Make it observable",{"de":40,"en":41,"type":16},"Wenn du nicht sehen kannst, was ein Agent getan hat und warum, kannst du ihm nicht vertrauen — und ihn schon gar nicht verbessern. Jeder Lauf hinterlässt eine Spur: die Eingaben, den abgerufenen Kontext, die aufgerufenen Tools, die verbrauchten Tokens. Vertrauen kommt von Monitoring, nicht vom Bauchgefühl.","If you cannot see what an agent did and why, you cannot trust it — and you certainly cannot improve it. Every run leaves a trace: the inputs, the retrieved context, the tools called, the tokens spent. Trust comes from monitoring, not vibes.",{"de":43,"en":44,"type":20},"5. Baue für die Übergabe, nicht fürs Lock-in","5. Design for hand-off, not lock-in",{"de":46,"en":47,"type":16},"Das Ziel ist ein System, das der Eigentümer ohne mich betreibt. Das heißt Dokumentation, eine saubere Übergabe und sicherzustellen, dass kein einzelner Mensch zum Ausfallpunkt wird. Ein Agent, den man rund um die Uhr betreuen muss, ist keine Automatisierung — es ist ein zweiter Job.","The goal is a system the owner runs without me. That means documentation, a clean hand-over, and making sure no single human is a point of failure. An agent you have to babysit is not automation — it is a second job.",{"de":49,"en":50,"cite":51,"type":52},"Beeindruckende KI läuft einfach weiter. Nicht weil sie im Pitch gut aussieht, sondern weil sie jeden einzelnen Tag still die Arbeit macht.","Impressive AI keeps running. Not because it looks good in a pitch, but because it quietly does the work every single day.","Alex Grygoriev","quote",{"de":54,"en":55,"type":16},"Ich habe 27 solcher Agenten und 32 Microservices solo gebaut, hinter zwei MCP-Servern. Nichts davon ist Magie — es ist die unspektakuläre Disziplin, KI wie Software zu behandeln, die in Produktion laufen muss. Wenn Sie das für Ihr Team wollen, sprechen wir.","I built 27 of these agents and 32 microservices solo, behind two MCP servers. None of it is magic — it is the boring discipline of treating AI like software that has to run in production. If you want that for your team, let us talk.","2026-06-05","from-[#0c1a17] via-[#11342b] to-[#050c0b]",{"de":59,"en":60},"Warum die meiste KI nie die Demo verlässt — und wie man Agenten in Produktion bringt","Why most AI never leaves the demo — and how to ship agents to production",{"de":62,"en":63},"Eine schicke Agenten-Demo baut man an einem Nachmittag. Ein Agent, der jeden Tag läuft — überwacht, DSGVO-sicher und kostenkontrolliert — ist eine andere Disziplin. Das ist der echte Unterschied.","A flashy agent demo takes an afternoon. An agent that runs every day — monitored, GDPR-safe and cost-controlled — is a different discipline. Here is what actually separates the two.",6,"agentic-ai","2026-06-05T00:00:00.000Z","2026-06-08T10:34:38.008Z",{"id":69,"collection":7,"slug":70,"status":9,"locale_primary":10,"data":71,"sort_date":132,"published_at":133,"created_at":133,"updated_at":133},10,"one-mcp-server-shared-brain",{"body":72,"date":122,"grad":123,"slug":70,"title":124,"excerpt":127,"readMin":130,"category":131},[73,76,79,82,85,88,91,94,97,113,116,119],{"de":74,"en":75,"type":16},"Sobald man mehr als ein paar Agenten hat, skaliert \"jeder ruft die APIs auf, die er braucht\" nicht mehr. Man dupliziert Auth, Retries und Schemata; eine Änderung an einer Stelle bricht still fünf andere. Das Model Context Protocol (MCP) existiert, um eine saubere Naht zwischen Agenten und den Systemen zu setzen, auf denen sie handeln.","As soon as you have more than a couple of agents, \"let each one call the APIs it needs\" stops scaling. You duplicate auth, retries and schemas; a change in one place silently breaks five others. The Model Context Protocol (MCP) exists to put a clean seam between agents and the systems they act on.",{"de":77,"en":78,"type":20},"Ein einziger Zugang mit gescoptem Zugriff","A single entry point with scoped access",{"de":80,"en":81,"type":16},"Ich betreibe einen selbst gehosteten MCP-Server vor dem Org-Memory. Agenten berühren Postgres oder Drittanbieter-APIs nie direkt — sie sprechen mit MCP. Der Zugriff ist in fünf Scopes geteilt, sodass ein Marketing-Agent schlicht nicht an Finanz-Tools kommt. Eine Tür mit Türsteher statt 27 offener Fenster.","I run one self-hosted MCP server in front of org memory. Agents never touch Postgres or third-party APIs directly — they talk to MCP. Access is split into five scopes, so a marketing agent simply cannot reach finance tools. One door, with a bouncer, instead of 27 unlocked windows.",{"de":83,"en":84,"type":20},"Hybrid-Suche ist das eigentliche Produkt","Hybrid search is the actual product",{"de":86,"en":87,"type":16},"Unter MCP liegt Postgres 16 + pgvector. Reine Vektor-Suche verfehlt exakte Strings; reine Keyword-Suche verfehlt Bedeutung. Ich fusioniere Vektor, BM25 und Trigram per Reciprocal Rank Fusion, sodass die Suche nach einer exakten Teilenummer und die nach einem vagen Konzept beide treffen. Dieses hybride Retrieval lässt die Tools scharf statt schwammig wirken.","Under MCP sits Postgres 16 + pgvector. Pure vector search misses exact strings; pure keyword search misses meaning. I fuse vector, BM25 and trigram with Reciprocal Rank Fusion, so a query for an exact part number and a query for a vague concept both land. That hybrid retrieval is what makes the tools feel sharp instead of fuzzy.",{"de":89,"en":90,"type":20},"Tools sind Verträge, keine Endpunkte","Tools are contracts, not endpoints",{"de":92,"en":93,"type":16},"Jedes MCP-Tool hat ein typisiertes Schema und genau eine Verantwortung. Das Modell bekommt einen klaren Vertrag, über den es schließen kann; ich bekomme eine Stelle für Validierung, Logging und Limits. Ändert sich ein Tool, erhalten alle Agenten das neue Verhalten gleichzeitig — kein Copy-Paste-Drift über 27 Codepfade.","Each MCP tool has a typed schema and a single responsibility. The model gets a clear contract it can reason about; I get one place to add validation, logging and limits. When a tool changes, every agent gets the new behaviour at once — no copy-paste drift across 27 codepaths.",{"de":95,"en":96,"type":20},"Warum MCP statt eines Haufens Function-Calling-Kleber","Why MCP over a pile of function-calling glue",{"de":98,"en":98,"type":99,"items":100},"","ul",[101,104,107,110],{"de":102,"en":103},"Eine Auth- und Audit-Fläche statt N separater.","One auth and audit surface instead of N separate ones.",{"de":105,"en":106},"Tools sind über Agenten und LLM-Anbieter (Claude, GPT) hinweg hinter einem Gateway wiederverwendbar.","Tools are reusable across agents and across LLM vendors (Claude, GPT) behind one gateway.",{"de":108,"en":109},"Ein neuer Agent heißt Scopes wählen, nicht Integrationen neu bauen.","A new agent means picking scopes, not rebuilding integrations.",{"de":111,"en":112},"Schemata leben in einem Repo, versioniert und reviewbar.","Schemas live in one repo, versioned and reviewable.",{"de":114,"en":115,"type":20},"Was ich einem Team raten würde, das heute startet","What I would tell a team starting today",{"de":117,"en":118,"type":16},"Lass nicht jeden Agenten eigene Tentakel wachsen. Setz von Tag eins eine Protokoll-Schicht zwischen Agenten und Daten, selbst bei nur zwei Agenten. Die Naht früh einzuziehen kostet einen Nachmittag; sie bei 27 Agenten zu entwirren kostet ein Rewrite.","Do not let every agent grow its own tentacles. Put a protocol between your agents and your data on day one, even with just two agents. Adding the seam early costs an afternoon; untangling it at 27 agents costs a rewrite.",{"de":120,"en":121,"cite":51,"type":52},"Die Integration, die du nicht schreibst, ist die, die du nie debuggen musst.","The integration you do not write is the one you never have to debug.","2026-05-30","from-[#13212e] via-[#1d3a52] to-[#050c0b]",{"de":125,"en":126},"Ein MCP-Server, fünf Scopes: wie sich 27 Agenten ein Gehirn teilen","One MCP server, five scopes: how 27 agents share a single brain",{"de":128,"en":129},"Wenn jeder Agent seine eigenen Tools verdrahtet, landet man bei 27 inkompatiblen Integrationen. Das Model Context Protocol ließ mich das auf einen gut gesicherten Zugang reduzieren. Hier ist die Architektur.","Letting every agent wire its own bespoke tools is how you end up with 27 incompatible integrations. The Model Context Protocol let me collapse that into one well-guarded entry point. Here is the architecture.",7,"mcp-tooling","2026-05-30T00:00:00.000Z","2026-06-08T10:34:38.047Z",{"id":135,"collection":7,"slug":136,"status":9,"locale_primary":10,"data":137,"sort_date":196,"published_at":197,"created_at":197,"updated_at":197},11,"gdpr-compliant-ai-german-companies",{"body":138,"date":186,"grad":187,"slug":136,"title":188,"excerpt":191,"readMin":194,"category":195},[139,142,145,148,151,154,157,160,163,177,180,183],{"de":140,"en":141,"type":16},"Das erste Gespräch mit einem deutschen Unternehmen dreht sich selten um Modellqualität. Es geht um Auftragsverarbeitung, Datenresidenz und darum, was mit einem Kundendatensatz passiert, sobald er ein Modell berührt. Beantworte das falsch, und das Projekt startet nie — egal wie gut die KI ist.","The first conversation with a German company is rarely about model quality. It is about Auftragsverarbeitung, data residency and what happens to a customer record the moment it touches a model. Get those answers wrong and the project never starts — no matter how good the AI is.",{"de":143,"en":144,"type":20},"Entscheide, was deine Kontrolle nie verlässt","Decide what never leaves your control",{"de":146,"en":147,"type":16},"Klassifiziere Daten, bevor sie je ein LLM erreichen. Manche Felder gehören redigiert oder pseudonymisiert, bevor überhaupt ein Prompt gebaut wird; manche Workloads gehören auf selbst gehostete Modelle. Die Standardfrage für jedes Feld ist simpel: Muss das wirklich das Haus verlassen?","Classify data before it ever reaches an LLM. Some fields should be redacted or pseudonymised before a prompt is even built; some workloads belong on models you host yourself. The default question for every field is simple: does this actually need to leave the building?",{"de":149,"en":150,"type":20},"Cookielos als Standard","Cookieless by default",{"de":152,"en":153,"type":16},"Im Frontend liefere ich Analytics, die ohne Cookies funktionieren (selbst gehostetes Matomo mit disableCookies), und lade Drittanbieter-Embeds — Kalender, Karten — erst auf Klick, das 2-Klick- \u002F Click-to-load-Muster. Es braucht keine Consent-Wand, weil nichts trackt, bis der Besucher es anfordert.","On the front end I ship analytics that work without cookies (self-hosted Matomo with disableCookies) and load third-party embeds — calendars, maps — only on click, the 2-click \u002F click-to-load pattern. No consent wall is needed because nothing tracks until the visitor asks for it.",{"de":155,"en":156,"type":20},"Einwilligung dort, wo sie wirklich zählt","Consent where it actually matters",{"de":158,"en":159,"type":16},"Eine verpflichtende, explizite Einwilligungs-Checkbox sichert jede Formularabgabe und verlinkt auf eine Datenschutzerklärung, die die echte Verarbeitung beschreibt — kein von einer anderen Seite kopierter Textbaustein. Einwilligung muss spezifisch, informiert und nachweisbar sein.","A required, explicit consent checkbox gates every form submission and links to a Datenschutzerklärung that describes the real processing — not boilerplate copied from another site. Consent should be specific, informed and provable.",{"de":161,"en":162,"type":20},"Baue die Nachweiskette ein","Build the paper trail in",{"de":98,"en":98,"type":99,"items":164},[165,168,171,174],{"de":166,"en":167},"Ein echtes Impressum und eine Datenschutzerklärung, die zu dem passen, was das System tatsächlich tut.","A real Impressum and Datenschutz that match what the system actually does.",{"de":169,"en":170},"Auftragsverarbeitungsverträge mit jedem Sub-Auftragsverarbeiter, auf den du dich stützt.","Auftragsverarbeitungsverträge with every sub-processor you rely on.",{"de":172,"en":173},"Datenexport und -löschung als Features, nicht als Gefälligkeit.","Data export and deletion as features, not favours.",{"de":175,"en":176},"Logs, mit denen du beantworten kannst: \"Was hat die KI mit diesem Datensatz getan?\"","Logs that let you answer \"what did the AI do with this record?\"",{"de":178,"en":179,"type":20},"Datenschutz ist Design-Input, kein Nachgedanke","Privacy is a design input, not an afterthought",{"de":181,"en":182,"type":16},"Compliance nachträglich auf ein System zu schrauben, das Daten bereits überallhin schickt, ist schmerzhaft und teuer. Sie von der ersten Skizze an mitzudenken kostet fast nichts — und ist der Unterschied zwischen einem deutschen Unternehmen, das unterschreibt, und einem, das geht.","Retro-fitting compliance onto a system that already ships data everywhere is painful and expensive. Designing for it from the first sketch costs almost nothing — and it is the difference between a German company signing and walking away.",{"de":184,"en":185,"cite":51,"type":52},"Für einen deutschen Kunden ist \"wohin gehen die Daten?\" keine juristische Fußnote. Es ist die erste Frage — und die richtige Antwort gewinnt den Auftrag.","For a German client, \"where does the data go?\" is not a legal footnote. It is the first question — and the right answer wins the deal.","2026-05-22","from-[#1a1633] via-[#2a2350] to-[#050c0b]",{"de":189,"en":190},"DSGVO-konforme KI für deutsche Unternehmen: eine praktische Checkliste","GDPR-compliant AI for German companies: a practical checklist",{"de":192,"en":193},"Deutsche Kunden fragen nicht \"kann es GPT nutzen?\". Sie fragen, wohin die Daten gehen, wer sie sieht und ob man das nachweisen kann. Datenschutz ist kein Feature zum Anschrauben — er ist Design-Input. So baue ich ihn ein.","German clients do not ask \"can it use GPT?\" They ask where the data goes, who can see it, and whether you can prove it. Privacy is not a feature you bolt on — it is a design input. Here is how I build it in.",5,"gdpr","2026-05-22T00:00:00.000Z","2026-06-08T10:34:38.083Z",1780916594107]