[{"data":1,"prerenderedAt":2197},["ShallowReactive",2],{"/de-de/blog/give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli":3,"navigation-de-de":1414,"banner-de-de":1846,"footer-de-de":1854,"blog-post-authors-de-de-Kai Armstrong":2095,"blog-related-posts-de-de-give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli":2110,"blog-promotions-de-de":2135,"next-steps-de-de":2187},{"id":4,"title":5,"authors":6,"body":8,"category":1393,"date":1394,"description":1395,"extension":1396,"externalUrl":1397,"faq":1397,"featured":555,"heroImage":1398,"meta":1399,"navigation":555,"path":1400,"seo":1401,"slug":1406,"stem":1407,"tags":1408,"template":1412,"updatedDate":1397,"__hash__":1413},"blogPosts/de-de/blog/give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli.md","glab CLI: Strukturierter GitLab-Zugriff für KI-Agenten",[7],"Kai Armstrong",{"type":9,"value":10,"toc":1381},"minimark",[11,20,26,32,38,43,56,59,62,93,111,124,131,135,141,146,148,179,182,508,515,519,522,602,748,751,755,761,764,772,778,871,874,883,958,964,968,1006,1012,1016,1026,1032,1035,1117,1123,1130,1187,1295,1298,1302,1308,1322,1328,1334,1350,1371,1377],[12,13,14,15,19],"p",{},"Wenn Teams GitLab Duo, Claude, Cursor und andere KI-Assistenten einsetzen,\nläuft ein wachsender Teil des Entwicklungs-Workflows über einen KI-Agenten,\nder im eigenen Auftrag handelt – Issues liest, Merge Requests prüft, Pipelines\nausführt und dabei hilft, schneller zu liefern. Die meisten Entwickler(innen) nutzen\n",[16,17,18],"code",{},"glab"," bereits vom Terminal aus, um mit GitLab zu interagieren. Beides zu\nkombinieren ist der naheliegende nächste Schritt.",[12,21,22,23,25],{},"Das Problem: Ohne die richtigen Werkzeuge rät ein KI-Agent im Wesentlichen,\nwenn es um GitLab-Projekte geht. Er könnte die Details eines Issues\nhalluzinieren, den er nie gesehen hat, einen Merge Request auf Basis veralteter\nTrainingsdaten zusammenfassen statt anhand seines tatsächlichen Zustands – oder\nverlangen, dass Kontext manuell aus einem Browser-Tab kopiert und in ein\nChat-Fenster eingefügt wird, bevor überhaupt begonnen werden kann. Jede dieser\nUmgehungslösungen ist Reibung: Sie verlangsamt die Arbeit, eröffnet\nFehlermöglichkeiten und setzt eine harte Obergrenze dafür, was der Agent\ntatsächlich leisten kann. Das GitLab CLI (",[16,24,18],{},") ändert das, indem es Agenten\neine direkte, zuverlässige Schnittstelle zu Projekten gibt.",[12,27,28,29,31],{},"Mit ",[16,30,18],{}," ruft der Agent das Benötigte direkt von GitLab ab, handelt darauf\nund meldet das Ergebnis zurück – sodass weniger Zeit damit verbracht wird,\nInformationen weiterzugeben, und mehr Zeit für die eigentliche Arbeit bleibt.",[12,33,34,35,37],{},"In diesem Tutorial wird gezeigt, wie ",[16,36,18],{}," KI-Agenten strukturierten,\nzuverlässigen Zugriff auf GitLab-Projekte ermöglicht – und wie das einen\nschnelleren, leistungsfähigeren Entwicklungs-Workflow freischaltet.",[39,40,42],"h2",{"id":41},"ki-agent-über-mcp-mit-gitlab-verbinden","KI-Agent über MCP mit GitLab verbinden",[12,44,45,46,48,49,55],{},"Der direkteste Weg, KI-Workflows deutlich leistungsfähiger zu machen, besteht\ndarin, dem KI-Agenten nativen Zugriff auf ",[16,47,18],{}," über das Model Context\nProtocol (",[50,51,54],"a",{"href":52,"rel":53},"https://about.gitlab.com/topics/ai/model-context-protocol/",[],"MCP",")\nzu geben.",[12,57,58],{},"MCP ist ein offener Standard, der KI-Werkzeugen ermöglicht, externe Fähigkeiten\nzur Laufzeit zu entdecken und zu nutzen. Nach der Verbindung kann der\nKI-Assistent Issues lesen, Merge Requests kommentieren, Pipeline-Status prüfen\nund zurück in GitLab schreiben – ohne etwas aus der UI zu kopieren oder auch\nnur einen einzigen API-Aufruf selbst zu schreiben.",[12,60,61],{},"Einstieg mit:",[63,64,69],"pre",{"className":65,"code":66,"language":67,"meta":68,"style":68},"language-shell shiki shiki-themes github-light","# MCP-Server von glab starten\nglab mcp serve\n","shell","",[16,70,71,80],{"__ignoreMap":68},[72,73,76],"span",{"class":74,"line":75},"line",1,[72,77,79],{"class":78},"sAwPA","# MCP-Server von glab starten\n",[72,81,83,86,90],{"class":74,"line":82},2,[72,84,18],{"class":85},"s7eDp",[72,87,89],{"class":88},"sYBdl"," mcp",[72,91,92],{"class":88}," serve\n",[12,94,95,96,100,101,104,105,110],{},"Sobald der MCP-Client konfiguriert ist, kann die KI Fragen wie ",[97,98,99],"em",{},"„Was ist der\nStatus meiner offenen MRs?\""," oder ",[97,102,103],{},"„Gibt es fehlgeschlagene Pipelines auf\nmain?\""," beantworten, indem sie GitLab direkt abfragt – nicht durch Scraping der\nWeb-UI, nicht durch veraltete Trainingsdaten. Die\n",[50,106,109],{"href":107,"rel":108},"https://docs.gitlab.com/cli/",[],"vollständige Setup-Dokumentation"," enthält\nKonfigurationsschritte für Claude Code, Cursor und andere Editoren.",[12,112,113,114,116,117,120,121,123],{},"Ein wichtiges Detail: ",[16,115,18],{}," fügt automatisch ",[16,118,119],{},"--output json"," hinzu, wenn es\nüber MCP aufgerufen wird – für jeden Befehl, der das unterstützt. Der Agent\nerhält saubere, strukturierte Daten, ohne dass über Ausgabeformate nachgedacht\nwerden muss. Und da ",[16,122,18],{}," das offizielle MCP SDK verwendet, bleibt es\nkompatibel, wenn sich das Protokoll weiterentwickelt.",[12,125,126,127,130],{},"Wir haben bewusst entschieden, ",[97,128,129],{},"welche"," Befehle über MCP zugänglich sind.\nBefehle, die interaktive Terminalausgabe erfordern, sind absichtlich\nausgeschlossen – der Agent bleibt nie in einem Wartezustand für Eingaben, die\nnie kommen. Was zugänglich ist, funktioniert zuverlässig im Agenten-Kontext.",[39,132,134],{"id":133},"ki-am-code-review-beteiligen","KI am Code-Review beteiligen",[12,136,137,138,140],{},"Die meisten Entwickler(innen) haben einen Rückstand an MRs, die auf Review warten.\nDas ist einer der zeitintensivsten Teile der Arbeit – und einer der besten\nAnsatzpunkte für KI. Mit ",[16,139,18],{}," beobachtet der Agent die Review-Queue nicht\nnur, sondern arbeitet sie gemeinsam durch.",[142,143,145],"h3",{"id":144},"genau-sehen-was-noch-offen-ist","Genau sehen, was noch offen ist",[12,147,61],{},[63,149,151],{"className":65,"code":150,"language":67,"meta":68,"style":68},"glab mr view 2677 --comments --unresolved --output json\n",[16,152,153],{"__ignoreMap":68},[72,154,155,157,160,163,167,170,173,176],{"class":74,"line":75},[72,156,18],{"class":85},[72,158,159],{"class":88}," mr",[72,161,162],{"class":88}," view",[72,164,166],{"class":165},"sYu0t"," 2677",[72,168,169],{"class":165}," --comments",[72,171,172],{"class":165}," --unresolved",[72,174,175],{"class":165}," --output",[72,177,178],{"class":88}," json\n",[12,180,181],{},"Dieser Befehl gibt den vollständigen MR zurück: Metadaten, Beschreibung und\njede ungelöste Diskussion als einzelnes strukturiertes JSON-Payload. Das gibt\nder KI alles, was sie braucht: welche Threads offen sind, was der Reviewer\nangefragt hat und in welchem Kontext. Kein Tab-Wechsel, kein manuelles Kopieren\neinzelner Kommentare.",[63,183,187],{"className":184,"code":185,"language":186,"meta":68,"style":68},"language-json shiki shiki-themes github-light","{\n  \"id\": 2677,\n  \"title\": \"feat: add OAuth2 support\",\n  \"state\": \"opened\",\n  \"author\": { \"username\": \"jdwick\" },\n  \"labels\": [\"backend\", \"needs-review\"],\n  \"blocking_discussions_resolved\": false,\n  \"discussions\": [\n    {\n      \"id\": \"3107030349\",\n      \"resolved\": false,\n      \"notes\": [\n        {\n          \"author\": { \"username\": \"dmurphy\" },\n          \"body\": \"This error handling will swallow panics — consider wrapping with recover()\",\n          \"created_at\": \"2026-03-14T09:23:11.000Z\"\n        }\n      ]\n    },\n    {\n      \"id\": \"3107030412\",\n      \"resolved\": false,\n      \"notes\": [\n        {\n          \"author\": { \"username\": \"sreeves\" },\n          \"body\": \"Token refresh logic needs a test for the expired token case\",\n          \"created_at\": \"2026-03-14T10:05:44.000Z\"\n        }\n      ]\n    }\n  ]\n}\n","json",[16,188,189,195,209,222,235,255,276,289,298,304,317,329,337,343,360,373,384,390,396,402,407,419,430,437,442,458,470,480,485,490,496,502],{"__ignoreMap":68},[72,190,191],{"class":74,"line":75},[72,192,194],{"class":193},"sgsFI","{\n",[72,196,197,200,203,206],{"class":74,"line":82},[72,198,199],{"class":165},"  \"id\"",[72,201,202],{"class":193},": ",[72,204,205],{"class":165},"2677",[72,207,208],{"class":193},",\n",[72,210,212,215,217,220],{"class":74,"line":211},3,[72,213,214],{"class":165},"  \"title\"",[72,216,202],{"class":193},[72,218,219],{"class":88},"\"feat: add OAuth2 support\"",[72,221,208],{"class":193},[72,223,225,228,230,233],{"class":74,"line":224},4,[72,226,227],{"class":165},"  \"state\"",[72,229,202],{"class":193},[72,231,232],{"class":88},"\"opened\"",[72,234,208],{"class":193},[72,236,238,241,244,247,249,252],{"class":74,"line":237},5,[72,239,240],{"class":165},"  \"author\"",[72,242,243],{"class":193},": { ",[72,245,246],{"class":165},"\"username\"",[72,248,202],{"class":193},[72,250,251],{"class":88},"\"jdwick\"",[72,253,254],{"class":193}," },\n",[72,256,258,261,264,267,270,273],{"class":74,"line":257},6,[72,259,260],{"class":165},"  \"labels\"",[72,262,263],{"class":193},": [",[72,265,266],{"class":88},"\"backend\"",[72,268,269],{"class":193},", ",[72,271,272],{"class":88},"\"needs-review\"",[72,274,275],{"class":193},"],\n",[72,277,279,282,284,287],{"class":74,"line":278},7,[72,280,281],{"class":165},"  \"blocking_discussions_resolved\"",[72,283,202],{"class":193},[72,285,286],{"class":165},"false",[72,288,208],{"class":193},[72,290,292,295],{"class":74,"line":291},8,[72,293,294],{"class":165},"  \"discussions\"",[72,296,297],{"class":193},": [\n",[72,299,301],{"class":74,"line":300},9,[72,302,303],{"class":193},"    {\n",[72,305,307,310,312,315],{"class":74,"line":306},10,[72,308,309],{"class":165},"      \"id\"",[72,311,202],{"class":193},[72,313,314],{"class":88},"\"3107030349\"",[72,316,208],{"class":193},[72,318,320,323,325,327],{"class":74,"line":319},11,[72,321,322],{"class":165},"      \"resolved\"",[72,324,202],{"class":193},[72,326,286],{"class":165},[72,328,208],{"class":193},[72,330,332,335],{"class":74,"line":331},12,[72,333,334],{"class":165},"      \"notes\"",[72,336,297],{"class":193},[72,338,340],{"class":74,"line":339},13,[72,341,342],{"class":193},"        {\n",[72,344,346,349,351,353,355,358],{"class":74,"line":345},14,[72,347,348],{"class":165},"          \"author\"",[72,350,243],{"class":193},[72,352,246],{"class":165},[72,354,202],{"class":193},[72,356,357],{"class":88},"\"dmurphy\"",[72,359,254],{"class":193},[72,361,363,366,368,371],{"class":74,"line":362},15,[72,364,365],{"class":165},"          \"body\"",[72,367,202],{"class":193},[72,369,370],{"class":88},"\"This error handling will swallow panics — consider wrapping with recover()\"",[72,372,208],{"class":193},[72,374,376,379,381],{"class":74,"line":375},16,[72,377,378],{"class":165},"          \"created_at\"",[72,380,202],{"class":193},[72,382,383],{"class":88},"\"2026-03-14T09:23:11.000Z\"\n",[72,385,387],{"class":74,"line":386},17,[72,388,389],{"class":193},"        }\n",[72,391,393],{"class":74,"line":392},18,[72,394,395],{"class":193},"      ]\n",[72,397,399],{"class":74,"line":398},19,[72,400,401],{"class":193},"    },\n",[72,403,405],{"class":74,"line":404},20,[72,406,303],{"class":193},[72,408,410,412,414,417],{"class":74,"line":409},21,[72,411,309],{"class":165},[72,413,202],{"class":193},[72,415,416],{"class":88},"\"3107030412\"",[72,418,208],{"class":193},[72,420,422,424,426,428],{"class":74,"line":421},22,[72,423,322],{"class":165},[72,425,202],{"class":193},[72,427,286],{"class":165},[72,429,208],{"class":193},[72,431,433,435],{"class":74,"line":432},23,[72,434,334],{"class":165},[72,436,297],{"class":193},[72,438,440],{"class":74,"line":439},24,[72,441,342],{"class":193},[72,443,445,447,449,451,453,456],{"class":74,"line":444},25,[72,446,348],{"class":165},[72,448,243],{"class":193},[72,450,246],{"class":165},[72,452,202],{"class":193},[72,454,455],{"class":88},"\"sreeves\"",[72,457,254],{"class":193},[72,459,461,463,465,468],{"class":74,"line":460},26,[72,462,365],{"class":165},[72,464,202],{"class":193},[72,466,467],{"class":88},"\"Token refresh logic needs a test for the expired token case\"",[72,469,208],{"class":193},[72,471,473,475,477],{"class":74,"line":472},27,[72,474,378],{"class":165},[72,476,202],{"class":193},[72,478,479],{"class":88},"\"2026-03-14T10:05:44.000Z\"\n",[72,481,483],{"class":74,"line":482},28,[72,484,389],{"class":193},[72,486,488],{"class":74,"line":487},29,[72,489,395],{"class":193},[72,491,493],{"class":74,"line":492},30,[72,494,495],{"class":193},"    }\n",[72,497,499],{"class":74,"line":498},31,[72,500,501],{"class":193},"  ]\n",[72,503,505],{"class":74,"line":504},32,[72,506,507],{"class":193},"}\n",[12,509,510,511,514],{},"Statt jeden Thread selbst durchzulesen, lässt sich der Agent fragen:\n",[97,512,513],{},"„Was muss ich in MR 2677 noch beheben?\""," – und erhält eine priorisierte\nZusammenfassung mit Änderungsvorschlägen. Das alles aus einem einzigen Befehl.",[142,516,518],{"id":517},"den-kreislauf-programmatisch-schließen","Den Kreislauf programmatisch schließen",[12,520,521],{},"Sobald der KI geholfen hat, das Feedback zu adressieren, kann sie Diskussionen\nauflösen:",[63,523,525],{"className":65,"code":524,"language":67,"meta":68,"style":68},"# Alle Diskussionen auflisten – strukturiert, bereit für den Agenten\nglab mr note list 456 --output json\n\n# Diskussion auflösen, sobald das Feedback adressiert wurde\nglab mr note resolve 456 3107030349\n\n# Wieder öffnen, wenn etwas erneut geprüft werden muss\nglab mr note reopen 456 3107030349\n",[16,526,527,532,551,557,562,578,582,587],{"__ignoreMap":68},[72,528,529],{"class":74,"line":75},[72,530,531],{"class":78},"# Alle Diskussionen auflisten – strukturiert, bereit für den Agenten\n",[72,533,534,536,538,541,544,547,549],{"class":74,"line":82},[72,535,18],{"class":85},[72,537,159],{"class":88},[72,539,540],{"class":88}," note",[72,542,543],{"class":88}," list",[72,545,546],{"class":165}," 456",[72,548,175],{"class":165},[72,550,178],{"class":88},[72,552,553],{"class":74,"line":211},[72,554,556],{"emptyLinePlaceholder":555},true,"\n",[72,558,559],{"class":74,"line":224},[72,560,561],{"class":78},"# Diskussion auflösen, sobald das Feedback adressiert wurde\n",[72,563,564,566,568,570,573,575],{"class":74,"line":237},[72,565,18],{"class":85},[72,567,159],{"class":88},[72,569,540],{"class":88},[72,571,572],{"class":88}," resolve",[72,574,546],{"class":165},[72,576,577],{"class":165}," 3107030349\n",[72,579,580],{"class":74,"line":257},[72,581,556],{"emptyLinePlaceholder":555},[72,583,584],{"class":74,"line":278},[72,585,586],{"class":78},"# Wieder öffnen, wenn etwas erneut geprüft werden muss\n",[72,588,589,591,593,595,598,600],{"class":74,"line":291},[72,590,18],{"class":85},[72,592,159],{"class":88},[72,594,540],{"class":88},[72,596,597],{"class":88}," reopen",[72,599,546],{"class":165},[72,601,577],{"class":165},[63,603,605],{"className":184,"code":604,"language":186,"meta":68,"style":68},"[\n  {\n    \"id\": 3107030349,\n    \"body\": \"This error handling will swallow panics — consider wrapping with recover()\",\n    \"author\": { \"username\": \"dmurphy\" },\n    \"resolved\": false,\n    \"resolvable\": true\n  },\n  {\n    \"id\": 3107030412,\n    \"body\": \"Token refresh logic needs a test for the expired token case\",\n    \"author\": { \"username\": \"sreeves\" },\n    \"resolved\": false,\n    \"resolvable\": true\n  }\n]\n",[16,606,607,612,617,629,640,655,666,676,681,685,696,706,720,730,738,743],{"__ignoreMap":68},[72,608,609],{"class":74,"line":75},[72,610,611],{"class":193},"[\n",[72,613,614],{"class":74,"line":82},[72,615,616],{"class":193},"  {\n",[72,618,619,622,624,627],{"class":74,"line":211},[72,620,621],{"class":165},"    \"id\"",[72,623,202],{"class":193},[72,625,626],{"class":165},"3107030349",[72,628,208],{"class":193},[72,630,631,634,636,638],{"class":74,"line":224},[72,632,633],{"class":165},"    \"body\"",[72,635,202],{"class":193},[72,637,370],{"class":88},[72,639,208],{"class":193},[72,641,642,645,647,649,651,653],{"class":74,"line":237},[72,643,644],{"class":165},"    \"author\"",[72,646,243],{"class":193},[72,648,246],{"class":165},[72,650,202],{"class":193},[72,652,357],{"class":88},[72,654,254],{"class":193},[72,656,657,660,662,664],{"class":74,"line":257},[72,658,659],{"class":165},"    \"resolved\"",[72,661,202],{"class":193},[72,663,286],{"class":165},[72,665,208],{"class":193},[72,667,668,671,673],{"class":74,"line":278},[72,669,670],{"class":165},"    \"resolvable\"",[72,672,202],{"class":193},[72,674,675],{"class":165},"true\n",[72,677,678],{"class":74,"line":291},[72,679,680],{"class":193},"  },\n",[72,682,683],{"class":74,"line":300},[72,684,616],{"class":193},[72,686,687,689,691,694],{"class":74,"line":306},[72,688,621],{"class":165},[72,690,202],{"class":193},[72,692,693],{"class":165},"3107030412",[72,695,208],{"class":193},[72,697,698,700,702,704],{"class":74,"line":319},[72,699,633],{"class":165},[72,701,202],{"class":193},[72,703,467],{"class":88},[72,705,208],{"class":193},[72,707,708,710,712,714,716,718],{"class":74,"line":331},[72,709,644],{"class":165},[72,711,243],{"class":193},[72,713,246],{"class":165},[72,715,202],{"class":193},[72,717,455],{"class":88},[72,719,254],{"class":193},[72,721,722,724,726,728],{"class":74,"line":339},[72,723,659],{"class":165},[72,725,202],{"class":193},[72,727,286],{"class":165},[72,729,208],{"class":193},[72,731,732,734,736],{"class":74,"line":345},[72,733,670],{"class":165},[72,735,202],{"class":193},[72,737,675],{"class":165},[72,739,740],{"class":74,"line":362},[72,741,742],{"class":193},"  }\n",[72,744,745],{"class":74,"line":375},[72,746,747],{"class":193},"]\n",[12,749,750],{},"Note-IDs sind direkt in der GitLab-UI und der API sichtbar – kein zusätzlicher\nLookup nötig. Der Agent kann die vollständige Liste durcharbeiten, jeden Fix\nprüfen und dabei auflösen.",[39,752,754],{"id":753},"mit-der-ki-effektiver-über-code-sprechen","Mit der KI effektiver über Code sprechen",[12,756,757,758,760],{},"Auch ohne laufenden MCP-Server gibt es eine einfachere Umstellung, die einen\ngroßen Unterschied macht: ",[16,759,18],{}," einsetzen, um der KI bessere Informationen zu\nliefern.",[12,762,763],{},"Beim letzten Mal, als ein KI-Assistent bei der Issue-Triage oder beim Debuggen\neiner fehlgeschlagenen Pipeline geholfen hat, wurde wahrscheinlich etwas Text\naus der GitLab-UI kopiert und in den Chat eingefügt. Das ist es, womit der\nAgent tatsächlich arbeitet:",[63,765,770],{"className":766,"code":768,"language":769,"meta":68},[767],"language-text","open issues: 12 • milestone: 17.10 • label: bug, needs-triage ...\n","text",[16,771,768],{"__ignoreMap":68},[12,773,774,775,777],{},"Im Vergleich dazu, was er mit ",[16,776,18],{}," erhält:",[63,779,781],{"className":184,"code":780,"language":186,"meta":68,"style":68},"[\n  {\n    \"iid\": 902,\n    \"title\": \"Pipeline fails on merge to main\",\n    \"labels\": [\"bug\", \"needs-triage\"],\n    \"milestone\": { \"title\": \"17.10\" },\n    \"assignees\": []\n  },\n  ...\n]\n",[16,782,783,787,791,803,815,832,849,857,861,867],{"__ignoreMap":68},[72,784,785],{"class":74,"line":75},[72,786,611],{"class":193},[72,788,789],{"class":74,"line":82},[72,790,616],{"class":193},[72,792,793,796,798,801],{"class":74,"line":211},[72,794,795],{"class":165},"    \"iid\"",[72,797,202],{"class":193},[72,799,800],{"class":165},"902",[72,802,208],{"class":193},[72,804,805,808,810,813],{"class":74,"line":224},[72,806,807],{"class":165},"    \"title\"",[72,809,202],{"class":193},[72,811,812],{"class":88},"\"Pipeline fails on merge to main\"",[72,814,208],{"class":193},[72,816,817,820,822,825,827,830],{"class":74,"line":237},[72,818,819],{"class":165},"    \"labels\"",[72,821,263],{"class":193},[72,823,824],{"class":88},"\"bug\"",[72,826,269],{"class":193},[72,828,829],{"class":88},"\"needs-triage\"",[72,831,275],{"class":193},[72,833,834,837,839,842,844,847],{"class":74,"line":257},[72,835,836],{"class":165},"    \"milestone\"",[72,838,243],{"class":193},[72,840,841],{"class":165},"\"title\"",[72,843,202],{"class":193},[72,845,846],{"class":88},"\"17.10\"",[72,848,254],{"class":193},[72,850,851,854],{"class":74,"line":278},[72,852,853],{"class":165},"    \"assignees\"",[72,855,856],{"class":193},": []\n",[72,858,859],{"class":74,"line":291},[72,860,680],{"class":193},[72,862,863],{"class":74,"line":300},[72,864,866],{"class":865},"sB1qb","  ...\n",[72,868,869],{"class":74,"line":306},[72,870,747],{"class":193},[12,872,873],{},"Strukturiert, typisiert, vollständig – keine Mehrdeutigkeit, kein\nInterpretationsaufwand beim Parsen. Das ist der Unterschied zwischen einem\nAgenten, der handeln kann, und einem, der Rückfragen stellen muss.",[12,875,876,877,879,880,882],{},"Mit dem MCP-Server passiert das automatisch: ",[16,878,18],{}," fügt ",[16,881,119],{}," für\njeden Befehl hinzu, der das unterstützt. Beim direkten Arbeiten im Terminal\neinfach das Flag selbst ergänzen:",[63,884,886],{"className":65,"code":885,"language":67,"meta":68,"style":68},"# Offene Issues für Triage abrufen\nglab issue list --label \"needs-triage\" --output json\n\n# Pipeline-Status prüfen\nglab ci status --output json\n\n# Vollständige MR-Details abrufen\nglab mr view 456 --output json\n",[16,887,888,893,912,916,921,935,939,944],{"__ignoreMap":68},[72,889,890],{"class":74,"line":75},[72,891,892],{"class":78},"# Offene Issues für Triage abrufen\n",[72,894,895,897,900,902,905,908,910],{"class":74,"line":82},[72,896,18],{"class":85},[72,898,899],{"class":88}," issue",[72,901,543],{"class":88},[72,903,904],{"class":165}," --label",[72,906,907],{"class":88}," \"needs-triage\"",[72,909,175],{"class":165},[72,911,178],{"class":88},[72,913,914],{"class":74,"line":211},[72,915,556],{"emptyLinePlaceholder":555},[72,917,918],{"class":74,"line":224},[72,919,920],{"class":78},"# Pipeline-Status prüfen\n",[72,922,923,925,928,931,933],{"class":74,"line":237},[72,924,18],{"class":85},[72,926,927],{"class":88}," ci",[72,929,930],{"class":88}," status",[72,932,175],{"class":165},[72,934,178],{"class":88},[72,936,937],{"class":74,"line":257},[72,938,556],{"emptyLinePlaceholder":555},[72,940,941],{"class":74,"line":278},[72,942,943],{"class":78},"# Vollständige MR-Details abrufen\n",[72,945,946,948,950,952,954,956],{"class":74,"line":291},[72,947,18],{"class":85},[72,949,159],{"class":88},[72,951,162],{"class":88},[72,953,546],{"class":165},[72,955,175],{"class":165},[72,957,178],{"class":88},[12,959,960,961,963],{},"Die JSON-Ausgabe wurde in letzten Releases erheblich erweitert. Sie deckt jetzt\nCI-Status, Milestones, Labels, Releases, Schedules, Cluster-Agenten, Work\nItems, MR-Genehmiger, Repository-Mitwirkende und mehr ab. Was ",[16,962,18],{}," abrufen\nkann, kann die KI sauber verarbeiten.",[142,965,967],{"id":966},"ein-echter-workflow","Ein echter Workflow",[63,969,971],{"className":65,"code":970,"language":67,"meta":68,"style":68},"$ glab issue list --label \"needs-triage\" --milestone \"17.10\" \\\n--output json\n",[16,972,973,998],{"__ignoreMap":68},[72,974,975,978,981,983,985,987,989,992,995],{"class":74,"line":75},[72,976,977],{"class":85},"$",[72,979,980],{"class":88}," glab",[72,982,899],{"class":88},[72,984,543],{"class":88},[72,986,904],{"class":165},[72,988,907],{"class":88},[72,990,991],{"class":165}," --milestone",[72,993,994],{"class":88}," \"17.10\"",[72,996,997],{"class":165}," \\\n",[72,999,1000,1003],{"class":74,"line":82},[72,1001,1002],{"class":193},"--output ",[72,1004,1005],{"class":88},"json\n",[63,1007,1010],{"className":1008,"code":1009,"language":769,"meta":68},[767],"Agent: I found 2 unassigned bugs in the 17.10 milestone that need triage:\n1. #902 — Pipeline fails on merge to main (opened 5 days ago)\n2. #903 — Auth token not refreshing on expiry (opened 4 days ago)\nBoth are unassigned. Want me to draft triage notes and suggest assignees based on recent commit history?\n",[16,1011,1009],{"__ignoreMap":68},[39,1013,1015],{"id":1014},"der-agent-ist-keineswegs-auf-eingebaute-befehle-beschränkt","Der Agent ist keineswegs auf eingebaute Befehle beschränkt",[12,1017,1018,1019,1021,1022,1025],{},"Die nativen Befehle von ",[16,1020,18],{}," decken die gängigsten Workflows ab – aber der\nAgent ist nicht darauf beschränkt. Über ",[16,1023,1024],{},"glab api"," hat er authentifizierten\nZugriff auf die vollständige GitLab REST- und GraphQL-API-Oberfläche, mit\nderselben Session, ohne zusätzliche Credentials oder Konfiguration.",[12,1027,1028,1029,1031],{},"Das ist ein wesentlicher Unterschied. Die meisten CLI-Werkzeuge beschränken\nsich auf das, was ihre Befehle abbilden. Mit ",[16,1030,18],{}," gilt: Wenn GitLabs API es\nunterstützt, kann der Agent es tun – immer aus einem vertrauenswürdigen,\nauthentifizierten Kontext heraus.",[12,1033,1034],{},"Ein praktisches Beispiel: nur die Liste der geänderten Dateien in einem MR\nabrufen, bevor entschieden wird, welche Diffs vollständig geladen werden:",[63,1036,1038],{"className":65,"code":1037,"language":67,"meta":68,"style":68},"# Geänderte Dateipfade abrufen – leichtgewichtig, noch kein Diff-Inhalt\nglab api \"/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/diffs?per_page=100\" \\\n| jq '.[].new_path'\n\n# Dann nur die spezifische Datei laden, die der Agent benötigt\nglab api \"/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/diffs?per_page=100\" \\\n| jq '.[] | select(.new_path == \"path/to/file.go\")'\n",[16,1039,1040,1045,1069,1081,1085,1090,1108],{"__ignoreMap":68},[72,1041,1042],{"class":74,"line":75},[72,1043,1044],{"class":78},"# Geänderte Dateipfade abrufen – leichtgewichtig, noch kein Diff-Inhalt\n",[72,1046,1047,1049,1052,1055,1058,1061,1064,1067],{"class":74,"line":82},[72,1048,18],{"class":85},[72,1050,1051],{"class":88}," api",[72,1053,1054],{"class":88}," \"/projects/",[72,1056,1057],{"class":193},"$CI_PROJECT_ID",[72,1059,1060],{"class":88},"/merge_requests/",[72,1062,1063],{"class":193},"$CI_MERGE_REQUEST_IID",[72,1065,1066],{"class":88},"/diffs?per_page=100\"",[72,1068,997],{"class":165},[72,1070,1071,1075,1078],{"class":74,"line":211},[72,1072,1074],{"class":1073},"sD7c4","|",[72,1076,1077],{"class":85}," jq",[72,1079,1080],{"class":88}," '.[].new_path'\n",[72,1082,1083],{"class":74,"line":224},[72,1084,556],{"emptyLinePlaceholder":555},[72,1086,1087],{"class":74,"line":237},[72,1088,1089],{"class":78},"# Dann nur die spezifische Datei laden, die der Agent benötigt\n",[72,1091,1092,1094,1096,1098,1100,1102,1104,1106],{"class":74,"line":257},[72,1093,18],{"class":85},[72,1095,1051],{"class":88},[72,1097,1054],{"class":88},[72,1099,1057],{"class":193},[72,1101,1060],{"class":88},[72,1103,1063],{"class":193},[72,1105,1066],{"class":88},[72,1107,997],{"class":165},[72,1109,1110,1112,1114],{"class":74,"line":278},[72,1111,1074],{"class":1073},[72,1113,1077],{"class":85},[72,1115,1116],{"class":88}," '.[] | select(.new_path == \"path/to/file.go\")'\n",[63,1118,1121],{"className":1119,"code":1120,"language":769,"meta":68},[767],"\"internal/auth/token.go\"\n\"internal/auth/token_test.go\"\n\"internal/oauth/refresh.go\"\n",[16,1122,1120],{"__ignoreMap":68},[12,1124,1125,1126,1129],{},"Für alles, was die REST API nicht abdeckt (Epics, bestimmte Work-Item-Abfragen,\nkomplexe projektübergreifende Daten), bietet ",[16,1127,1128],{},"glab api graphql"," die vollständige\nGraphQL-Schnittstelle:",[63,1131,1133],{"className":65,"code":1132,"language":67,"meta":68,"style":68},"glab api graphql -f query='\n{\n  project(fullPath: \"gitlab-org/gitlab\") {\n    mergeRequest(iid: \"12345\") {\n      title\n      reviewers { nodes { username } }\n    }\n  }\n}'\n",[16,1134,1135,1150,1154,1159,1164,1169,1174,1178,1182],{"__ignoreMap":68},[72,1136,1137,1139,1141,1144,1147],{"class":74,"line":75},[72,1138,18],{"class":85},[72,1140,1051],{"class":88},[72,1142,1143],{"class":88}," graphql",[72,1145,1146],{"class":165}," -f",[72,1148,1149],{"class":88}," query='\n",[72,1151,1152],{"class":74,"line":82},[72,1153,194],{"class":88},[72,1155,1156],{"class":74,"line":211},[72,1157,1158],{"class":88},"  project(fullPath: \"gitlab-org/gitlab\") {\n",[72,1160,1161],{"class":74,"line":224},[72,1162,1163],{"class":88},"    mergeRequest(iid: \"12345\") {\n",[72,1165,1166],{"class":74,"line":237},[72,1167,1168],{"class":88},"      title\n",[72,1170,1171],{"class":74,"line":257},[72,1172,1173],{"class":88},"      reviewers { nodes { username } }\n",[72,1175,1176],{"class":74,"line":278},[72,1177,495],{"class":88},[72,1179,1180],{"class":74,"line":291},[72,1181,742],{"class":88},[72,1183,1184],{"class":74,"line":300},[72,1185,1186],{"class":88},"}'\n",[63,1188,1190],{"className":184,"code":1189,"language":186,"meta":68,"style":68},"{\n  \"data\": {\n    \"project\": {\n      \"mergeRequest\": {\n        \"title\": \"feat: add OAuth2 support\",\n        \"reviewers\": {\n          \"nodes\": [\n            { \"username\": \"dmurphy\" },\n            { \"username\": \"sreeves\" }\n          ]\n        }\n      }\n    }\n  }\n}\n",[16,1191,1192,1196,1204,1211,1218,1229,1236,1243,1256,1269,1274,1278,1283,1287,1291],{"__ignoreMap":68},[72,1193,1194],{"class":74,"line":75},[72,1195,194],{"class":193},[72,1197,1198,1201],{"class":74,"line":82},[72,1199,1200],{"class":165},"  \"data\"",[72,1202,1203],{"class":193},": {\n",[72,1205,1206,1209],{"class":74,"line":211},[72,1207,1208],{"class":165},"    \"project\"",[72,1210,1203],{"class":193},[72,1212,1213,1216],{"class":74,"line":224},[72,1214,1215],{"class":165},"      \"mergeRequest\"",[72,1217,1203],{"class":193},[72,1219,1220,1223,1225,1227],{"class":74,"line":237},[72,1221,1222],{"class":165},"        \"title\"",[72,1224,202],{"class":193},[72,1226,219],{"class":88},[72,1228,208],{"class":193},[72,1230,1231,1234],{"class":74,"line":257},[72,1232,1233],{"class":165},"        \"reviewers\"",[72,1235,1203],{"class":193},[72,1237,1238,1241],{"class":74,"line":278},[72,1239,1240],{"class":165},"          \"nodes\"",[72,1242,297],{"class":193},[72,1244,1245,1248,1250,1252,1254],{"class":74,"line":291},[72,1246,1247],{"class":193},"            { ",[72,1249,246],{"class":165},[72,1251,202],{"class":193},[72,1253,357],{"class":88},[72,1255,254],{"class":193},[72,1257,1258,1260,1262,1264,1266],{"class":74,"line":300},[72,1259,1247],{"class":193},[72,1261,246],{"class":165},[72,1263,202],{"class":193},[72,1265,455],{"class":88},[72,1267,1268],{"class":193}," }\n",[72,1270,1271],{"class":74,"line":306},[72,1272,1273],{"class":193},"          ]\n",[72,1275,1276],{"class":74,"line":319},[72,1277,389],{"class":193},[72,1279,1280],{"class":74,"line":331},[72,1281,1282],{"class":193},"      }\n",[72,1284,1285],{"class":74,"line":339},[72,1286,495],{"class":193},[72,1288,1289],{"class":74,"line":345},[72,1290,742],{"class":193},[72,1292,1293],{"class":74,"line":362},[72,1294,507],{"class":193},[12,1296,1297],{},"Ein einziger, authentifizierter Einstiegspunkt zu allem, was GitLab\nbereitstellt – ohne Token-Jonglieren, separate API-Clients oder\nKonfigurationsaufwand.",[39,1299,1301],{"id":1300},"was-als-nächstes-kommt-und-feedback","Was als Nächstes kommt – und Feedback",[12,1303,1304,1305,1307],{},"Zwei Verbesserungen, an denen aktiv gearbeitet wird, werden ",[16,1306,18],{}," für\nAgenten-Workflows noch nützlicher machen:",[12,1309,1310,1314,1315,1318,1319,1321],{},[1311,1312,1313],"strong",{},"Auf Agenten abgestimmter Hilfetext."," Heute ist die ",[16,1316,1317],{},"--help","-Ausgabe für\nMenschen am Terminal geschrieben. Sie wird aktualisiert, um für jeden\ninteraktiven Befehl die nicht-interaktive Alternative anzuzeigen, Befehle mit\n",[16,1320,119],{},"-Unterstützung zu kennzeichnen und Hilfe generell zu einer\nnützlichen Ressource für Agenten zu machen, die Fähigkeiten zur Laufzeit\nentdecken – nicht nur für Menschen.",[12,1323,1324,1327],{},[1311,1325,1326],{},"Besser maschinenlesbare Fehlermeldungen."," Wenn heute etwas schiefläuft,\nerhalten Agenten dieselben menschenlesbaren Fehlermeldungen wie\nTerminal-Nutzende. Das wird geändert: Fehler im JSON-Modus geben strukturierte\nAusgaben zurück, die dem Agenten die Informationen liefern, die er braucht, um\nFehler sauber zu behandeln, intelligent zu wiederholen oder den richtigen\nKontext zurückzugeben.",[12,1329,1330,1331,1333],{},"Beide Punkte sind in aktiver Entwicklung. Wer ",[16,1332,18],{}," bereits mit einem\nKI-Werkzeug einsetzt, ist genau die Zielgruppe, deren Erfahrungen uns\ninteressieren.",[1335,1336,1337,1344],"ul",{},[1338,1339,1340,1343],"li",{},[1311,1341,1342],{},"Welche Reibungspunkte gibt es?"," Befehle, die sich in Agenten-Kontexten\nnicht gut verhalten, Fehlermeldungen ohne Handlungsanleitung, Lücken in der\nJSON-Ausgabe. Feedback ist willkommen.",[1338,1345,1346,1349],{},[1311,1347,1348],{},"Welche Workflows wurden erschlossen?"," Reale Nutzungsmuster helfen dabei,\nPrioritäten für die weitere Entwicklung zu setzen.",[12,1351,1352,1353,1358,1359,1364,1365,1370],{},"Die Diskussion findet im\n",[50,1354,1357],{"href":1355,"rel":1356},"https://gitlab.com/gitlab-org/cli/-/issues/8177",[],"Feedback-Issue"," statt –\ndort wird die Roadmap für Agenten-Freundlichkeit gestaltet, und Beiträge haben\ndort den direktesten Einfluss. Wer eine spezifische Lücke gefunden hat,\nkann ein ",[50,1360,1363],{"href":1361,"rel":1362},"https://gitlab.com/gitlab-org/cli/-/issues/new",[],"Issue öffnen",". Wer\neinen Fix im Sinn hat: Beiträge sind willkommen. Details unter\n",[50,1366,1369],{"href":1367,"rel":1368},"https://gitlab.com/gitlab-org/cli/-/blob/main/CONTRIBUTING.md",[],"CONTRIBUTING.md",".",[12,1372,1373,1374,1376],{},"Das GitLab CLI stand schon immer dafür, Entwickler(inne)n mehr Kontrolle über ihren\nWorkflow zu geben. Da KI ein immer größerer Teil der täglichen Arbeit wird,\nbedeutet das, ",[16,1375,18],{}," zur bestmöglichen Schnittstelle zwischen KI-Werkzeugen\nund GitLab-Projekten zu machen. Wir stehen am Anfang – und freuen uns darauf,\nden nächsten Teil gemeinsam zu gestalten.",[1378,1379,1380],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sB1qb, html code.shiki .sB1qb{--shiki-default:#B31D28;--shiki-default-font-style:italic}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}",{"title":68,"searchDepth":82,"depth":82,"links":1382},[1383,1384,1388,1391,1392],{"id":41,"depth":82,"text":42},{"id":133,"depth":82,"text":134,"children":1385},[1386,1387],{"id":144,"depth":211,"text":145},{"id":517,"depth":211,"text":518},{"id":753,"depth":82,"text":754,"children":1389},[1390],{"id":966,"depth":211,"text":967},{"id":1014,"depth":82,"text":1015},{"id":1300,"depth":82,"text":1301},"ai","2026-04-27","Das GitLab CLI (glab) gibt KI-Agenten strukturierten Zugriff auf Projekte via MCP. Tutorial: Code-Reviews und Issue-Triage mit glab beschleunigen.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1776347152/unw3mzatkd5xyfbzcnni.png",{},"/de-de/blog/give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli",{"config":1402,"title":1404,"description":1405},{"noIndex":1403},false,"glab CLI und MCP: KI-Agenten direkten GitLab-Zugriff geben","Mit glab CLI und MCP erhalten KI-Agenten strukturierten GitLab-Zugriff. Tutorial zu Code-Review, Issue-Triage und der GitLab-API.","give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli","de-de/blog/give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli",[1409,1410,1411],"AI","product","tutorial","BlogPost","1iu2luUMiGHGcuXoRvA16hvcuZV1IXb2DqlZ8G8Hm-A",{"logo":1415,"freeTrial":1420,"sales":1425,"login":1430,"items":1435,"search":1764,"minimal":1798,"duo":1816,"switchNav":1825,"pricingDeployment":1836},{"config":1416},{"href":1417,"dataGaName":1418,"dataGaLocation":1419},"/de-de/","gitlab logo","header",{"text":1421,"config":1422},"Kostenlose Testversion anfordern",{"href":1423,"dataGaName":1424,"dataGaLocation":1419},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":1426,"config":1427},"Demo anfordern",{"href":1428,"dataGaName":1429,"dataGaLocation":1419},"/de-de/sales/?contact-topic=request-demo","sales",{"text":1431,"config":1432},"Anmelden",{"href":1433,"dataGaName":1434,"dataGaLocation":1419},"https://gitlab.com/users/sign_in/","sign in",[1436,1465,1567,1572,1686,1742],{"text":1437,"config":1438,"menu":1440},"Plattform",{"dataNavLevelOne":1439},"platform",{"type":1441,"columns":1442},"cards",[1443,1449,1457],{"title":1437,"description":1444,"link":1445},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":1446,"config":1447},"Die Plattform erkunden",{"href":1448,"dataGaName":1439,"dataGaLocation":1419},"/de-de/platform/",{"title":1450,"description":1451,"link":1452},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":1453,"config":1454},"Lerne GitLab Duo kennen",{"href":1455,"dataGaName":1456,"dataGaLocation":1419},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1458,"description":1459,"link":1460},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":1461,"config":1462},"Mehr erfahren",{"href":1463,"dataGaName":1464,"dataGaLocation":1419},"/de-de/why-gitlab/","why gitlab",{"text":1466,"left":555,"config":1467,"menu":1469},"Produkt",{"dataNavLevelOne":1468},"solutions",{"type":1470,"link":1471,"columns":1475,"feature":1546},"lists",{"text":1472,"config":1473},"Alle Lösungen anzeigen",{"href":1474,"dataGaName":1468,"dataGaLocation":1419},"/de-de/solutions/",[1476,1501,1524],{"title":1477,"description":1478,"link":1479,"items":1484},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":1480},{"icon":1481,"href":1482,"dataGaName":1483,"dataGaLocation":1419},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[1485,1489,1492,1497],{"text":1486,"config":1487},"CI/CD",{"href":1488,"dataGaLocation":1419,"dataGaName":1486},"/de-de/solutions/continuous-integration/",{"text":1450,"config":1490},{"href":1455,"dataGaLocation":1419,"dataGaName":1491},"gitlab duo agent platform - product menu",{"text":1493,"config":1494},"Quellcodeverwaltung",{"href":1495,"dataGaLocation":1419,"dataGaName":1496},"/de-de/solutions/source-code-management/","Source Code Management",{"text":1498,"config":1499},"Automatische Softwarebereitstellung",{"href":1482,"dataGaLocation":1419,"dataGaName":1500},"Automated software delivery",{"title":1502,"description":1503,"link":1504,"items":1509},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":1505},{"href":1506,"dataGaName":1507,"dataGaLocation":1419,"icon":1508},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1510,1514,1519],{"text":1511,"config":1512},"Anwendungssicherheitstests",{"href":1506,"dataGaName":1513,"dataGaLocation":1419},"Application security testing",{"text":1515,"config":1516},"Schutz der Software-Lieferkette",{"href":1517,"dataGaLocation":1419,"dataGaName":1518},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":1520,"config":1521},"Software-Compliance",{"href":1522,"dataGaName":1523,"dataGaLocation":1419},"/de-de/solutions/software-compliance/","software compliance",{"title":1525,"link":1526,"items":1531},"Messung",{"config":1527},{"icon":1528,"href":1529,"dataGaName":1530,"dataGaLocation":1419},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[1532,1536,1541],{"text":1533,"config":1534},"Sichtbarkeit und Messung",{"href":1529,"dataGaLocation":1419,"dataGaName":1535},"Visibility and Measurement",{"text":1537,"config":1538},"Wertstrommanagement",{"href":1539,"dataGaLocation":1419,"dataGaName":1540},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":1542,"config":1543},"Analysen und Einblicke",{"href":1544,"dataGaLocation":1419,"dataGaName":1545},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":1547,"type":1470,"items":1548},"GitLab für",[1549,1555,1561],{"text":1550,"config":1551},"Enterprise",{"icon":1552,"href":1553,"dataGaLocation":1419,"dataGaName":1554},"Building","/de-de/enterprise/","enterprise",{"text":1556,"config":1557},"Kleinunternehmen",{"icon":1558,"href":1559,"dataGaLocation":1419,"dataGaName":1560},"Work","/de-de/small-business/","small business",{"text":1562,"config":1563},"Öffentlicher Sektor",{"icon":1564,"href":1565,"dataGaLocation":1419,"dataGaName":1566},"Organization","/de-de/solutions/public-sector/","public sector",{"text":1568,"config":1569},"Preise",{"href":1570,"dataGaName":1571,"dataGaLocation":1419,"dataNavLevelOne":1571},"/de-de/pricing/","pricing",{"text":1573,"config":1574,"menu":1576},"Ressourcen",{"dataNavLevelOne":1575},"resources",{"type":1470,"link":1577,"columns":1581,"feature":1675},{"text":1578,"config":1579},"Alle Ressourcen anzeigen",{"href":1580,"dataGaName":1575,"dataGaLocation":1419},"/de-de/resources/",[1582,1615,1642],{"title":1583,"items":1584},"Erste Schritte",[1585,1590,1595,1600,1605,1610],{"text":1586,"config":1587},"Installieren",{"href":1588,"dataGaName":1589,"dataGaLocation":1419},"/de-de/install/","install",{"text":1591,"config":1592},"Kurzanleitungen",{"href":1593,"dataGaName":1594,"dataGaLocation":1419},"/de-de/get-started/","quick setup checklists",{"text":1596,"config":1597},"Lernen",{"href":1598,"dataGaLocation":1419,"dataGaName":1599},"https://university.gitlab.com/","learn",{"text":1601,"config":1602},"Produktdokumentation",{"href":1603,"dataGaName":1604,"dataGaLocation":1419},"https://docs.gitlab.com/","product documentation",{"text":1606,"config":1607},"Best-Practice-Videos",{"href":1608,"dataGaName":1609,"dataGaLocation":1419},"/de-de/getting-started-videos/","best practice videos",{"text":1611,"config":1612},"Integrationen",{"href":1613,"dataGaName":1614,"dataGaLocation":1419},"/de-de/integrations/","integrations",{"title":1616,"items":1617},"Entdecken",[1618,1623,1628,1633,1637],{"text":1619,"config":1620},"Kundenerfolge",{"href":1621,"dataGaName":1622,"dataGaLocation":1419},"/de-de/customers/","customer success stories",{"text":1624,"config":1625},"Blog",{"href":1626,"dataGaName":1627,"dataGaLocation":1419},"/de-de/blog/","blog",{"text":1629,"config":1630},"Demo-Hub",{"href":1631,"dataGaName":1632,"dataGaLocation":1419},"/de-de/demo-hub/","demo hub",{"text":1634,"config":1635},"The Source",{"href":1636,"dataGaName":1627,"dataGaLocation":1419},"/de-de/the-source/",{"text":1638,"config":1639},"Remote",{"href":1640,"dataGaName":1641,"dataGaLocation":1419},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1643,"items":1644},"Vernetzen",[1645,1650,1655,1660,1665,1670],{"text":1646,"config":1647},"GitLab-Services",{"href":1648,"dataGaName":1649,"dataGaLocation":1419},"/de-de/services/","services",{"text":1651,"config":1652},"Beitragen",{"href":1653,"dataGaName":1654,"dataGaLocation":1419},"https://contributors.gitlab.com","contribute",{"text":1656,"config":1657},"Community",{"href":1658,"dataGaName":1659,"dataGaLocation":1419},"/community/","community",{"text":1661,"config":1662},"Forum",{"href":1663,"dataGaName":1664,"dataGaLocation":1419},"https://forum.gitlab.com/","forum",{"text":1666,"config":1667},"Veranstaltungen",{"href":1668,"dataGaName":1669,"dataGaLocation":1419},"/events/","events",{"text":1671,"config":1672},"Partner",{"href":1673,"dataGaName":1674,"dataGaLocation":1419},"/de-de/partners/","partners",{"config":1676,"title":1679,"text":1680,"link":1681},{"background":1677,"textColor":1678},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":1682,"config":1683},"Aktuelle Nachrichten",{"href":1684,"dataGaName":1685,"dataGaLocation":1419},"/de-de/whats-new/","whats new",{"text":1687,"config":1688,"menu":1690},"Unternehmen",{"dataNavLevelOne":1689},"company",{"type":1470,"columns":1691},[1692],{"items":1693},[1694,1699,1705,1707,1712,1717,1722,1727,1732,1737],{"text":1695,"config":1696},"Über",{"href":1697,"dataGaName":1698,"dataGaLocation":1419},"/de-de/company/","about",{"text":1700,"config":1701,"footerGa":1704},"Karriere",{"href":1702,"dataGaName":1703,"dataGaLocation":1419},"/jobs/","jobs",{"dataGaName":1703},{"text":1666,"config":1706},{"href":1668,"dataGaName":1669,"dataGaLocation":1419},{"text":1708,"config":1709},"Geschäftsführung",{"href":1710,"dataGaName":1711,"dataGaLocation":1419},"/company/team/e-group/","leadership",{"text":1713,"config":1714},"Handbuch",{"href":1715,"dataGaName":1716,"dataGaLocation":1419},"https://handbook.gitlab.com/","handbook",{"text":1718,"config":1719},"Investor Relations",{"href":1720,"dataGaName":1721,"dataGaLocation":1419},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1723,"config":1724},"Trust Center",{"href":1725,"dataGaName":1726,"dataGaLocation":1419},"/de-de/security/","trust center",{"text":1728,"config":1729},"AI Transparency Center",{"href":1730,"dataGaName":1731,"dataGaLocation":1419},"/de-de/ai-transparency-center/","ai transparency center",{"text":1733,"config":1734},"Newsletter",{"href":1735,"dataGaName":1736,"dataGaLocation":1419},"/company/contact/#contact-forms","newsletter",{"text":1738,"config":1739},"Presse",{"href":1740,"dataGaName":1741,"dataGaLocation":1419},"/press/","press",{"text":1743,"config":1744,"menu":1745},"Kontakt",{"dataNavLevelOne":1689},{"type":1470,"columns":1746},[1747],{"items":1748},[1749,1754,1759],{"text":1750,"config":1751},"Vertrieb kontaktieren",{"href":1752,"dataGaName":1753,"dataGaLocation":1419},"/de-de/sales/","talk to sales",{"text":1755,"config":1756},"Support-Portal",{"href":1757,"dataGaName":1758,"dataGaLocation":1419},"https://support.gitlab.com/hc/en-us","support portal",{"text":1760,"config":1761},"Kundenportal",{"href":1762,"dataGaName":1763,"dataGaLocation":1419},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1765,"login":1766,"suggestions":1773},"Schließen",{"text":1767,"link":1768},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":1769,"config":1770},"gitlab.com",{"href":1433,"dataGaName":1771,"dataGaLocation":1772},"search login","search",{"text":1774,"default":1775},"Vorschläge",[1776,1778,1783,1785,1790,1795],{"text":1450,"config":1777},{"href":1455,"dataGaName":1450,"dataGaLocation":1772},{"text":1779,"config":1780},"Codevorschläge (KI)",{"href":1781,"dataGaName":1782,"dataGaLocation":1772},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1486,"config":1784},{"href":1488,"dataGaName":1486,"dataGaLocation":1772},{"text":1786,"config":1787},"GitLab auf AWS",{"href":1788,"dataGaName":1789,"dataGaLocation":1772},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":1791,"config":1792},"GitLab auf Google Cloud",{"href":1793,"dataGaName":1794,"dataGaLocation":1772},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1458,"config":1796},{"href":1463,"dataGaName":1797,"dataGaLocation":1772},"Why GitLab?",{"freeTrial":1799,"mobileIcon":1804,"desktopIcon":1809,"secondaryButton":1812},{"text":1800,"config":1801},"Kostenlos testen",{"href":1802,"dataGaName":1424,"dataGaLocation":1803},"https://gitlab.com/-/trials/new/","nav",{"altText":1805,"config":1806},"GitLab-Symbol",{"src":1807,"dataGaName":1808,"dataGaLocation":1803},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1805,"config":1810},{"src":1811,"dataGaName":1808,"dataGaLocation":1803},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1583,"config":1813},{"href":1814,"dataGaName":1815,"dataGaLocation":1803},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":1817,"mobileIcon":1821,"desktopIcon":1823},{"text":1818,"config":1819},"Mehr über GitLab Duo erfahren",{"href":1455,"dataGaName":1820,"dataGaLocation":1803},"gitlab duo",{"altText":1805,"config":1822},{"src":1807,"dataGaName":1808,"dataGaLocation":1803},{"altText":1805,"config":1824},{"src":1811,"dataGaName":1808,"dataGaLocation":1803},{"button":1826,"mobileIcon":1831,"desktopIcon":1833},{"text":1827,"config":1828},"/Option",{"href":1829,"dataGaName":1830,"dataGaLocation":1803},"#contact","switch",{"altText":1805,"config":1832},{"src":1807,"dataGaName":1808,"dataGaLocation":1803},{"altText":1805,"config":1834},{"src":1835,"dataGaName":1808,"dataGaLocation":1803},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1837,"mobileIcon":1842,"desktopIcon":1844},{"text":1838,"config":1839},"Zurück zur Preisübersicht",{"href":1570,"dataGaName":1840,"dataGaLocation":1803,"icon":1841},"back to pricing","GoBack",{"altText":1805,"config":1843},{"src":1807,"dataGaName":1808,"dataGaLocation":1803},{"altText":1805,"config":1845},{"src":1811,"dataGaName":1808,"dataGaLocation":1803},{"title":1847,"button":1848,"config":1852},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":1461,"config":1849},{"href":1850,"dataGaName":1851,"dataGaLocation":1419},"/de-de/gitlab-orbit/","orbit",{"layout":1853,"disabled":1403},"release",{"data":1855},{"text":1856,"source":1857,"edit":1863,"contribute":1868,"config":1873,"items":1878,"minimal":2084},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1858,"config":1859},"Quelltext der Seite anzeigen",{"href":1860,"dataGaName":1861,"dataGaLocation":1862},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1864,"config":1865},"Diese Seite bearbeiten",{"href":1866,"dataGaName":1867,"dataGaLocation":1862},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1869,"config":1870},"Beteilige dich",{"href":1871,"dataGaName":1872,"dataGaLocation":1862},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1874,"facebook":1875,"youtube":1876,"linkedin":1877},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1879,1924,1977,2019,2051],{"title":1568,"links":1880,"subMenu":1895},[1881,1885,1890],{"text":1882,"config":1883},"Tarife anzeigen",{"href":1570,"dataGaName":1884,"dataGaLocation":1862},"view plans",{"text":1886,"config":1887},"Vorteile von Premium",{"href":1888,"dataGaName":1889,"dataGaLocation":1862},"/de-de/pricing/premium/","why premium",{"text":1891,"config":1892},"Vorteile von Ultimate",{"href":1893,"dataGaName":1894,"dataGaLocation":1862},"/de-de/pricing/ultimate/","why ultimate",[1896],{"title":1743,"links":1897},[1898,1900,1902,1904,1909,1914,1919],{"text":1750,"config":1899},{"href":1752,"dataGaName":1429,"dataGaLocation":1862},{"text":1755,"config":1901},{"href":1757,"dataGaName":1758,"dataGaLocation":1862},{"text":1760,"config":1903},{"href":1762,"dataGaName":1763,"dataGaLocation":1862},{"text":1905,"config":1906},"Status",{"href":1907,"dataGaName":1908,"dataGaLocation":1862},"https://status.gitlab.com/","status",{"text":1910,"config":1911},"Nutzungsbedingungen",{"href":1912,"dataGaName":1913,"dataGaLocation":1862},"/terms/","terms of use",{"text":1915,"config":1916},"Datenschutzerklärung",{"href":1917,"dataGaName":1918,"dataGaLocation":1862},"/de-de/privacy/","privacy statement",{"text":1920,"config":1921},"Cookie-Einstellungen",{"dataGaName":1922,"dataGaLocation":1862,"id":1923,"isOneTrustButton":555},"cookie preferences","ot-sdk-btn",{"title":1466,"links":1925,"subMenu":1934},[1926,1930],{"text":1927,"config":1928},"DevSecOps-Plattform",{"href":1448,"dataGaName":1929,"dataGaLocation":1862},"devsecops platform",{"text":1931,"config":1932},"KI-unterstützte Entwicklung",{"href":1455,"dataGaName":1933,"dataGaLocation":1862},"ai-assisted development",[1935],{"title":1936,"links":1937},"Themen",[1938,1942,1947,1952,1957,1962,1967,1972],{"text":1486,"config":1939},{"href":1940,"dataGaName":1941,"dataGaLocation":1862},"/de-de/topics/ci-cd/","cicd",{"text":1943,"config":1944},"GitOps",{"href":1945,"dataGaName":1946,"dataGaLocation":1862},"/de-de/topics/gitops/","gitops",{"text":1948,"config":1949},"DevOps",{"href":1950,"dataGaName":1951,"dataGaLocation":1862},"/de-de/topics/devops/","devops",{"text":1953,"config":1954},"Versionskontrolle",{"href":1955,"dataGaName":1956,"dataGaLocation":1862},"/de-de/topics/version-control/","version control",{"text":1958,"config":1959},"DevSecOps",{"href":1960,"dataGaName":1961,"dataGaLocation":1862},"/de-de/topics/devsecops/","devsecops",{"text":1963,"config":1964},"Cloud-nativ",{"href":1965,"dataGaName":1966,"dataGaLocation":1862},"/de-de/topics/cloud-native/","cloud native",{"text":1968,"config":1969},"KI für das Programmieren",{"href":1970,"dataGaName":1971,"dataGaLocation":1862},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1973,"config":1974},"Agentische KI",{"href":1975,"dataGaName":1976,"dataGaLocation":1862},"/de-de/topics/agentic-ai/","agentic ai",{"title":1978,"links":1979},"Lösungen",[1980,1983,1985,1990,1994,1997,2000,2003,2005,2007,2009,2014],{"text":1511,"config":1981},{"href":1506,"dataGaName":1982,"dataGaLocation":1862},"Application Security Testing",{"text":1498,"config":1984},{"href":1482,"dataGaName":1483,"dataGaLocation":1862},{"text":1986,"config":1987},"Agile Entwicklung",{"href":1988,"dataGaName":1989,"dataGaLocation":1862},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1991,"config":1992},"SCM",{"href":1495,"dataGaName":1993,"dataGaLocation":1862},"source code management",{"text":1486,"config":1995},{"href":1488,"dataGaName":1996,"dataGaLocation":1862},"continuous integration & delivery",{"text":1537,"config":1998},{"href":1539,"dataGaName":1999,"dataGaLocation":1862},"value stream management",{"text":1943,"config":2001},{"href":2002,"dataGaName":1946,"dataGaLocation":1862},"/de-de/solutions/gitops/",{"text":1550,"config":2004},{"href":1553,"dataGaName":1554,"dataGaLocation":1862},{"text":1556,"config":2006},{"href":1559,"dataGaName":1560,"dataGaLocation":1862},{"text":1562,"config":2008},{"href":1565,"dataGaName":1566,"dataGaLocation":1862},{"text":2010,"config":2011},"Bildungswesen",{"href":2012,"dataGaName":2013,"dataGaLocation":1862},"/de-de/solutions/education/","education",{"text":2015,"config":2016},"Finanzdienstleistungen",{"href":2017,"dataGaName":2018,"dataGaLocation":1862},"/de-de/solutions/finance/","financial services",{"title":1573,"links":2020},[2021,2023,2025,2027,2030,2032,2035,2037,2039,2041,2043,2045,2047,2049],{"text":1586,"config":2022},{"href":1588,"dataGaName":1589,"dataGaLocation":1862},{"text":1591,"config":2024},{"href":1593,"dataGaName":1594,"dataGaLocation":1862},{"text":1596,"config":2026},{"href":1598,"dataGaName":1599,"dataGaLocation":1862},{"text":1601,"config":2028},{"href":1603,"dataGaName":2029,"dataGaLocation":1862},"docs",{"text":1624,"config":2031},{"href":1626,"dataGaName":1627,"dataGaLocation":1862},{"text":2033,"config":2034},"Neuerungen",{"href":1684,"dataGaName":1685,"dataGaLocation":1862},{"text":1619,"config":2036},{"href":1621,"dataGaName":1622,"dataGaLocation":1862},{"text":1638,"config":2038},{"href":1640,"dataGaName":1641,"dataGaLocation":1862},{"text":1646,"config":2040},{"href":1648,"dataGaName":1649,"dataGaLocation":1862},{"text":1651,"config":2042},{"href":1653,"dataGaName":1654,"dataGaLocation":1862},{"text":1656,"config":2044},{"href":1658,"dataGaName":1659,"dataGaLocation":1862},{"text":1661,"config":2046},{"href":1663,"dataGaName":1664,"dataGaLocation":1862},{"text":1666,"config":2048},{"href":1668,"dataGaName":1669,"dataGaLocation":1862},{"text":1671,"config":2050},{"href":1673,"dataGaName":1674,"dataGaLocation":1862},{"title":1687,"links":2052},[2053,2055,2057,2059,2061,2063,2068,2073,2075,2077,2079],{"text":1695,"config":2054},{"href":1697,"dataGaName":1689,"dataGaLocation":1862},{"text":1700,"config":2056},{"href":1702,"dataGaName":1703,"dataGaLocation":1862},{"text":1708,"config":2058},{"href":1710,"dataGaName":1711,"dataGaLocation":1862},{"text":1713,"config":2060},{"href":1715,"dataGaName":1716,"dataGaLocation":1862},{"text":1718,"config":2062},{"href":1720,"dataGaName":1721,"dataGaLocation":1862},{"text":2064,"config":2065},"Nachhaltigkeit",{"href":2066,"dataGaName":2067,"dataGaLocation":1862},"/sustainability/","Sustainability",{"text":2069,"config":2070},"Vielfalt, Inklusion und Zugehörigkeit",{"href":2071,"dataGaName":2072,"dataGaLocation":1862},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1723,"config":2074},{"href":1725,"dataGaName":1726,"dataGaLocation":1862},{"text":1733,"config":2076},{"href":1735,"dataGaName":1736,"dataGaLocation":1862},{"text":1738,"config":2078},{"href":1740,"dataGaName":1741,"dataGaLocation":1862},{"text":2080,"config":2081},"Transparenzerklärung zu moderner Sklaverei",{"href":2082,"dataGaName":2083,"dataGaLocation":1862},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":2085},[2086,2089,2092],{"text":2087,"config":2088},"Terms",{"href":1912,"dataGaName":1913,"dataGaLocation":1862},{"text":2090,"config":2091},"Cookies",{"dataGaName":1922,"dataGaLocation":1862,"id":1923,"isOneTrustButton":555},{"text":2093,"config":2094},"Datenschutz",{"href":1917,"dataGaName":1918,"dataGaLocation":1862},[2096],{"id":2097,"title":7,"body":1397,"config":2098,"content":2100,"description":1397,"extension":2104,"meta":2105,"navigation":555,"path":2106,"seo":2107,"stem":2108,"__hash__":2109},"blogAuthors/en-us/blog/authors/kai-armstrong.yml",{"template":2099},"BlogAuthor",{"name":7,"config":2101},{"headshot":2102,"ctfId":2103},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682535/Blog/Author%20Headshots/phikai-headshot.png","phikai","yml",{},"/en-us/blog/authors/kai-armstrong",{},"en-us/blog/authors/kai-armstrong","Y-yZG9fBOoKU-_K9heV2LiGg7xuWxyCx1fnfpM9-82g",[2111,2119,2127],{"title":2112,"description":2113,"heroImage":2114,"category":1393,"date":2115,"authors":2116,"slug":2118,"externalUrl":1397},"Wie ich einen Demo-Generator mit Duo Agent Platform baute","So sahen Demos nicht immer aus. Ein Rückblick auf ihre Entwicklung, plus ein Tutorial zum Bau einer eigenen Demo und eines eigenen Agenten.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-08-13",[2117],"Itzik Gan Baruch","agentic-click-through-demo",{"title":2120,"description":2121,"heroImage":2122,"category":1393,"date":2123,"authors":2124,"slug":2126,"externalUrl":1397},"Governance für agentische KI, MCPs und KI-Code-Assistenten","KI-Agenten schreiben, pushen und deployen, ohne dass jeder Schritt geprüft wird. Ein praktisches Framework für Zugriff, Berechtigungen und Audit-Trails.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1785337625/ifzlc2hyzaxhzmjgyymh.png","2026-07-31",[2125],"Julie Griffin","govern-agentic-ai-mcps-code-assistants",{"title":2128,"description":2129,"heroImage":2130,"category":1393,"date":2131,"authors":2132,"slug":2134,"externalUrl":1397},"Claude Opus 5 auf GitLab: Reasoning für die anspruchsvollsten Aufgaben","Anthropics Claude Opus 5 ist jetzt auf der GitLab Duo Agent Platform verfügbar und bringt tieferes Reasoning für die anspruchsvollsten Aufgaben.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-07-27",[2133],"Brittany Lutz","claude-opus-5-on-gitlab-duo-agent-platform",{"promotions":2136},[2137,2150,2161,2173],{"id":2138,"categories":2139,"header":2140,"text":2141,"button":2142,"image":2147},"ai-modernization",[1393],"Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":2143,"config":2144},"Ermittle deinen KI-Reifegrad",{"href":2145,"dataGaName":2146,"dataGaLocation":1627},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":2148},{"src":2149},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":2151,"categories":2152,"header":2153,"text":2141,"button":2154,"image":2158},"devops-modernization",[1410,1961],"Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":2155,"config":2156},"Ermittle deinen DevOps-Reifegrad",{"href":2157,"dataGaName":2146,"dataGaLocation":1627},"/de-de/assessments/devops-modernization-assessment/",{"config":2159},{"src":2160},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":2162,"categories":2163,"header":2165,"text":2141,"button":2166,"image":2170},"security-modernization",[2164],"security","Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":2167,"config":2168},"Ermittle deinen Sicherheitsreifegrad",{"href":2169,"dataGaName":2146,"dataGaLocation":1627},"/de-de/assessments/security-modernization-assessment/",{"config":2171},{"src":2172},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":2174,"paths":2175,"header":2178,"text":2179,"button":2180,"image":2185},"github-azure-migration",[2176,2177],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Ist dein Team bereit für den Umzug von GitHub nach Azure?","GitHub stellt bereits auf Azure um. Finde heraus, was das für dich bedeutet.",{"text":2181,"config":2182},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":2183,"dataGaName":2184,"dataGaLocation":1627},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":2186},{"src":2160},{"header":2188,"blurb":2189,"button":2190,"secondaryButton":2195},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":2191,"config":2192},"Kostenlosen Test starten",{"href":2193,"dataGaName":1424,"dataGaLocation":2194},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":1750,"config":2196},{"href":1752,"dataGaName":1429,"dataGaLocation":2194},1786803749453]