[{"data":1,"prerenderedAt":1695},["ShallowReactive",2],{"blog-blog_en-page-1":3},{"posts":4,"totalPosts":597,"totalPages":188,"currentPage":148},[5,299,660,880,1167,1429],{"id":6,"title":7,"body":8,"cover":283,"date":284,"description":285,"draft":286,"extension":287,"meta":288,"navigation":289,"path":290,"seo":291,"stem":292,"tags":293,"__hash__":298},"blog_en\u002Fen\u002Fblog\u002Fopen-vsx-registry-300-million-downloads-supply-chain-sicherheit.md","Open VSX: 300 Million Downloads and New Supply-Chain Protections",{"type":9,"value":10,"toc":278},"minimark",[11,32,37,40,87,94,98,101,127,135,256,260,274],[12,13,14,15,19,20,23,24,27,28,31],"p",{},"Extension registries have shifted from background services to critical infrastructure. In early March 2026, the Open VSX Registry reported more than ",[16,17,18],"strong",{},"300 million downloads per month",", peak traffic above ",[16,21,22],{},"50 million requests per day",", and an ecosystem with ",[16,25,26],{},"thousands of publishers"," and ",[16,29,30],{},"tens of thousands of extensions",".",[33,34,36],"h2",{"id":35},"what-changes-in-registry-operations","What Changes in Registry Operations",[12,38,39],{},"At this scale, registry capabilities resemble practices from mature package ecosystems:",[41,42,43,58,68,74,80],"ul",{},[44,45,46,49,50,53,54,57],"li",{},[16,47,48],{},"Pre-publication verification"," to detect ",[16,51,52],{},"namespace impersonation",", ",[16,55,56],{},"spoofing",", and suspicious uploads",[44,59,60,61,64,65],{},"Checks for ",[16,62,63],{},"exposed credentials"," and recurring ",[16,66,67],{},"malicious patterns",[44,69,70,73],{},[16,71,72],{},"Quarantine & review"," for flagged packages before publication",[44,75,76,79],{},[16,77,78],{},"Responsible rate limiting"," and traffic management for automated spikes",[44,81,82,83,86],{},"A move toward ",[16,84,85],{},"hybrid multi-region architecture"," with encrypted data and backups",[12,88,89],{},[90,91],"img",{"alt":92,"src":93},"Diagram: Publish → Verify → Distribute","\u002Fimg\u002Fblog\u002Fopen-vsx-registry-300-million-downloads-supply-chain-sicherheit-diagram.svg",[33,95,97],{"id":96},"implications-for-cicd-and-enterprise-governance","Implications for CI\u002FCD and Enterprise Governance",[12,99,100],{},"When IDE extensions become part of production development workflows, standard supply-chain controls apply:",[41,102,103,109,115,121],{},[44,104,105,108],{},[16,106,107],{},"Allowlists"," for publishers and extension IDs",[44,110,111,114],{},[16,112,113],{},"Mirroring"," into internal registries for reproducible builds",[44,116,117,120],{},[16,118,119],{},"Signatures, SBOMs, and malware scanning"," as gates before rollout",[44,122,123,126],{},[16,124,125],{},"Audit logs"," for installs and automated updates",[12,128,129,130,134],{},"A common pattern is a CI stage that validates a ",[131,132,133],"code",{},".vsix"," artifact before it is promoted:",[136,137,142],"pre",{"className":138,"code":139,"language":140,"meta":141,"style":141},"language-yaml shiki shiki-themes github-light github-dark","name: extension-verify\non: [workflow_dispatch]\njobs:\n  verify:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Scan VSIX archive\n        run: |\n          unzip -l extension.vsix | head -n 50\n          gitleaks detect --no-git --source .\n          trivy fs --severity HIGH,CRITICAL .\n","yaml","",[131,143,144,161,177,186,194,205,213,226,238,244,250],{"__ignoreMap":141},[145,146,149,153,157],"span",{"class":147,"line":148},"line",1,[145,150,152],{"class":151},"s9eBZ","name",[145,154,156],{"class":155},"sVt8B",": ",[145,158,160],{"class":159},"sZZnC","extension-verify\n",[145,162,164,168,171,174],{"class":147,"line":163},2,[145,165,167],{"class":166},"sj4cs","on",[145,169,170],{"class":155},": [",[145,172,173],{"class":159},"workflow_dispatch",[145,175,176],{"class":155},"]\n",[145,178,180,183],{"class":147,"line":179},3,[145,181,182],{"class":151},"jobs",[145,184,185],{"class":155},":\n",[145,187,189,192],{"class":147,"line":188},4,[145,190,191],{"class":151},"  verify",[145,193,185],{"class":155},[145,195,197,200,202],{"class":147,"line":196},5,[145,198,199],{"class":151},"    runs-on",[145,201,156],{"class":155},[145,203,204],{"class":159},"ubuntu-latest\n",[145,206,208,211],{"class":147,"line":207},6,[145,209,210],{"class":151},"    steps",[145,212,185],{"class":155},[145,214,216,219,221,223],{"class":147,"line":215},7,[145,217,218],{"class":155},"      - ",[145,220,152],{"class":151},[145,222,156],{"class":155},[145,224,225],{"class":159},"Scan VSIX archive\n",[145,227,229,232,234],{"class":147,"line":228},8,[145,230,231],{"class":151},"        run",[145,233,156],{"class":155},[145,235,237],{"class":236},"szBVR","|\n",[145,239,241],{"class":147,"line":240},9,[145,242,243],{"class":159},"          unzip -l extension.vsix | head -n 50\n",[145,245,247],{"class":147,"line":246},10,[145,248,249],{"class":159},"          gitleaks detect --no-git --source .\n",[145,251,253],{"class":147,"line":252},11,[145,254,255],{"class":159},"          trivy fs --severity HIGH,CRITICAL .\n",[33,257,259],{"id":258},"why-this-matters","Why This Matters",[12,261,262,263,53,266,269,270,273],{},"With the rise of cloud IDEs and agentic development workflows, extension distribution becomes a central attack and failure domain. Combining ",[16,264,265],{},"publication-time checks",[16,267,268],{},"scalable infrastructure",", and ",[16,271,272],{},"operational security processes"," reduces risk while keeping the ecosystem vendor-neutral and open.",[275,276,277],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":141,"searchDepth":163,"depth":163,"links":279},[280,281,282],{"id":35,"depth":163,"text":36},{"id":96,"depth":163,"text":97},{"id":258,"depth":163,"text":259},"\u002Fimg\u002Fblog\u002Fopen-vsx-registry-300-million-downloads-supply-chain-sicherheit-cover.jpg","2026-04-08","Open VSX scales to hundreds of millions of monthly downloads and introduces pre-publication verification and multi-region operations.",false,"md",{},true,"\u002Fen\u002Fblog\u002Fopen-vsx-registry-300-million-downloads-supply-chain-sicherheit",{"title":7,"description":285},"en\u002Fblog\u002Fopen-vsx-registry-300-million-downloads-supply-chain-sicherheit",[294,295,296,297],"Developer Tools","Supply Chain Security","Open Source","Ecosystem","6I3_GD4bvBpyw2ePjtCb_ng-GzTuxnQW2qInKGr5DAk",{"id":300,"title":301,"body":302,"cover":648,"date":649,"description":650,"draft":286,"extension":287,"meta":651,"navigation":289,"path":652,"seo":653,"stem":654,"tags":655,"__hash__":659},"blog_en\u002Fen\u002Fblog\u002Fkubernetes-gateway-api-networking-neu-gedacht.md","Kubernetes Gateway API: Networking Reimagined",{"type":9,"value":303,"toc":643},[304,314,318,324,350,370,376,380,396,399,614,621,623,640],[12,305,306,307,310,311,31],{},"The classic Ingress resource has shaped Kubernetes networking for years. With the ",[16,308,309],{},"Gateway API",", which reached GA status with version 1.0 (October 2023) and now stands at version 1.3, a significantly more powerful successor is available. At the same time, SIG Network has announced that ",[16,312,313],{},"Ingress-NGINX will move to best-effort maintenance starting March 2026",[33,315,317],{"id":316},"what-is-the-gateway-api","What is the Gateway API?",[12,319,320,321,323],{},"The ",[16,322,309],{}," is a collection of Kubernetes resources that provide a more expressive and extensible networking model. Unlike Ingress, the Gateway API natively supports:",[41,325,326,332,338,344],{},[44,327,328,331],{},[16,329,330],{},"HTTP routing"," with header-based matching, path rewriting, and traffic splitting",[44,333,334,337],{},[16,335,336],{},"TLS termination and re-encryption"," at the gateway level",[44,339,340,343],{},[16,341,342],{},"Role-oriented design"," - Infrastructure teams manage Gateways, application teams define Routes",[44,345,346,349],{},[16,347,348],{},"Extensibility"," through standardized extension points instead of proprietary annotations",[12,351,352,353,53,356,53,359,269,362,365,366,369],{},"Version 1.3 (June 2025) introduced further capabilities including ",[16,354,355],{},"percentage-based request mirroring",[16,357,358],{},"CORS filters",[16,360,361],{},"Gateway merging",[16,363,364],{},"retry budgets",". The ",[16,367,368],{},"Ingress2Gateway"," tool (v1.0, March 2026) simplifies migration of existing Ingress resources.",[12,371,372],{},[90,373],{"alt":374,"src":375},"Comparison: Ingress vs. Gateway API","\u002Fimg\u002Fblog\u002Fkubernetes-gateway-api-vergleich.png",[33,377,379],{"id":378},"differences-from-ingress","Differences from Ingress",[12,381,382,383,386,387,53,390,269,393,31],{},"A key difference lies in the ",[16,384,385],{},"separation of concerns",". While Ingress bundles all configuration into a single resource, the Gateway API distributes responsibilities across three levels: ",[16,388,389],{},"GatewayClass",[16,391,392],{},"Gateway",[16,394,395],{},"HTTPRoute",[12,397,398],{},"A typical HTTPRoute definition:",[136,400,402],{"className":138,"code":401,"language":140,"meta":141,"style":141},"apiVersion: gateway.networking.k8s.io\u002Fv1\nkind: HTTPRoute\nmetadata:\n  name: app-route\n  namespace: production\nspec:\n  parentRefs:\n    - name: main-gateway\n  hostnames:\n    - \"app.example.com\"\n  rules:\n    - matches:\n        - path:\n            type: PathPrefix\n            value: \u002Fapi\n      backendRefs:\n        - name: api-service\n          port: 8080\n          weight: 90\n        - name: api-service-canary\n          port: 8080\n          weight: 10\n",[131,403,404,414,424,431,441,451,458,465,477,484,491,498,508,519,530,541,549,561,572,583,595,604],{"__ignoreMap":141},[145,405,406,409,411],{"class":147,"line":148},[145,407,408],{"class":151},"apiVersion",[145,410,156],{"class":155},[145,412,413],{"class":159},"gateway.networking.k8s.io\u002Fv1\n",[145,415,416,419,421],{"class":147,"line":163},[145,417,418],{"class":151},"kind",[145,420,156],{"class":155},[145,422,423],{"class":159},"HTTPRoute\n",[145,425,426,429],{"class":147,"line":179},[145,427,428],{"class":151},"metadata",[145,430,185],{"class":155},[145,432,433,436,438],{"class":147,"line":188},[145,434,435],{"class":151},"  name",[145,437,156],{"class":155},[145,439,440],{"class":159},"app-route\n",[145,442,443,446,448],{"class":147,"line":196},[145,444,445],{"class":151},"  namespace",[145,447,156],{"class":155},[145,449,450],{"class":159},"production\n",[145,452,453,456],{"class":147,"line":207},[145,454,455],{"class":151},"spec",[145,457,185],{"class":155},[145,459,460,463],{"class":147,"line":215},[145,461,462],{"class":151},"  parentRefs",[145,464,185],{"class":155},[145,466,467,470,472,474],{"class":147,"line":228},[145,468,469],{"class":155},"    - ",[145,471,152],{"class":151},[145,473,156],{"class":155},[145,475,476],{"class":159},"main-gateway\n",[145,478,479,482],{"class":147,"line":240},[145,480,481],{"class":151},"  hostnames",[145,483,185],{"class":155},[145,485,486,488],{"class":147,"line":246},[145,487,469],{"class":155},[145,489,490],{"class":159},"\"app.example.com\"\n",[145,492,493,496],{"class":147,"line":252},[145,494,495],{"class":151},"  rules",[145,497,185],{"class":155},[145,499,501,503,506],{"class":147,"line":500},12,[145,502,469],{"class":155},[145,504,505],{"class":151},"matches",[145,507,185],{"class":155},[145,509,511,514,517],{"class":147,"line":510},13,[145,512,513],{"class":155},"        - ",[145,515,516],{"class":151},"path",[145,518,185],{"class":155},[145,520,522,525,527],{"class":147,"line":521},14,[145,523,524],{"class":151},"            type",[145,526,156],{"class":155},[145,528,529],{"class":159},"PathPrefix\n",[145,531,533,536,538],{"class":147,"line":532},15,[145,534,535],{"class":151},"            value",[145,537,156],{"class":155},[145,539,540],{"class":159},"\u002Fapi\n",[145,542,544,547],{"class":147,"line":543},16,[145,545,546],{"class":151},"      backendRefs",[145,548,185],{"class":155},[145,550,552,554,556,558],{"class":147,"line":551},17,[145,553,513],{"class":155},[145,555,152],{"class":151},[145,557,156],{"class":155},[145,559,560],{"class":159},"api-service\n",[145,562,564,567,569],{"class":147,"line":563},18,[145,565,566],{"class":151},"          port",[145,568,156],{"class":155},[145,570,571],{"class":166},"8080\n",[145,573,575,578,580],{"class":147,"line":574},19,[145,576,577],{"class":151},"          weight",[145,579,156],{"class":155},[145,581,582],{"class":166},"90\n",[145,584,586,588,590,592],{"class":147,"line":585},20,[145,587,513],{"class":155},[145,589,152],{"class":151},[145,591,156],{"class":155},[145,593,594],{"class":159},"api-service-canary\n",[145,596,598,600,602],{"class":147,"line":597},21,[145,599,566],{"class":151},[145,601,156],{"class":155},[145,603,571],{"class":166},[145,605,607,609,611],{"class":147,"line":606},22,[145,608,577],{"class":151},[145,610,156],{"class":155},[145,612,613],{"class":166},"10\n",[12,615,616,617,620],{},"This route directs traffic for ",[131,618,619],{},"\u002Fapi"," to two backend services - 90 percent to the stable version, 10 percent to the canary version. Such traffic splits require external tools or controller-specific annotations with Ingress.",[33,622,259],{"id":258},[12,624,625,626,53,629,53,632,635,636,639],{},"With the phased retirement of Ingress-NGINX and growing support from implementations such as ",[16,627,628],{},"Istio",[16,630,631],{},"Envoy Gateway",[16,633,634],{},"NGINX Gateway Fabric",", and the ",[16,637,638],{},"AWS Load Balancer Controller",", the Gateway API is becoming the new standard for Kubernetes networking. The role-oriented architecture enables a clearer separation between platform and application teams - a decisive advantage in larger organizations.",[275,641,642],{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":141,"searchDepth":163,"depth":163,"links":644},[645,646,647],{"id":316,"depth":163,"text":317},{"id":378,"depth":163,"text":379},{"id":258,"depth":163,"text":259},"\u002Fimg\u002Fblog\u002Fkubernetes-gateway-api-cover.jpg","2026-04-07","The Gateway API replaces Ingress as the standard for Kubernetes networking with a more expressive, role-oriented model.",{},"\u002Fen\u002Fblog\u002Fkubernetes-gateway-api-networking-neu-gedacht",{"title":301,"description":650},"en\u002Fblog\u002Fkubernetes-gateway-api-networking-neu-gedacht",[656,309,657,658],"Kubernetes","Cloud-Native","DevOps","tPMitMSJjOfZwoU1Qt9NyxjEygGRSpIHAunRDNvgOio",{"id":661,"title":662,"body":663,"cover":868,"date":869,"description":870,"draft":286,"extension":287,"meta":871,"navigation":289,"path":872,"seo":873,"stem":874,"tags":875,"__hash__":879},"blog_en\u002Fen\u002Fblog\u002Fsouveraener-datenaustausch-mit-catena-x.md","Sovereign Data Exchange with Catena-X",{"type":9,"value":664,"toc":863},[665,668,672,675,679,686,706,709,715,718,852,854,857,860],[12,666,667],{},"The automotive industry faces a core challenge: How can data be exchanged securely and sovereignly along the entire value chain without losing control over your own data?",[33,669,671],{"id":670},"what-is-catena-x","What is Catena-X?",[12,673,674],{},"Catena-X is an open data ecosystem for the automotive industry. It provides a standardized framework in which companies can share data while maintaining full data sovereignty. This means every participant decides who gets access to which data and under what conditions.",[33,676,678],{"id":677},"the-role-of-eclipse-dataspace-components","The Role of Eclipse Dataspace Components",[12,680,681,682,685],{},"The technical foundation is provided by the ",[16,683,684],{},"Eclipse Dataspace Components (EDC)",". They implement the Dataspace Protocol and enable:",[41,687,688,694,700],{},[44,689,690,693],{},[16,691,692],{},"Connectors"," for secure data exchange between participants",[44,695,696,699],{},[16,697,698],{},"Policy-based access control"," at the data level",[44,701,702,705],{},[16,703,704],{},"Decentralized architecture"," without central data storage",[12,707,708],{},"The following diagram shows the basic architecture of an EDC connector:",[12,710,711],{},[90,712],{"alt":713,"src":714},"EDC Architecture","\u002Fimg\u002Fblog\u002Fedc-architecture.png",[12,716,717],{},"A simple example of an EDC policy:",[136,719,723],{"className":720,"code":721,"language":722,"meta":141,"style":141},"language-json shiki shiki-themes github-light github-dark","{\n  \"@type\": \"PolicyDefinition\",\n  \"policy\": {\n    \"permissions\": [\n      {\n        \"action\": \"use\",\n        \"constraints\": [\n          {\n            \"leftOperand\": \"BusinessPartnerNumber\",\n            \"operator\": \"eq\",\n            \"rightOperand\": \"BPNL00000003CRHK\"\n          }\n        ]\n      }\n    ]\n  }\n}\n","json",[131,724,725,730,743,751,759,764,776,783,788,800,812,822,827,832,837,842,847],{"__ignoreMap":141},[145,726,727],{"class":147,"line":148},[145,728,729],{"class":155},"{\n",[145,731,732,735,737,740],{"class":147,"line":163},[145,733,734],{"class":166},"  \"@type\"",[145,736,156],{"class":155},[145,738,739],{"class":159},"\"PolicyDefinition\"",[145,741,742],{"class":155},",\n",[145,744,745,748],{"class":147,"line":179},[145,746,747],{"class":166},"  \"policy\"",[145,749,750],{"class":155},": {\n",[145,752,753,756],{"class":147,"line":188},[145,754,755],{"class":166},"    \"permissions\"",[145,757,758],{"class":155},": [\n",[145,760,761],{"class":147,"line":196},[145,762,763],{"class":155},"      {\n",[145,765,766,769,771,774],{"class":147,"line":207},[145,767,768],{"class":166},"        \"action\"",[145,770,156],{"class":155},[145,772,773],{"class":159},"\"use\"",[145,775,742],{"class":155},[145,777,778,781],{"class":147,"line":215},[145,779,780],{"class":166},"        \"constraints\"",[145,782,758],{"class":155},[145,784,785],{"class":147,"line":228},[145,786,787],{"class":155},"          {\n",[145,789,790,793,795,798],{"class":147,"line":240},[145,791,792],{"class":166},"            \"leftOperand\"",[145,794,156],{"class":155},[145,796,797],{"class":159},"\"BusinessPartnerNumber\"",[145,799,742],{"class":155},[145,801,802,805,807,810],{"class":147,"line":246},[145,803,804],{"class":166},"            \"operator\"",[145,806,156],{"class":155},[145,808,809],{"class":159},"\"eq\"",[145,811,742],{"class":155},[145,813,814,817,819],{"class":147,"line":252},[145,815,816],{"class":166},"            \"rightOperand\"",[145,818,156],{"class":155},[145,820,821],{"class":159},"\"BPNL00000003CRHK\"\n",[145,823,824],{"class":147,"line":500},[145,825,826],{"class":155},"          }\n",[145,828,829],{"class":147,"line":510},[145,830,831],{"class":155},"        ]\n",[145,833,834],{"class":147,"line":521},[145,835,836],{"class":155},"      }\n",[145,838,839],{"class":147,"line":532},[145,840,841],{"class":155},"    ]\n",[145,843,844],{"class":147,"line":543},[145,845,846],{"class":155},"  }\n",[145,848,849],{"class":147,"line":551},[145,850,851],{"class":155},"}\n",[33,853,259],{"id":258},[12,855,856],{},"In an increasingly connected industry, keeping data purely internal is no longer sufficient. At the same time, there need to be clear rules and technical guarantees that shared data won't be misused. Catena-X and the EDC solve exactly this tension.",[12,858,859],{},"I work with these technologies daily and build solutions that enable companies to securely enter the dataspace.",[275,861,862],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":141,"searchDepth":163,"depth":163,"links":864},[865,866,867],{"id":670,"depth":163,"text":671},{"id":677,"depth":163,"text":678},{"id":258,"depth":163,"text":259},"\u002Fimg\u002Fblog\u002Fcatena-x-cover.jpg","2026-04-06","How Catena-X and the Eclipse Dataspace Components enable secure, standardized data exchange in the automotive industry.",{},"\u002Fen\u002Fblog\u002Fsouveraener-datenaustausch-mit-catena-x",{"title":662,"description":870},"en\u002Fblog\u002Fsouveraener-datenaustausch-mit-catena-x",[876,877,878],"Catena-X","Dataspace","EDC","_YCvjH_opT2Z9RNPw-2g5B0KjbRuJgrDPTcgpwLyoIo",{"id":881,"title":882,"body":883,"cover":1155,"date":1156,"description":1157,"draft":286,"extension":287,"meta":1158,"navigation":289,"path":1159,"seo":1160,"stem":1161,"tags":1162,"__hash__":1166},"blog_en\u002Fen\u002Fblog\u002Fopentelemetry-kubernetes-semantic-conventions-release-candidate.md","OpenTelemetry: Kubernetes Semantics on the Path to Stability",{"type":9,"value":884,"toc":1150},[885,896,900,903,941,947,951,954,982,985,1132,1134,1147],[12,886,887,888,891,892,895],{},"In many observability stacks, multiple naming schemes exist for the same Kubernetes entities. In March 2026, Kubernetes-related semantic conventions progressed toward a ",[16,889,890],{},"release candidate"," to consistently represent ",[16,893,894],{},"resource attributes"," such as cluster, namespace, and pod identity.",[33,897,899],{"id":898},"what-the-semconv-update-covers","What the SemConv Update Covers",[12,901,902],{},"The consolidation focuses on exposing core Kubernetes context in a standardized way:",[41,904,905,911,921,934],{},[44,906,907,910],{},[16,908,909],{},"Cluster identity"," as resource context (for example name or ID)",[44,912,913,916,917,920],{},[16,914,915],{},"Namespace, pod, and node attributes"," under the ",[131,918,919],{},"k8s.*"," namespace",[44,922,923,924,53,927,269,930,933],{},"Clear separation between ",[16,925,926],{},"stable",[16,928,929],{},"experimental",[16,931,932],{},"deprecated"," attributes",[44,935,936,937,940],{},"Guidance on ",[16,938,939],{},"cardinality"," (for example, labels\u002Fannotations as selective, filtered signals)",[12,942,943],{},[90,944],{"alt":945,"src":946},"Diagram: k8s.* attributes connect signals","\u002Fimg\u002Fblog\u002Fopentelemetry-kubernetes-semantic-conventions-release-candidate-diagram.svg",[33,948,950],{"id":949},"migrating-collector-and-instrumentation","Migrating Collector and Instrumentation",[12,952,953],{},"In practice, migration often happens in the collector so applications contain less project-specific mapping logic:",[41,955,956,962,975],{},[44,957,958,961],{},[16,959,960],{},"Resource detection"," for cluster and node context",[44,963,320,964,967,968,53,971,974],{},[131,965,966],{},"k8sattributes"," processor to enrich ",[131,969,970],{},"k8s.namespace.name",[131,972,973],{},"k8s.pod.name",", and related fields",[44,976,977,978,981],{},"Explicit filters to limit ",[16,979,980],{},"high-cardinality"," label\u002Fannotation extraction",[12,983,984],{},"Example configuration for an OpenTelemetry Collector:",[136,986,988],{"className":138,"code":987,"language":140,"meta":141,"style":141},"processors:\n  k8sattributes:\n    auth_type: serviceAccount\n    extract:\n      metadata:\n        - k8s.namespace.name\n        - k8s.pod.name\n        - k8s.node.name\n  resource:\n    attributes:\n      - key: k8s.cluster.name\n        value: \"production-eu-1\"\n        action: upsert\nservice:\n  pipelines:\n    traces:\n      processors: [k8sattributes, resource]\n",[131,989,990,997,1004,1014,1021,1028,1035,1042,1049,1056,1063,1075,1085,1095,1102,1109,1116],{"__ignoreMap":141},[145,991,992,995],{"class":147,"line":148},[145,993,994],{"class":151},"processors",[145,996,185],{"class":155},[145,998,999,1002],{"class":147,"line":163},[145,1000,1001],{"class":151},"  k8sattributes",[145,1003,185],{"class":155},[145,1005,1006,1009,1011],{"class":147,"line":179},[145,1007,1008],{"class":151},"    auth_type",[145,1010,156],{"class":155},[145,1012,1013],{"class":159},"serviceAccount\n",[145,1015,1016,1019],{"class":147,"line":188},[145,1017,1018],{"class":151},"    extract",[145,1020,185],{"class":155},[145,1022,1023,1026],{"class":147,"line":196},[145,1024,1025],{"class":151},"      metadata",[145,1027,185],{"class":155},[145,1029,1030,1032],{"class":147,"line":207},[145,1031,513],{"class":155},[145,1033,1034],{"class":159},"k8s.namespace.name\n",[145,1036,1037,1039],{"class":147,"line":215},[145,1038,513],{"class":155},[145,1040,1041],{"class":159},"k8s.pod.name\n",[145,1043,1044,1046],{"class":147,"line":228},[145,1045,513],{"class":155},[145,1047,1048],{"class":159},"k8s.node.name\n",[145,1050,1051,1054],{"class":147,"line":240},[145,1052,1053],{"class":151},"  resource",[145,1055,185],{"class":155},[145,1057,1058,1061],{"class":147,"line":246},[145,1059,1060],{"class":151},"    attributes",[145,1062,185],{"class":155},[145,1064,1065,1067,1070,1072],{"class":147,"line":252},[145,1066,218],{"class":155},[145,1068,1069],{"class":151},"key",[145,1071,156],{"class":155},[145,1073,1074],{"class":159},"k8s.cluster.name\n",[145,1076,1077,1080,1082],{"class":147,"line":500},[145,1078,1079],{"class":151},"        value",[145,1081,156],{"class":155},[145,1083,1084],{"class":159},"\"production-eu-1\"\n",[145,1086,1087,1090,1092],{"class":147,"line":510},[145,1088,1089],{"class":151},"        action",[145,1091,156],{"class":155},[145,1093,1094],{"class":159},"upsert\n",[145,1096,1097,1100],{"class":147,"line":521},[145,1098,1099],{"class":151},"service",[145,1101,185],{"class":155},[145,1103,1104,1107],{"class":147,"line":532},[145,1105,1106],{"class":151},"  pipelines",[145,1108,185],{"class":155},[145,1110,1111,1114],{"class":147,"line":543},[145,1112,1113],{"class":151},"    traces",[145,1115,185],{"class":155},[145,1117,1118,1121,1123,1125,1127,1130],{"class":147,"line":551},[145,1119,1120],{"class":151},"      processors",[145,1122,170],{"class":155},[145,1124,966],{"class":159},[145,1126,53],{"class":155},[145,1128,1129],{"class":159},"resource",[145,1131,176],{"class":155},[33,1133,259],{"id":258},[12,1135,1136,1137,53,1140,269,1143,1146],{},"Standard Kubernetes attributes reduce mapping overhead, make dashboards consistent, and enable reliable cross-links between ",[16,1138,1139],{},"metrics",[16,1141,1142],{},"logs",[16,1144,1145],{},"traces",". That consistency is a prerequisite for portable observability strategies across teams, clusters, and vendors.",[275,1148,1149],{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":141,"searchDepth":163,"depth":163,"links":1151},[1152,1153,1154],{"id":898,"depth":163,"text":899},{"id":949,"depth":163,"text":950},{"id":258,"depth":163,"text":259},"\u002Fimg\u002Fblog\u002Fopentelemetry-kubernetes-semantic-conventions-release-candidate-cover.jpg","2026-04-05","OpenTelemetry consolidates Kubernetes resource attributes as a release candidate to standardize correlation across logs, metrics, and traces.",{},"\u002Fen\u002Fblog\u002Fopentelemetry-kubernetes-semantic-conventions-release-candidate",{"title":882,"description":1157},"en\u002Fblog\u002Fopentelemetry-kubernetes-semantic-conventions-release-candidate",[1163,656,1164,1165],"OpenTelemetry","Observability","Standards","d2zYn5bflunNbugVCvF1zpSVEYauGqmCKmhPFyGE1Aw",{"id":1168,"title":1169,"body":1170,"cover":1417,"date":1418,"description":1419,"draft":286,"extension":287,"meta":1420,"navigation":289,"path":1421,"seo":1422,"stem":1423,"tags":1424,"__hash__":1428},"blog_en\u002Fen\u002Fblog\u002Fcursor-automations-agenten-mit-triggers-und-mcp.md","Cursor Automations: Always-on Agents with Triggers and Webhooks",{"type":9,"value":1171,"toc":1412},[1172,1194,1198,1201,1240,1246,1250,1253,1291,1294,1388,1391,1393,1410],[12,1173,1174,1175,1178,1179,53,1182,53,1185,53,1188,269,1191,31],{},"Agentic developer tools are increasingly operated as event-driven systems. With ",[16,1176,1177],{},"Automations"," (announced in early March 2026), Cursor extends the agent model with runs triggered by schedules or events from tools such as ",[16,1180,1181],{},"GitHub",[16,1183,1184],{},"Slack",[16,1186,1187],{},"Linear",[16,1189,1190],{},"PagerDuty",[16,1192,1193],{},"webhooks",[33,1195,1197],{"id":1196},"how-automations-work-technically","How Automations Work Technically",[12,1199,1200],{},"The core is a standardized flow from event to output:",[41,1202,1203,1210,1213,1219,1226,1233],{},[44,1204,1205,1206,1209],{},"A ",[16,1207,1208],{},"trigger"," starts a run based on a schedule or external event",[44,1211,1212],{},"Schedules and events can be combined in the same workflow (for example nightly + on-incident)",[44,1214,1215,1216],{},"The agent executes inside an isolated ",[16,1217,1218],{},"cloud sandbox",[44,1220,1221,1222,1225],{},"Tool and system access is mediated through configured ",[16,1223,1224],{},"MCPs"," (Model Context Protocols)",[44,1227,1228,1229,1232],{},"Results are published as a ",[16,1230,1231],{},"pull request",", comment, ticket update, or report",[44,1234,1235,1236,1239],{},"Optional ",[16,1237,1238],{},"state"," via memory\u002Fcontext so recurring runs remain consistent",[12,1241,1242],{},[90,1243],{"alt":1244,"src":1245},"Diagram: Trigger → Sandbox Run → Output","\u002Fimg\u002Fblog\u002Fcursor-automations-agenten-mit-triggers-und-mcp-diagram.svg",[33,1247,1249],{"id":1248},"enterprise-control-points","Enterprise Control Points",[12,1251,1252],{},"For trigger-driven agents, three control areas become central:",[41,1254,1255,1261,1267,1273,1279,1285],{},[44,1256,1257,1260],{},[16,1258,1259],{},"Permissions",": least-privilege access to repos, issues, and deployments",[44,1262,1263,1266],{},[16,1264,1265],{},"Secrets",": separation of runtime secrets from LLM inputs, rotation and scoping",[44,1268,1269,1272],{},[16,1270,1271],{},"Traceability",": audit logs for prompts, tool calls, and diffs",[44,1274,1275,1278],{},[16,1276,1277],{},"Quality gates",": reviews, tests, and policy checks before merge\u002Frelease",[44,1280,1281,1284],{},[16,1282,1283],{},"Data handling",": retention, data residency requirements, and access to internal artifacts",[44,1286,1287,1290],{},[16,1288,1289],{},"Model routing",": selecting models per automation and central policy for tool calls",[12,1292,1293],{},"A neutral run contract can capture technical boundaries as a data model:",[136,1295,1297],{"className":720,"code":1296,"language":722,"meta":141,"style":141},"{\n  \"automation\": \"nightly-security-scan\",\n  \"allowedPaths\": [\"src\u002F\", \"infra\u002F\"],\n  \"maxDiffLines\": 600,\n  \"requiresReview\": true,\n  \"outputs\": [\"pull_request\", \"report\"],\n  \"secretsPolicy\": \"no-secrets-in-prompts\"\n}\n",[131,1298,1299,1303,1315,1333,1345,1357,1374,1384],{"__ignoreMap":141},[145,1300,1301],{"class":147,"line":148},[145,1302,729],{"class":155},[145,1304,1305,1308,1310,1313],{"class":147,"line":163},[145,1306,1307],{"class":166},"  \"automation\"",[145,1309,156],{"class":155},[145,1311,1312],{"class":159},"\"nightly-security-scan\"",[145,1314,742],{"class":155},[145,1316,1317,1320,1322,1325,1327,1330],{"class":147,"line":179},[145,1318,1319],{"class":166},"  \"allowedPaths\"",[145,1321,170],{"class":155},[145,1323,1324],{"class":159},"\"src\u002F\"",[145,1326,53],{"class":155},[145,1328,1329],{"class":159},"\"infra\u002F\"",[145,1331,1332],{"class":155},"],\n",[145,1334,1335,1338,1340,1343],{"class":147,"line":188},[145,1336,1337],{"class":166},"  \"maxDiffLines\"",[145,1339,156],{"class":155},[145,1341,1342],{"class":166},"600",[145,1344,742],{"class":155},[145,1346,1347,1350,1352,1355],{"class":147,"line":196},[145,1348,1349],{"class":166},"  \"requiresReview\"",[145,1351,156],{"class":155},[145,1353,1354],{"class":166},"true",[145,1356,742],{"class":155},[145,1358,1359,1362,1364,1367,1369,1372],{"class":147,"line":207},[145,1360,1361],{"class":166},"  \"outputs\"",[145,1363,170],{"class":155},[145,1365,1366],{"class":159},"\"pull_request\"",[145,1368,53],{"class":155},[145,1370,1371],{"class":159},"\"report\"",[145,1373,1332],{"class":155},[145,1375,1376,1379,1381],{"class":147,"line":215},[145,1377,1378],{"class":166},"  \"secretsPolicy\"",[145,1380,156],{"class":155},[145,1382,1383],{"class":159},"\"no-secrets-in-prompts\"\n",[145,1385,1386],{"class":147,"line":228},[145,1387,851],{"class":155},[12,1389,1390],{},"Such contracts matter especially when automations are integrated into change-management processes and outputs must remain reproducible and auditable.",[33,1392,259],{"id":258},[12,1394,1395,1396,1399,1400,53,1403,269,1406,1409],{},"Always-on agents move AI assistance from interactive IDE sessions into ",[16,1397,1398],{},"operational workflows",". That shift makes ",[16,1401,1402],{},"access control",[16,1404,1405],{},"auditability",[16,1407,1408],{},"reproducible quality gates"," core requirements for production use.",[275,1411,862],{},{"title":141,"searchDepth":163,"depth":163,"links":1413},[1414,1415,1416],{"id":1196,"depth":163,"text":1197},{"id":1248,"depth":163,"text":1249},{"id":258,"depth":163,"text":259},"\u002Fimg\u002Fblog\u002Fcursor-automations-agenten-mit-triggers-und-mcp-cover.jpg","2026-04-02","Cursor introduces trigger-driven agent runs that operate in cloud sandboxes and return results back to external systems.",{},"\u002Fen\u002Fblog\u002Fcursor-automations-agenten-mit-triggers-und-mcp",{"title":1169,"description":1419},"en\u002Fblog\u002Fcursor-automations-agenten-mit-triggers-und-mcp",[1425,294,1426,1427],"AI","Automation","Governance","YU-wtrOvCLXyGQfASJz6qFUfH5SR9H3wxvxBclDk_8s",{"id":1430,"title":1431,"body":1432,"cover":1684,"date":1685,"description":1686,"draft":286,"extension":287,"meta":1687,"navigation":289,"path":1688,"seo":1689,"stem":1690,"tags":1691,"__hash__":1694},"blog_en\u002Fen\u002Fblog\u002Fgaia-x-europaeische-digitale-souveraenitaet.md","GAIA-X and European Digital Sovereignty",{"type":9,"value":1433,"toc":1679},[1434,1441,1445,1452,1455,1489,1495,1499,1509,1516,1669,1672,1674,1677],[12,1435,1436,1437,1440],{},"Europe remains largely dependent on US-based providers for cloud infrastructure and data platforms. The ",[16,1438,1439],{},"GAIA-X"," initiative, launched in 2019 by Germany and France, aims to build a federated and sovereign data infrastructure for Europe.",[33,1442,1444],{"id":1443},"what-is-gaia-x","What is GAIA-X?",[12,1446,1447,1448,1451],{},"GAIA-X is not a single cloud provider but a ",[16,1449,1450],{},"set of rules and a technical architecture"," for trustworthy data exchange ecosystems. The initiative defines standards that enable companies to share data across organizational and national borders while maintaining full data sovereignty.",[12,1453,1454],{},"Core characteristics of GAIA-X:",[41,1456,1457,1463,1469,1475],{},[44,1458,1459,1462],{},[16,1460,1461],{},"Federated Model"," - No central data storage, but decentralized infrastructure with shared rules",[44,1464,1465,1468],{},[16,1466,1467],{},"Open Standards"," - Interoperability through standardized APIs and data formats",[44,1470,1471,1474],{},[16,1472,1473],{},"Transparency and Trust"," - Verifiable compliance through machine-readable Self-Descriptions",[44,1476,1477,1480,1481,53,1483,269,1486],{},[16,1478,1479],{},"Cross-Sector"," - Connection to domain-specific data spaces such as ",[16,1482,876],{},[16,1484,1485],{},"Mobility Data Space",[16,1487,1488],{},"Agri-Gaia",[12,1490,1491],{},[90,1492],{"alt":1493,"src":1494},"GAIA-X Federation Architecture","\u002Fimg\u002Fblog\u002Fgaia-x-federation.png",[33,1496,1498],{"id":1497},"federation-services-and-trust-framework","Federation Services and Trust Framework",[12,1500,320,1501,1504,1505,1508],{},[16,1502,1503],{},"GAIA-X Federation Services (GXFS)"," form the technical backbone. They provide open-source tools for identity management, compliance verification, and catalogue services. With ",[16,1506,1507],{},"Trust Framework 3.0 (\"Danube\")",", a major milestone was reached in 2025: domain and geographic extensions enable trust to be federated across different sectors and regions.",[12,1510,1511,1512,1515],{},"Each participant describes their services through a ",[16,1513,1514],{},"Self-Description"," in JSON-LD format:",[136,1517,1519],{"className":720,"code":1518,"language":722,"meta":141,"style":141},"{\n  \"@context\": [\n    \"https:\u002F\u002Fwww.w3.org\u002F2018\u002Fcredentials\u002Fv1\",\n    \"https:\u002F\u002Fregistry.lab.gaia-x.eu\u002Fv1\u002Fapi\u002Ftrusted-shape-registry\"\n  ],\n  \"@type\": \"VerifiablePresentation\",\n  \"verifiableCredential\": [\n    {\n      \"@type\": \"VerifiableCredential\",\n      \"credentialSubject\": {\n        \"@type\": \"gx:ServiceOffering\",\n        \"gx:name\": \"Secure Object Storage\",\n        \"gx:providedBy\": \"did:web:provider.example.eu\",\n        \"gx:dataProtectionRegime\": [\"GDPR2016\"],\n        \"gx:locationsOfDataProcessing\": [\"EU\"]\n      }\n    }\n  ]\n}\n",[131,1520,1521,1525,1532,1539,1544,1549,1560,1567,1572,1584,1591,1603,1615,1627,1639,1651,1655,1660,1665],{"__ignoreMap":141},[145,1522,1523],{"class":147,"line":148},[145,1524,729],{"class":155},[145,1526,1527,1530],{"class":147,"line":163},[145,1528,1529],{"class":166},"  \"@context\"",[145,1531,758],{"class":155},[145,1533,1534,1537],{"class":147,"line":179},[145,1535,1536],{"class":159},"    \"https:\u002F\u002Fwww.w3.org\u002F2018\u002Fcredentials\u002Fv1\"",[145,1538,742],{"class":155},[145,1540,1541],{"class":147,"line":188},[145,1542,1543],{"class":159},"    \"https:\u002F\u002Fregistry.lab.gaia-x.eu\u002Fv1\u002Fapi\u002Ftrusted-shape-registry\"\n",[145,1545,1546],{"class":147,"line":196},[145,1547,1548],{"class":155},"  ],\n",[145,1550,1551,1553,1555,1558],{"class":147,"line":207},[145,1552,734],{"class":166},[145,1554,156],{"class":155},[145,1556,1557],{"class":159},"\"VerifiablePresentation\"",[145,1559,742],{"class":155},[145,1561,1562,1565],{"class":147,"line":215},[145,1563,1564],{"class":166},"  \"verifiableCredential\"",[145,1566,758],{"class":155},[145,1568,1569],{"class":147,"line":228},[145,1570,1571],{"class":155},"    {\n",[145,1573,1574,1577,1579,1582],{"class":147,"line":240},[145,1575,1576],{"class":166},"      \"@type\"",[145,1578,156],{"class":155},[145,1580,1581],{"class":159},"\"VerifiableCredential\"",[145,1583,742],{"class":155},[145,1585,1586,1589],{"class":147,"line":246},[145,1587,1588],{"class":166},"      \"credentialSubject\"",[145,1590,750],{"class":155},[145,1592,1593,1596,1598,1601],{"class":147,"line":252},[145,1594,1595],{"class":166},"        \"@type\"",[145,1597,156],{"class":155},[145,1599,1600],{"class":159},"\"gx:ServiceOffering\"",[145,1602,742],{"class":155},[145,1604,1605,1608,1610,1613],{"class":147,"line":500},[145,1606,1607],{"class":166},"        \"gx:name\"",[145,1609,156],{"class":155},[145,1611,1612],{"class":159},"\"Secure Object Storage\"",[145,1614,742],{"class":155},[145,1616,1617,1620,1622,1625],{"class":147,"line":510},[145,1618,1619],{"class":166},"        \"gx:providedBy\"",[145,1621,156],{"class":155},[145,1623,1624],{"class":159},"\"did:web:provider.example.eu\"",[145,1626,742],{"class":155},[145,1628,1629,1632,1634,1637],{"class":147,"line":521},[145,1630,1631],{"class":166},"        \"gx:dataProtectionRegime\"",[145,1633,170],{"class":155},[145,1635,1636],{"class":159},"\"GDPR2016\"",[145,1638,1332],{"class":155},[145,1640,1641,1644,1646,1649],{"class":147,"line":532},[145,1642,1643],{"class":166},"        \"gx:locationsOfDataProcessing\"",[145,1645,170],{"class":155},[145,1647,1648],{"class":159},"\"EU\"",[145,1650,176],{"class":155},[145,1652,1653],{"class":147,"line":543},[145,1654,836],{"class":155},[145,1656,1657],{"class":147,"line":551},[145,1658,1659],{"class":155},"    }\n",[145,1661,1662],{"class":147,"line":563},[145,1663,1664],{"class":155},"  ]\n",[145,1666,1667],{"class":147,"line":574},[145,1668,851],{"class":155},[12,1670,1671],{},"These Self-Descriptions are cryptographically signed, enabling automated compliance verification.",[33,1673,259],{"id":258},[12,1675,1676],{},"With over 180 data spaces in preparation and the first multi-provider catalogue featuring 600 services from 15 providers, GAIA-X is entering a new implementation phase. The initiative lays the foundation for European companies to use data sovereignly without becoming entirely dependent on non-European platforms.",[275,1678,862],{},{"title":141,"searchDepth":163,"depth":163,"links":1680},[1681,1682,1683],{"id":1443,"depth":163,"text":1444},{"id":1497,"depth":163,"text":1498},{"id":258,"depth":163,"text":259},"\u002Fimg\u002Fblog\u002Fgaia-x-cover.jpg","2026-04-01","GAIA-X builds a federated data infrastructure for digital sovereignty in Europe.",{},"\u002Fen\u002Fblog\u002Fgaia-x-europaeische-digitale-souveraenitaet",{"title":1431,"description":1686},"en\u002Fblog\u002Fgaia-x-europaeische-digitale-souveraenitaet",[1439,1692,877,1693],"Data Sovereignty","EU","KAlY-4A-PK1MFUYX_8rq4u_L5HOhsoBeRgJcW8J4E_Y",1775680577836]