[{"data":1,"prerenderedAt":954},["ShallowReactive",2],{"/blog/ship-log-data-off-site-using-udp":3,"navigation-en-us":191,"banner-en-us":623,"footer-en-us":633,"blog-post-authors-en-us-Job van der Voort":893,"blog-related-posts-en-us-ship-log-data-off-site-using-udp":909,"blog-share-wrapper-en-us":934,"next-steps-en-us":944},{"id":4,"title":5,"authors":6,"body":8,"category":167,"date":168,"description":169,"extension":170,"externalUrl":171,"faq":171,"featured":172,"heroImage":173,"meta":174,"navigation":181,"path":182,"seo":183,"slug":187,"stem":188,"tags":171,"template":189,"updatedDate":171,"__hash__":190},"blogPosts/en-us/blog/ship-log-data-off-site-using-udp.md","How you can send your logs ballistically using UDP",[7],"Job van der Voort",{"type":9,"value":10,"toc":161},"minimark",[11,15,18,23,31,41,52,55,61,65,83,99,105,109,117,130,133],[12,13,14],"p",{},"The last thing you want to happen is having problems on your server due to your logs.\nYou need them to debug problems, not cause them. With large GitLab instances, it's\na great idea to ship your logs to a separate server. This way, they are easier to manage\nand you don't need to worry about space. But by using TCP to send the logs you risk\na connection failure and subsequent problems with your instance.",[12,16,17],{},"Therefore, with GitLab Enterprise Edition (7.1 and up) Omnibus packages,\nwe introduced UDP log shipping.\nAs opposed to TCP, UDP doesn't care about whether packets get received,\nit keeps sending them in a non-blocking, fire-and-forget manner.\nThat makes UDP really fast, lightweight and if you log server crashes, it won't\naffect your GitLab instance. UDP doesn't care.",[19,20,22],"h2",{"id":21},"setting-up-udp-log-shipping","Setting up UDP log shipping",[12,24,25,26,30],{},"UDP log shipping is very easy to set up. You simply add the following lines to ",[27,28,29],"code",{},"/etc/gitlab/gitlab.rb",":",[32,33,39],"pre",{"className":34,"code":36,"language":37,"meta":38},[35],"language-text","logging['udp_log_shipping_host'] = '1.2.3.4' # Your syslog server\nlogging['udp_log_shipping_port'] = 1514 # Optional, defaults to 514 (syslog)\n","text","",[27,40,36],{"__ignoreMap":38},[12,42,43,44,47,48,51],{},"And run ",[27,45,46],{},"sudo gitlab-ctl reconfigure",". Now your logs will be shipped speedily to ",[27,49,50],{},"1.2.3.4:1514","!",[12,53,54],{},"An example of what your syslog server will receive:",[32,56,59],{"className":57,"code":58,"language":37,"meta":38},[35],"\u003C13>Jun 26 06:33:46 ubuntu1204-test production.log: Started GET \"/root/my-project/import\" for 127.0.0.1 at 2014-06-26 06:33:46 -0700\n\u003C13>Jun 26 06:33:46 ubuntu1204-test production.log: Processing by ProjectsController#import as HTML\n\u003C13>Jun 26 06:33:46 ubuntu1204-test production.log: Parameters: {\"id\"=>\"root/my-project\"}\n\u003C13>Jun 26 06:33:46 ubuntu1204-test production.log: Completed 200 OK in 122ms (Views: 71.9ms | ActiveRecord: 12.2ms)\n",[27,60,58],{"__ignoreMap":38},[19,62,64],{"id":63},"how-it-works","How it works",[12,66,67,68,71,72,78,79,82],{},"The services of GitLab write log messages to logfiles (such as ",[27,69,70],{},"production.log",")\nor to STDOUT. GitLab Omnibus packages use ",[73,74,77],"a",{"href":75,"rel":76},"http://smarden.org/runit/svlogd.8.html",[],"svlogd","\nto log STDOUT to for instance ",[27,80,81],{},"sidekiq/current",".",[12,84,85,86,89,90,95,96,98],{},"svlogd is great, as it allows us to ship these logs using UDP and even rotate them.\nHowever, it can't work with ",[27,87,88],{},".log"," files. So in addition to svlogd, we make\nuse of ",[73,91,94],{"href":92,"rel":93},"https://github.com/papertrail/remote_syslog",[],"remote_syslog",", which can work\nwith ",[27,97,88],{}," files and allows us to ship the using UDP.",[12,100,101,102,104],{},"By using a single configuration option in the Omnibus package, as shown above,\nwe were able to make UDP log shipping simple to set up and flexible enough to work\nwith both ",[27,103,88],{}," files and STDOUT logging.",[19,106,108],{"id":107},"about-gitlab","About GitLab",[12,110,111,112,116],{},"Want to start to use UDP log shipping? Check out ",[73,113,115],{"href":114},"/pricing/feature-comparison/","GitLab Enterprise Edition",".\nA subscription also includes support, deep LDAP integration, git hooks, Jenkins integration and many more powerful enterprise features.",[12,118,119,120,124,125,82],{},"You can try GitLab by ",[73,121,123],{"href":122},"/install/","downloading"," the Community Edition and installing it on your own server or by signing up to our free, unlimited GitLab instance ",[73,126,129],{"href":127,"rel":128},"https://gitlab.com/users/sign_up",[],"GitLab.com",[12,131,132],{},"See our previous feature highlights:",[134,135,136,143,149,155],"ul",{},[137,138,139],"li",{},[73,140,142],{"href":141},"/blog/feature-highlight-groups/","Groups",[137,144,145],{},[73,146,148],{"href":147},"/blog/feature-highlight-git-hooks/","Git Hooks",[137,150,151],{},[73,152,154],{"href":153},"/blog/feature-highlight-branded-login-gitlab-ee/","Branded Login",[137,156,157],{},[73,158,160],{"href":159},"/blog/feature-highlight-ldap-sync/","LDAP Integration",{"title":38,"searchDepth":162,"depth":162,"links":163},2,[164,165,166],{"id":21,"depth":162,"text":22},{"id":63,"depth":162,"text":64},{"id":107,"depth":162,"text":108},"engineering","2014-12-08","With GitLab Enterprise Edition 7.1 and up Omnibus packages, we introduced UDP log shipping.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663397/Blog/Hero%20Images/logoforblogpost.jpg",{"excerpt":175},{"type":9,"value":176},[177,179],[12,178,14],{},[12,180,17],{},true,"/en-us/blog/ship-log-data-off-site-using-udp",{"title":5,"description":169,"ogTitle":5,"ogDescription":169,"noIndex":172,"ogImage":173,"ogUrl":184,"ogSiteName":185,"ogType":186,"canonicalUrls":184},"https://about.gitlab.com/blog/ship-log-data-off-site-using-udp","https://about.gitlab.com","article","ship-log-data-off-site-using-udp","en-us/blog/ship-log-data-off-site-using-udp","BlogPost","y4av5ZCiP3oijhO_oQzJvFeCO49UZTbPKT4wfW3jGbw",{"logo":192,"freeTrial":197,"sales":202,"login":207,"items":212,"search":543,"minimal":574,"duo":593,"switchNav":602,"pricingDeployment":613},{"config":193},{"href":194,"dataGaName":195,"dataGaLocation":196},"/","gitlab logo","header",{"text":198,"config":199},"Get free trial",{"href":200,"dataGaName":201,"dataGaLocation":196},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":203,"config":204},"Request a demo",{"href":205,"dataGaName":206,"dataGaLocation":196},"/request-a-demo/","sales",{"text":208,"config":209},"Sign in",{"href":210,"dataGaName":211,"dataGaLocation":196},"https://gitlab.com/users/sign_in/","sign in",[213,299,387,392,467,521],{"text":214,"left":181,"config":215,"menu":217},"Platform",{"dataNavLevelOne":216},"platform",{"type":218,"link":219,"columns":223,"feature":288},"lists",{"text":220,"config":221},"Explore the Platform",{"href":222,"dataGaName":216,"dataGaLocation":196},"/platform/",[224,247,270],{"title":225,"items":226},"Execution & Workflows",[227,232,237,242],{"text":228,"config":229},"CI/CD",{"href":230,"dataGaLocation":196,"dataGaName":231},"/solutions/continuous-integration/","ci/cd",{"text":233,"config":234},"Source Code Management",{"href":235,"dataGaLocation":196,"dataGaName":236},"/solutions/source-code-management/","source code management",{"text":238,"config":239},"Agile Delivery",{"href":240,"dataGaLocation":196,"dataGaName":241},"/solutions/agile-delivery/","agile delivery",{"text":243,"config":244},"Artifact Management",{"href":245,"dataGaLocation":196,"dataGaName":246},"/artifact-central/","artifact management",{"title":248,"items":249},"Security & Governance",[250,255,260,265],{"text":251,"config":252},"Application Security Testing",{"href":253,"dataGaLocation":196,"dataGaName":254},"/solutions/application-security-testing/","application security testing",{"text":256,"config":257},"Governance & Compliance",{"href":258,"dataGaLocation":196,"dataGaName":259},"/solutions/software-compliance/","governance and compliance",{"text":261,"config":262},"Secrets Management",{"href":263,"dataGaLocation":196,"dataGaName":264},"/gitlab-secrets-manager/","secrets management",{"text":266,"config":267},"Supply Chain Security",{"href":268,"dataGaLocation":196,"dataGaName":269},"/solutions/supply-chain/","supply chain security",{"title":271,"items":272},"Context & AI",[273,278,283],{"text":274,"config":275},"Agentic Orchestration",{"href":276,"dataGaLocation":196,"dataGaName":277},"/gitlab-duo-agent-platform/","agentic orchestration",{"text":279,"config":280},"Context Graph",{"href":281,"dataGaLocation":196,"dataGaName":282},"/gitlab-orbit/","context graph",{"text":284,"config":285},"Visibility & Measurement",{"href":286,"dataGaLocation":196,"dataGaName":287},"/solutions/visibility-measurement/","visibility and measurement",{"config":289,"title":292,"text":293,"link":294},{"background":290,"textColor":291},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","Why GitLab","One platform for speed with control across your software lifecycle.",{"text":295,"config":296},"Learn more",{"href":297,"dataGaName":298,"dataGaLocation":196},"/why-gitlab/","why gitlab",{"text":300,"left":181,"config":301,"menu":303},"Solutions",{"dataNavLevelOne":302},"solutions",{"type":218,"link":304,"columns":308,"feature":378},{"text":305,"config":306},"View all Solutions",{"href":307,"dataGaName":302,"dataGaLocation":196},"/solutions/",[309,327,345],{"title":310,"items":311},"Outcomes",[312,317,322],{"text":313,"config":314},"DevOps Modernization",{"href":315,"dataGaLocation":196,"dataGaName":316},"/assessments/devops-modernization-assessment/","devops modernization",{"text":318,"config":319},"Security Modernization",{"href":320,"dataGaLocation":196,"dataGaName":321},"/assessments/security-modernization-assessment/","security modernization",{"text":323,"config":324},"AI Modernization",{"href":325,"dataGaLocation":196,"dataGaName":326},"/assessments/ai-modernization-assessment/","ai modernization",{"title":328,"items":329},"By size",[330,335,340],{"text":331,"config":332},"Enterprise",{"href":333,"dataGaLocation":196,"dataGaName":334},"/enterprise/","enterprise",{"text":336,"config":337},"Small Business",{"href":338,"dataGaLocation":196,"dataGaName":339},"/small-business/","small business",{"text":341,"config":342},"Startups",{"href":343,"dataGaLocation":196,"dataGaName":344},"/solutions/startups/","startups",{"title":346,"items":347},"Industries",[348,353,358,363,368,373],{"text":349,"config":350},"Financial Services",{"href":351,"dataGaLocation":196,"dataGaName":352},"/solutions/finance/","financial services",{"text":354,"config":355},"Public Sector",{"href":356,"dataGaLocation":196,"dataGaName":357},"/solutions/public-sector/","public sector",{"text":359,"config":360},"Telecommunications",{"href":361,"dataGaLocation":196,"dataGaName":362},"/solutions/telecommunications/","telecommunications",{"text":364,"config":365},"Automotive",{"href":366,"dataGaLocation":196,"dataGaName":367},"/solutions/automotive/","automotive",{"text":369,"config":370},"Education",{"href":371,"dataGaLocation":196,"dataGaName":372},"/solutions/education/","education",{"text":374,"config":375},"Aerospace",{"href":376,"dataGaLocation":196,"dataGaName":377},"/solutions/aerospace/","aerospace",{"config":379,"title":380,"text":381,"link":382},{"background":290,"textColor":291},"GitLab Security Standard","Learn how to harden your software factory and let AI agents earn autonomy, without trading away security.",{"text":383,"config":384},"Explore the standard",{"href":385,"dataGaName":386,"dataGaLocation":196},"/gitlab-security-standard/","gitlab security standard",{"text":388,"config":389},"Pricing",{"href":390,"dataGaName":391,"dataGaLocation":196,"dataNavLevelOne":391},"/pricing/","pricing",{"text":393,"config":394,"menu":396},"Resources",{"dataNavLevelOne":395},"resources",{"type":218,"link":397,"columns":401,"feature":458},{"text":398,"config":399},"View all resources",{"href":400,"dataGaName":395,"dataGaLocation":196},"/resources/",[402,430],{"title":403,"items":404},"Discover",[405,410,415,420,425],{"text":406,"config":407},"Docs",{"href":408,"dataGaName":409,"dataGaLocation":196},"https://docs.gitlab.com/","docs",{"text":411,"config":412},"University",{"href":413,"dataGaName":414,"dataGaLocation":196},"https://university.gitlab.com/","university",{"text":416,"config":417},"Demo Series",{"href":418,"dataGaName":419,"dataGaLocation":196},"/gitlab-technical-demo-series/","demo series",{"text":421,"config":422},"Demo Hub",{"href":423,"dataGaName":424,"dataGaLocation":196},"/demo-hub/","demo hub",{"text":426,"config":427},"Services",{"href":428,"dataGaName":429,"dataGaLocation":196},"/services/","services",{"title":431,"items":432},"Connect",[433,438,443,448,453],{"text":434,"config":435},"Blog",{"href":436,"dataGaName":437,"dataGaLocation":196},"/blog/","blog",{"text":439,"config":440},"Community",{"href":441,"dataGaName":442,"dataGaLocation":196},"/community/","community",{"text":444,"config":445},"Customers",{"href":446,"dataGaName":447,"dataGaLocation":196},"/customers/","customers",{"text":449,"config":450},"Partners",{"href":451,"dataGaName":452,"dataGaLocation":196},"/partners/","partners",{"text":454,"config":455},"Events",{"href":456,"dataGaName":457,"dataGaLocation":196},"/events/","events",{"config":459,"title":460,"text":461,"link":462},{"background":290,"textColor":291},"What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":463,"config":464},"Read the latest",{"href":465,"dataGaName":466,"dataGaLocation":196},"/whats-new/","whats new",{"text":468,"config":469,"menu":471},"Company",{"dataNavLevelOne":470},"company",{"type":218,"columns":472},[473],{"items":474},[475,480,486,491,496,501,506,511,516],{"text":476,"config":477},"About",{"href":478,"dataGaName":479,"dataGaLocation":196},"/company/","about",{"text":481,"config":482,"footerGa":485},"Jobs",{"href":483,"dataGaName":484,"dataGaLocation":196},"/jobs/","jobs",{"dataGaName":484},{"text":487,"config":488},"Press",{"href":489,"dataGaName":490,"dataGaLocation":196},"/press/","press",{"text":492,"config":493},"Handbook",{"href":494,"dataGaName":495,"dataGaLocation":196},"https://handbook.gitlab.com/","handbook",{"text":497,"config":498},"Leadership",{"href":499,"dataGaName":500,"dataGaLocation":196},"/company/team/e-group/","leadership",{"text":502,"config":503},"Investor relations",{"href":504,"dataGaName":505,"dataGaLocation":196},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":507,"config":508},"Trust Center",{"href":509,"dataGaName":510,"dataGaLocation":196},"/security/","trust center",{"text":512,"config":513},"AI Transparency Center",{"href":514,"dataGaName":515,"dataGaLocation":196},"/ai-transparency-center/","ai transparency center",{"text":517,"config":518},"Newsletter",{"href":519,"dataGaName":520,"dataGaLocation":196},"/company/contact/#contact-forms","newsletter",{"text":522,"config":523,"menu":524},"Contact us",{"dataNavLevelOne":470},{"type":218,"columns":525},[526],{"items":527},[528,533,538],{"text":529,"config":530},"Talk to sales",{"href":531,"dataGaName":532,"dataGaLocation":196},"/sales/","talk to sales",{"text":534,"config":535},"Support portal",{"href":536,"dataGaName":537,"dataGaLocation":196},"https://support.gitlab.com/hc/en-us","support portal",{"text":539,"config":540},"Customer portal",{"href":541,"dataGaName":542,"dataGaLocation":196},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":544,"login":545,"suggestions":552},"Close",{"text":546,"link":547},"To search repositories and projects, login to",{"text":548,"config":549},"gitlab.com",{"href":210,"dataGaName":550,"dataGaLocation":551},"search login","search",{"text":553,"default":554},"Suggestions",[555,558,561,563,567,571],{"text":556,"config":557},"GitLab Duo Agent Platform",{"href":276,"dataGaName":556,"dataGaLocation":551},{"text":559,"config":560},"Code Suggestions (AI)",{"href":276,"dataGaName":559,"dataGaLocation":551},{"text":228,"config":562},{"href":230,"dataGaName":228,"dataGaLocation":551},{"text":564,"config":565},"GitLab on AWS",{"href":566,"dataGaName":564,"dataGaLocation":551},"/partners/technology-partners/aws/",{"text":568,"config":569},"GitLab on Google Cloud",{"href":570,"dataGaName":568,"dataGaLocation":551},"/partners/technology-partners/google-cloud-platform/",{"text":572,"config":573},"Why GitLab?",{"href":297,"dataGaName":572,"dataGaLocation":551},{"freeTrial":575,"mobileIcon":580,"desktopIcon":585,"secondaryButton":588},{"text":576,"config":577},"Start free trial",{"href":578,"dataGaName":201,"dataGaLocation":579},"https://gitlab.com/-/trials/new/","nav",{"altText":581,"config":582},"Gitlab Icon",{"src":583,"dataGaName":584,"dataGaLocation":579},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":581,"config":586},{"src":587,"dataGaName":584,"dataGaLocation":579},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":589,"config":590},"Get Started",{"href":591,"dataGaName":592,"dataGaLocation":579},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":594,"mobileIcon":598,"desktopIcon":600},{"text":595,"config":596},"Learn more about GitLab Duo",{"href":276,"dataGaName":597,"dataGaLocation":579},"gitlab duo",{"altText":581,"config":599},{"src":583,"dataGaName":584,"dataGaLocation":579},{"altText":581,"config":601},{"src":587,"dataGaName":584,"dataGaLocation":579},{"button":603,"mobileIcon":608,"desktopIcon":610},{"text":604,"config":605},"/switch",{"href":606,"dataGaName":607,"dataGaLocation":579},"#contact","switch",{"altText":581,"config":609},{"src":583,"dataGaName":584,"dataGaLocation":579},{"altText":581,"config":611},{"src":612,"dataGaName":584,"dataGaLocation":579},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":614,"mobileIcon":619,"desktopIcon":621},{"text":615,"config":616},"Back to pricing",{"href":390,"dataGaName":617,"dataGaLocation":579,"icon":618},"back to pricing","GoBack",{"altText":581,"config":620},{"src":583,"dataGaName":584,"dataGaLocation":579},{"altText":581,"config":622},{"src":587,"dataGaName":584,"dataGaLocation":579},{"title":624,"button":625,"config":631},"Ship at agent speed. Prove every step. Transcend is here.",{"text":626,"config":627},"Watch now",{"href":628,"dataGaName":629,"dataGaLocation":630},"/events/transcend/virtual/#watch-gitlab-transcend","transcend-october-2026-banner","global-banner",{"layout":632,"disabled":172},"release",{"data":634},{"text":635,"source":636,"edit":642,"contribute":647,"config":652,"items":657,"minimal":882},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":637,"config":638},"View page source",{"href":639,"dataGaName":640,"dataGaLocation":641},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":643,"config":644},"Edit this page",{"href":645,"dataGaName":646,"dataGaLocation":641},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":648,"config":649},"Please contribute",{"href":650,"dataGaName":651,"dataGaLocation":641},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":653,"facebook":654,"youtube":655,"linkedin":656},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[658,705,763,810,850],{"title":388,"links":659,"subMenu":674},[660,664,669],{"text":661,"config":662},"View plans",{"href":390,"dataGaName":663,"dataGaLocation":641},"view plans",{"text":665,"config":666},"Why Premium?",{"href":667,"dataGaName":668,"dataGaLocation":641},"/pricing/premium/","why premium",{"text":670,"config":671},"Why Ultimate?",{"href":672,"dataGaName":673,"dataGaLocation":641},"/pricing/ultimate/","why ultimate",[675],{"title":676,"links":677},"Contact Us",[678,681,683,685,690,695,700],{"text":679,"config":680},"Contact sales",{"href":531,"dataGaName":206,"dataGaLocation":641},{"text":534,"config":682},{"href":536,"dataGaName":537,"dataGaLocation":641},{"text":539,"config":684},{"href":541,"dataGaName":542,"dataGaLocation":641},{"text":686,"config":687},"Status",{"href":688,"dataGaName":689,"dataGaLocation":641},"https://status.gitlab.com/","status",{"text":691,"config":692},"Terms of use",{"href":693,"dataGaName":694,"dataGaLocation":641},"/terms/","terms of use",{"text":696,"config":697},"Privacy statement",{"href":698,"dataGaName":699,"dataGaLocation":641},"/privacy/","privacy statement",{"text":701,"config":702},"Cookie preferences",{"dataGaName":703,"dataGaLocation":641,"id":704,"isOneTrustButton":181},"cookie preferences","ot-sdk-btn",{"title":214,"links":706,"subMenu":720},[707,710,712,714,716,718],{"text":708,"config":709},"Explore the platform",{"href":222,"dataGaName":216,"dataGaLocation":641},{"text":274,"config":711},{"href":276,"dataGaName":277,"dataGaLocation":641},{"text":228,"config":713},{"href":230,"dataGaName":231,"dataGaLocation":641},{"text":279,"config":715},{"href":281,"dataGaName":282,"dataGaLocation":641},{"text":261,"config":717},{"href":263,"dataGaName":264,"dataGaLocation":641},{"text":292,"config":719},{"href":297,"dataGaName":298,"dataGaLocation":641},[721],{"title":722,"links":723},"Topics",[724,728,733,738,743,748,753,758],{"text":228,"config":725},{"href":726,"dataGaName":727,"dataGaLocation":641},"/topics/ci-cd/","cicd",{"text":729,"config":730},"GitOps",{"href":731,"dataGaName":732,"dataGaLocation":641},"/topics/gitops/","gitops",{"text":734,"config":735},"DevOps",{"href":736,"dataGaName":737,"dataGaLocation":641},"/topics/devops/","devops",{"text":739,"config":740},"Version Control",{"href":741,"dataGaName":742,"dataGaLocation":641},"/topics/version-control/","version control",{"text":744,"config":745},"DevSecOps",{"href":746,"dataGaName":747,"dataGaLocation":641},"/topics/devsecops/","devsecops",{"text":749,"config":750},"Cloud Native",{"href":751,"dataGaName":752,"dataGaLocation":641},"/topics/cloud-native/","cloud native",{"text":754,"config":755},"AI for Coding",{"href":756,"dataGaName":757,"dataGaLocation":641},"/topics/devops/ai-for-coding/","ai for coding",{"text":759,"config":760},"Agentic AI",{"href":761,"dataGaName":762,"dataGaLocation":641},"/topics/agentic-ai/","agentic ai",{"title":300,"links":764},[765,768,771,774,777,780,782,784,786,788,790,793,795,798,802,806],{"text":766,"config":767},"DevOps modernization",{"href":315,"dataGaName":316,"dataGaLocation":641},{"text":769,"config":770},"Security modernization",{"href":320,"dataGaName":321,"dataGaLocation":641},{"text":772,"config":773},"AI modernization",{"href":325,"dataGaName":326,"dataGaLocation":641},{"text":775,"config":776},"Financial services",{"href":351,"dataGaName":352,"dataGaLocation":641},{"text":778,"config":779},"Public sector",{"href":356,"dataGaName":357,"dataGaLocation":641},{"text":359,"config":781},{"href":361,"dataGaName":362,"dataGaLocation":641},{"text":364,"config":783},{"href":366,"dataGaName":367,"dataGaLocation":641},{"text":369,"config":785},{"href":371,"dataGaName":372,"dataGaLocation":641},{"text":374,"config":787},{"href":376,"dataGaName":377,"dataGaLocation":641},{"text":331,"config":789},{"href":333,"dataGaName":334,"dataGaLocation":641},{"text":791,"config":792},"Small business",{"href":338,"dataGaName":339,"dataGaLocation":641},{"text":341,"config":794},{"href":343,"dataGaName":344,"dataGaLocation":641},{"text":729,"config":796},{"href":797,"dataGaName":732,"dataGaLocation":641},"/solutions/gitops/",{"text":799,"config":800},"Software composition analysis",{"href":268,"dataGaName":801,"dataGaLocation":641},"software composition analysis",{"text":803,"config":804},"Value stream management",{"href":286,"dataGaName":805,"dataGaLocation":641},"value stream management",{"text":807,"config":808},"All solutions",{"href":307,"dataGaName":809,"dataGaLocation":641},"all solutions",{"title":393,"links":811},[812,816,821,823,825,827,829,831,833,835,837,839,841,843,846],{"text":813,"config":814},"Install",{"href":122,"dataGaName":815,"dataGaLocation":641},"install",{"text":817,"config":818},"Quick start guides",{"href":819,"dataGaName":820,"dataGaLocation":641},"/get-started/","quick setup checklists",{"text":406,"config":822},{"href":408,"dataGaName":409,"dataGaLocation":641},{"text":411,"config":824},{"href":413,"dataGaName":414,"dataGaLocation":641},{"text":416,"config":826},{"href":418,"dataGaName":419,"dataGaLocation":641},{"text":421,"config":828},{"href":423,"dataGaName":424,"dataGaLocation":641},{"text":426,"config":830},{"href":428,"dataGaName":429,"dataGaLocation":641},{"text":434,"config":832},{"href":436,"dataGaName":437,"dataGaLocation":641},{"text":439,"config":834},{"href":441,"dataGaName":442,"dataGaLocation":641},{"text":444,"config":836},{"href":446,"dataGaName":447,"dataGaLocation":641},{"text":449,"config":838},{"href":451,"dataGaName":452,"dataGaLocation":641},{"text":454,"config":840},{"href":456,"dataGaName":457,"dataGaLocation":641},{"text":517,"config":842},{"href":519,"dataGaName":520,"dataGaLocation":641},{"text":844,"config":845},"What's new",{"href":465,"dataGaName":466,"dataGaLocation":641},{"text":847,"config":848},"All resources",{"href":400,"dataGaName":849,"dataGaLocation":641},"all resources",{"title":468,"links":851},[852,854,856,858,860,862,864,866,868,872,877],{"text":476,"config":853},{"href":478,"dataGaName":470,"dataGaLocation":641},{"text":481,"config":855},{"href":483,"dataGaName":484,"dataGaLocation":641},{"text":487,"config":857},{"href":489,"dataGaName":490,"dataGaLocation":641},{"text":492,"config":859},{"href":494,"dataGaName":495,"dataGaLocation":641},{"text":497,"config":861},{"href":499,"dataGaName":500,"dataGaLocation":641},{"text":502,"config":863},{"href":504,"dataGaName":505,"dataGaLocation":641},{"text":507,"config":865},{"href":509,"dataGaName":510,"dataGaLocation":641},{"text":512,"config":867},{"href":514,"dataGaName":515,"dataGaLocation":641},{"text":869,"config":870},"Sustainability",{"href":871,"dataGaName":869,"dataGaLocation":641},"/sustainability/",{"text":873,"config":874},"Diversity, inclusion and belonging (DIB)",{"href":875,"dataGaName":876,"dataGaLocation":641},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":878,"config":879},"Modern Slavery Transparency Statement",{"href":880,"dataGaName":881,"dataGaLocation":641},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":883},[884,887,890],{"text":885,"config":886},"Terms",{"href":693,"dataGaName":694,"dataGaLocation":641},{"text":888,"config":889},"Cookies",{"dataGaName":703,"dataGaLocation":641,"id":704,"isOneTrustButton":181},{"text":891,"config":892},"Privacy",{"href":698,"dataGaName":699,"dataGaLocation":641},[894],{"id":895,"title":896,"body":171,"config":897,"content":899,"description":171,"extension":903,"meta":904,"navigation":181,"path":905,"seo":906,"stem":907,"__hash__":908},"blogAuthors/en-us/blog/authors/job-van-der-voort.yml","Job Van Der Voort",{"template":898},"BlogAuthor",{"name":7,"config":900},{"headshot":901,"ctfId":902},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Job-van-der-Voort","yml",{},"/en-us/blog/authors/job-van-der-voort",{},"en-us/blog/authors/job-van-der-voort","w8TOn_hGFgQQOv35VnObjxoMM-hviRbwtijFETooJCM",[910,918,926],{"title":911,"description":912,"heroImage":913,"category":167,"date":914,"authors":915,"slug":917,"externalUrl":171},"Two front doors: Module-level access in a Django GRC app","A technical deep-dive on restructuring a Django internal tool to support two distinct GitLab teams: Security Compliance and Internal Audit.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097663/Blog/Hero%20Images/Blog/Hero%20Images/Workflow%201800x945_2gQoQIbY9NvjLFpXtsxtXy_1750097663612.png","2026-10-05",[916],"Donovan Felton","module-level-access-in-a-django-grc-app",{"title":919,"description":920,"heroImage":921,"category":167,"date":922,"authors":923,"slug":925,"externalUrl":171},"How GitLab reduced code-per-agentic-flow ratio by 45%","Learn how Flow Registry, a component-based framework that compiles YAML configurations into fully functional LangGraph flows, helped improve scalability and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-09-22",[924],"Mikolaj Wawrzyniak","how-gitlab-reduced-code-per-agentic-flow-ratio",{"title":927,"description":928,"heroImage":929,"category":167,"date":930,"authors":931,"slug":933,"externalUrl":171},"Co-Create: Building GitLab with our users","How GitLab users collaborated with us to build practical product improvements in the first half of 2026.","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-09-10",[932],"Isa Huerga","co-create-h1-2026",{"header":935,"text":936,"button":940,"disclaimer":943},"Start your free\n\n30-day GitLab trial\n",[937,938,939],"GitLab Duo Agent Platform access","Try our most advanced features","Automate complex tasks with AI",{"text":198,"config":941},{"href":942,"dataGaName":201,"dataGaLocation":437},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/blog/","No credit card required.",{"header":945,"blurb":946,"button":947,"secondaryButton":952},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":948,"config":949},"Get your free trial",{"href":950,"dataGaName":201,"dataGaLocation":951},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":679,"config":953},{"href":531,"dataGaName":206,"dataGaLocation":951},1792018387595]