1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8"/> 5<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"/> 6<meta name="csrf-token" content="3X51OO6C9xfpk8IdKiLqVMESJAeyb5nXsKKjoUTZ"/> 7<!-- Favicon --> 8<meta name="color-scheme" content="light"/> 9<link rel="sitemap" type="application/xml" href="/sitemap.xml"/> 10 11<link 12 rel="preload" 13 href="/fonts/instrumentSans/InstrumentSans-Regular.woff2" 14 as="font" 15 type="font/woff2" 16 crossorigin="anonymous" 17/> 18 19<link rel="preconnect" href="https://E3MIRNPJH5-dsn.algolia.net" crossorigin/> 20<link rel="preconnect" href="https://fonts.bunny.net"> 21<link href="https://fonts.bunny.net/css?family=ibm-plex-mono:500|merriweather:400&display=swap" rel="stylesheet"> 22 23 24<link rel="preload" as="style" href="https://laravel.com/build/assets/app-BSgAFB5i.css" /><link rel="modulepreload" as="script" href="https://laravel.com/build/assets/app-CBkgIW3L.js" /><link rel="modulepreload" as="script" href="https://laravel.com/build/assets/ai-boost-setup-BblmTBkl.js" /><link rel="modulepreload" as="script" href="https://laravel.com/build/assets/mediaQuery-C6iJCfwE.js" /><link rel="stylesheet" href="https://laravel.com/build/assets/app-BSgAFB5i.css" />
24<script type="module" src="https://laravel.com/build/assets/app-CBkgIW3L.js"></script>
24 25 26 <!-- Fathom - beautiful, simple website analytics --> 27
27<script src="https://cdn.usefathom.com/script.js" data-site="DVMEKBYF" data-spa="auto" defer></script>
27 28 <!-- / Fathom --> 29 30<!-- Google Tag Manager --> 31
31<script>
vendor: 533 bytes, lines 31-41
31 32 (function (w, d, s, l, i) { 33 w[l] = w[l] || []; 34 w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'}); 35 var f = d.getElementsByTagName(s)[0], 36 j = d.createElement(s), 37 dl = l != 'dataLayer' ? '&l=' + l : ''; 38 j.async = true; 39 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 40 f.parentNode.insertBefore(j, f); 41 })(window, document, 'script', 'dataLayer', '
41GTM-T8K8RFRX
vendor: 12 bytes, lines 41-42
41'); 42
42</script>
42 43 <!-- / Google Tag Manager --> 44 45
46<script> 47 const alwaysLightMode = true; 48 const alwaysDarkMode = false; 49 window.algolia_app_id = 'E3MIRNPJH5'; 50 window.algolia_search_key = '1fa3a8fec06eb1858d6ca137211225c0'; 51 window.version = '13.x'; 52 53 if (alwaysDarkMode) { 54 document.documentElement.classList.add('dark'); 55 document.documentElement.setAttribute('data-theme', 'dark'); 56 document.documentElement.setAttribute('color-theme', 'dark'); 57 } else if (alwaysLightMode) { 58 document.documentElement.classList.remove('dark'); 59 document.documentElement.setAttribute('data-theme', 'light'); 60 document.documentElement.setAttribute('color-theme', 'light'); 61 } else { 62 const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; 63 const hasNoThemeOrIsSystemTheme = !localStorage.theme || localStorage.theme === 'system'; 64 65 if (localStorage.theme === 'dark' || (hasNoThemeOrIsSystemTheme && prefersDark)) { 66 document.documentElement.classList.add('dark'); 67 document.documentElement.setAttribute('data-theme', 'dark'); 68 document.documentElement.setAttribute('color-theme', 'dark'); 69 } else { 70 document.documentElement.classList.remove('dark'); 71 document.documentElement.setAttribute('data-theme', 'light'); 72 document.documentElement.setAttribute('color-theme', 'light'); 73 } 74 } 75</script>
75 76
77<script> 78 document.addEventListener('DOMContentLoaded', function () { 79 // Set a CSS variable for the viewport width for the divider component 80 document.documentElement.style.setProperty('--viewport-width', (document.body.clientWidth || 0) + 'px'); 81 }); 82 83 window.addEventListener( 84 'resize', 85 function () { 86 document.documentElement.style.setProperty('--viewport-width', (document.body.clientWidth || 0) + 'px'); 87 }, 88 {passive: true}, 89 ); 90</script>
90 91 92 <link rel="modulepreload" as="script" href="https://laravel.com/build/assets/inertia-DhFjHnTX.js" />
92<script type="module" src="https://laravel.com/build/assets/inertia-DhFjHnTX.js"></script>
92 <link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon.png" data-inertia="apple-touch-icon-light"> 93<link rel="icon" type="image/png" sizes="32x32" href="/img/favicon/favicon-32x32.png" data-inertia="favicon-32-light"> 94<link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png" data-inertia="favicon-16-light"> 95<link rel="manifest" href="/img/favicon/site.webmanifest" data-inertia="favicon-manifest"> 96<link rel="mask-icon" href="/img/favicon/safari-pinned-tab.svg" color="#ff2d20" data-inertia="favicon-mask"> 97<link rel="shortcut icon" href="/img/favicon/favicon.ico" data-inertia="favicon-shortcut"> 98<meta name="msapplication-TileColor" content="#ff2d20" data-inertia="msapplication-TileColor"> 99<meta name="msapplication-config" content="/img/favicon/browserconfig.xml" data-inertia="msapplication-config"> 100<meta name="theme-color" content="#ffffff" data-inertia="theme-color"> 101<title data-inertia>Laravel Blog - The clean stack for Artisans & agents</title> 102<meta name="description" content="Laravel is a framework for building modern web apps and AI agents. Expressive syntax, built-in tools, and everything you need to ship fast." data-inertia="description"> 103<meta property="og:type" content="website" data-inertia="og:type"> 104<meta property="og:site_name" content="Laravel" data-inertia="og:site_name"> 105<meta property="og:locale" content="en_US" data-inertia="og:locale"> 106<meta property="og:url" content="https://laravel.com/blog" data-inertia="og:url"> 107<meta property="og:title" content="Laravel Blog - The clean stack for Artisans & agents" data-inertia="og:title"> 108<meta property="og:description" content="Laravel is a framework for building modern web apps and AI agents. Expressive syntax, built-in tools, and everything you need to ship fast." data-inertia="og:description"> 109<meta property="og:image" content="https://laravel.com/images/blog/og-card-laravel-blog.png" data-inertia="og:image"> 110<meta property="twitter:card" content="summary_large_image" data-inertia="twitter:card"> 111<meta name="twitter:site" content="@laravel" data-inertia="twitter:site"> 112<meta property="twitter:url" content="https://laravel.com/blog" data-inertia="twitter:url"> 113<meta property="twitter:title" content="Laravel Blog - The clean stack for Artisans & agents" data-inertia="twitter:title"> 114<meta property="twitter:description" content="Laravel is a framework for building modern web apps and AI agents. Expressive syntax, built-in tools, and everything you need to ship fast." data-inertia="twitter:description"> 115<meta property="twitter:image" content="https://laravel.com/images/blog/og-card-laravel-blog.png" data-inertia="twitter:image"> 116<link rel="canonical" href="https://laravel.com/blog" data-inertia="canonical"> 117 </head> 118 119 <body 120 class="bg-white font-sans text-neutral-900 antialiased dark:text-neutral-100 [--cloud-content-padding:1.5rem] md:[--cloud-content-padding:3rem] lg:[--cloud-content-padding:4rem] [--cloud-content-padding-r:var(--cloud-content-padding)] lg:[--cloud-content-padding-r:2.5rem] dark:bg-neutral-900" 121 > 122
122<script data-page="app" type="application/json">{"component":"blog\/index","props":{"errors":{},"appUrl":"https:\/\/laravel.com","events":[{"type":"laravel-meetup","name":"Laravel Ontario October Meetup","startDate":"2026-10-01T00:00:00.000000Z","endDate":"2026-10-01T00:00:00.000000Z","location":"100 Dundas St London, ON N6A 5B6, Canada","url":"https:\/\/luma.com\/dlgq3iod","thumbnail":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01M1J01ZQ8PQK0VP1NWK1KRXYQ.png","coverImage":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01M1J01ZQ8PQK0VP1NWK1KRXYQ.png","countryCode":"CA","logo":null},{"type":"laravel-meetup","name":"Laravel Meetup: Thessaloniki September Meetup","startDate":"2026-10-08T00:00:00.000000Z","endDate":"2026-10-08T00:00:00.000000Z","location":"Thessaloniki, Greece","url":"https:\/\/luma.com\/laravel-jwav","thumbnail":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01KWHY7PMV0WM6P5CMD4Z7M5JG.png","coverImage":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01KWHY7PMV0WM6P5CMD4Z7M5JG.png","countryCode":"GR","logo":null},{"type":"laravel-meetup","name":"Laravel Georgia October Meetup ","startDate":"2026-10-08T00:00:00.000000Z","endDate":"2026-10-08T00:00:00.000000Z","location":"14 Kostava Str. Georgia, Tbilisi","url":"https:\/\/luma.com\/fvbiyp2i","thumbnail":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01M2GR1DY1VPHKZKPSG6F3GPA9.png","coverImage":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01M2GR1DY1VPHKZKPSG6F3GPA9.png","countryCode":"GE","logo":null},{"type":"laravel-meetup","name":"PHPxPhilly October Meetup","startDate":"2026-10-28T00:00:00.000000Z","endDate":"2026-10-28T00:00:00.000000Z","location":"109 S 13th St Suite 119 Philadelphia PA 19107","url":"https:\/\/phpxphilly.com\/meetups\/486954563696078848\/rsvps","thumbnail":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01M2407V9F35XMY27ASVWGX6C1.png","coverImage":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01M2407V9F35XMY27ASVWGX6C1.png","countryCode":null,"logo":null},{"type":"laravel-meetup","name":"Laravel Switzerland October Meetup","startDate":"2026-10-29T00:00:00.000000Z","endDate":"2026-10-29T00:00:00.000000Z","location":"Xelon AG, Poststrasse 15, 6300 Zug, Switzerland","url":"https:\/\/luma.com\/sw57o2f1","thumbnail":"\/images\/community\/meetup-cover-photos\/CE-Swiss.png","coverImage":"\/images\/community\/meetup-cover-photos\/CE-Swiss.png","countryCode":null,"logo":null}],"featuredEvents":[{"type":"laracon","name":"Laracon AU","startDate":"2026-11-04T00:00:00.000000Z","endDate":"2026-11-06T00:00:00.000000Z","location":"Brisbane, QLD","url":"https:\/\/laracon.au\/","thumbnail":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01KSVBA0V0WYV8XJQDSSWWP3QQ.png","coverImage":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01KSVBA1F9FP58F60TSRKDRDG3.png","countryCode":"AU","logo":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01KT4G1RPYMP80HR0YBRBY8N93.svg"},{"type":"laracon","name":"Laracon EU","startDate":"2027-04-05T00:00:00.000000Z","endDate":"2027-04-07T00:00:00.000000Z","location":"Amsterdam, NL","url":"https:\/\/laracon.eu\/","thumbnail":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01KXDJ3MRJ7MFRKSSE6XK56VNV.jpg","coverImage":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/events\/images\/01KXDJ3MRJ7MFRKSSE6XK56VNV.jpg","countryCode":"NL","logo":null}],"navPartners":[["64 Robots","https:\/\/laravel.com\/partners\/64-robots"],["CACI Limited","https:\/\/laravel.com\/partners\/caci-limited"],["Curotec","https:\/\/laravel.com\/partners\/curotec"],["Jump24","https:\/\/laravel.com\/partners\/jump24"],["Kirschbaum","https:\/\/laravel.com\/partners\/kirschbaum"],["Pixel","https:\/\/laravel.com\/partners\/pixel"],["Redberry","https:\/\/laravel.com\/partners\/redberry"],["Steadfast Collective","https:\/\/laravel.com\/partners\/steadfast-collective"],["Threadable","https:\/\/laravel.com\/partners\/threadable"],["Tighten","https:\/\/laravel.com\/partners\/tighten"],["UCodeSoft","https:\/\/laravel.com\/partners\/ucodesoft"],["Vehikl","https:\/\/laravel.com\/partners\/vehikl"],["byte5","https:\/\/laravel.com\/partners\/byte5"]],"featuredArticle":{"title":"Deploy Next.js and Nuxt apps on Laravel Cloud","url":"https:\/\/laravel.com\/blog\/deploy-nextjs-and-nuxt-apps-on-laravel-cloud","publishedAt":"2026-07-28T21:10:00.000000Z","excerpt":"Deploy your Next.js or Nuxt frontend alongside your Laravel app on Laravel Cloud: one platform, one deploy workflow, one bill.","image":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/next-nuxt-featured.webp"},"alerts":[],"githubStars":"85K","footerNavigation":[{"title":"Products","mobile_order":2,"items":[[{"name":"Cloud","url":"\/cloud"},{"name":"Forge","url":"https:\/\/forge.laravel.com"},{"name":"Nightwatch","url":"https:\/\/nightwatch.laravel.com"}
122,{"name":"Vapor","url":"https:\/\/vapor.laravel.com"},{"name":"Nova","url":"https:\/\/nova.laravel.com"}]]},{"title":"Packages","mobile_order":3,"items":[[{"name":"Cashier","url":"\/framework\/docs\/billing"},{"name":"Dusk","url":"\/framework\/docs\/dusk"},{"name":"Horizon","url":"\/framework\/docs\/horizon"},{"name":"Octane","url":"\/framework\/docs\/octane"},{"name":"Scout","url":"\/framework\/docs\/scout"},{"name":"Pennant","url":"\/framework\/docs\/pennant"},{"name":"Pint","url":"\/framework\/docs\/pint"},{"name":"Sail","url":"\/framework\/docs\/sail"},{"name":"Sanctum","url":"\/framework\/docs\/sanctum"},{"name":"Socialite","url":"\/framework\/docs\/socialite"},{"name":"Telescope","url":"\/framework\/docs\/telescope"},{"name":"Pulse","url":"\/framework\/docs\/pulse"},{"name":"Reverb","url":"\/framework\/docs\/reverb"},{"name":"Echo","url":"\/framework\/docs\/broadcasting"}]]},{"title":"Resources","mobile_order":1,"items":[[{"name":"Documentation","url":"\/framework\/docs"},{"name":"Starter Kits","url":"\/starter-kits"},{"name":"Release Notes","url":"\/framework\/docs\/releases"},{"name":"Blog","url":"\/blog"},{"name":"News","url":"https:\/\/laravel-news.com"},{"name":"Community","url":"\/community"},{"name":"Larabelles","url":"https:\/\/larabelles.com\/"},{"name":"Learn","url":"\/learn"},{"name":"Jobs","url":"https:\/\/larajobs.com\/?partner=5"},{"name":"Careers","url":"\/careers"},{"name":"Trust","url":"https:\/\/trust.laravel.com"}]]},{"title":"Partners","mobile_order":3,"items":[[{"name":"Jump24","url":"\/partners\/jump24"},{"name":"Vehikl","url":"\/partners\/vehikl"},{"name":"Tighten","url":"\/partners\/tighten"},{"name":"64 Robots","url":"\/partners\/64-robots"},{"name":"byte5","url":"\/partners\/byte5"},{"name":"Threadable","url":"\/partners\/threadable"},{"name":"Kirschbaum","url":"\/partners\/kirschbaum"},{"name":"Pixel","url":"\/partners\/pixel"},{"name":"CACI Limited","url":"\/partners\/caci-limited"},{"name":"Curotec","url":"\/partners\/curotec"},{"name":"See All","url":"\/partners"}]]}],"themeMode":"light","turnstileSiteKey":"0x4AAAAAACsbGq0Ik_18miz7","hubspot":{"portalId":"45240648","forms":{"forge_contact_sales":"a1dfbc07-57e7-4b61-a4a8-e49152dc0eb8","high_intent_talk_to_team":"a1dfbc07-57e7-4b61-a4a8-e49152dc0eb8","high_intent_migration_credit":"79ab88a9-bcdd-49a2-a32c-3bf48cc6309a","cloud_newsletter":"8da1be24-1da3-4679-bbbc-47e88e97c5fc","blog_newsletter":"b05acb7f-55fb-48ca-b29f-f8c9edd51311","community_newsletter":"3b85e629-e578-4909-8a58-505bb3450577","footer_newsletter":"8da1be24-1da3-4679-bbbc-47e88e97c5fc","partner_application":"72a84fa6-63ef-43ea-a48f-a669513174d4","partner_match":"c8255a72-594e-42a6-a8a9-922c1123145e","partner_contact":"ecff708a-9c40-4ce5-bb81-12916d7b5a4a","low_intent_webinar_registrations":"a69cf816-818c-4578-b6fa-463006fd82df","low_intent_event_registrations":"3b85e629-e578-4909-8a58-505bb3450577","founders_summit":"04c36077-2332-49b6-abac-84b6d955ad1a"}},"mapboxPublicKey":"pk.eyJ1IjoiY2hpcG5lZWRoYW0iLCJhIjoiY21yMHp1enIxMGtieDJ6b3czZjNpZ3QwMCJ9.n94FotrfPCjK7dzk_1T-Aw","featuredPosts":[{"post":{"id":752,"title":"Migrating Pinkary from Laravel Forge to Laravel Cloud: An engineering playbook","slug":"migrating-pinkary-from-laravel-forge-to-laravel-cloud","description":"Pinkary's move from Laravel Forge to Laravel Cloud exposed SQLite and MySQL differences, query assumptions, and local-storage coupling. Here is the code-backed migration playbook.","content_preview":"Pinkary had been quietly storing string UUIDs in integer-affinity columns for over a year. The application worked. Tests passed. Users were happy. All good. The problem only surfaced when we migrated...","published_at":"Sep 30, 2026","published_at_iso":"2026-09-30T16:24:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/migrating-pinkary-to-laravel-cloud_featured.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/migrating-pinkary-to-cloud_feature-square.png","category":{"name":"Community","slug":"community"},"tags":[],"authors":[{"name":"Punyapal Shah","role":null,"bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/punyapal-shah.webp","twitter":null,"website":"https:\/\/mrpunyapal.dev\/","github":null,"youtube":"https:\/\/www.youtube.com\/@mrpunyapal"}]},"column_span":8,"row_span":2},{"post":{"id":748,"title":"Preview environments and scale to zero: Better together","slug":"preview-environments-and-scale-to-zero-better-together","description":"Give every pull request its own preview environment on Laravel Cloud. Share a link, test the full stack, and let idle previews scale to zero.","content_preview":"There is a familiar moment in almost every project. The code is ready, the tests pass, and then someone asks⦠âCan I try it?â It should be an easy question to answer. Sometimes it is. Other times, sta...","published_at":"Sep 28, 2026","published_at_iso":"2026-09-28T12:23:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/featured_image-preview-environments-and-scale-to-zero_-better-together-(1).png","featured_image_square_url":null,"category":{"name":"Releases","slug":"releases"},"tags":[],"authors":[{"name":"Philip Hartin","role":null,"bio":"Philip is part of the Laravel team.","avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/philip-hartin.png","twitter":null,"website":null,"github":null,"youtube":null}]},"column_span":4,"row_span":2},{"post":{"id":740,"title":"Introducing Laravel AI SDK v1.0","slug":"introducing-laravel-ai-sdk-v1","de
122scription":"Laravel AI SDK v1.0 is here: one Laravel-native API for every provider, with conversation storage, streaming chat, agents, tool approvals, and Jev classification.","content_preview":"Today, weâre releasing v1.0 of the Laravel AI SDK. Our AI SDK entered beta earlier this year with the promise of one elegant, Laravel-native API for every provider. For v1.0, weâve cooked. Weâve close...","published_at":"Sep 23, 2026","published_at_iso":"2026-09-23T10:53:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-ai-sdk-v1-featured.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-ai-sdk-v1-featured-square.png","category":{"name":"Releases","slug":"releases"},"tags":[{"name":"AI","slug":"ai"}],"authors":[{"name":"Pushpak Chhajed","role":null,"bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/pushpak.webp","twitter":"pushpak1300","website":null,"github":null,"youtube":null}]},"column_span":4,"row_span":2},{"post":{"id":728,"title":"A better way to build MCP servers with Laravel","slug":"a-better-way-to-build-mcp-servers-with-laravel","description":"Every MCP tool loads on every request. Laravel MCP 1.0 fixes that with searchable tool catalogs: the same payload for 10 or 100 tools.","content_preview":"We ship an MCP server for Laravel Nightwatch. It does what we built it for. Users like it, use it, and immediately ask for the thing it does not do yet. Every ask is reasonable! But every ask is also...","published_at":"Sep 11, 2026","published_at_iso":"2026-09-11T12:01:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/better-way-mcp-server-laravel_featured.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/better-mcp-server-laravel-featured-square.png","category":{"name":"Engineering","slug":"engineering"},"tags":[{"name":"AI","slug":"ai"}],"authors":[{"name":"Pushpak Chhajed","role":null,"bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/pushpak.webp","twitter":"pushpak1300","website":null,"github":null,"youtube":null}]},"column_span":4,"row_span":3}],"posts":{"data":[{"id":752,"title":"Migrating Pinkary from Laravel Forge to Laravel Cloud: An engineering playbook","slug":"migrating-pinkary-from-laravel-forge-to-laravel-cloud","description":"Pinkary's move from Laravel Forge to Laravel Cloud exposed SQLite and MySQL differences, query assumptions, and local-storage coupling. Here is the code-backed migration playbook.","content_preview":"Pinkary had been quietly storing string UUIDs in integer-affinity columns for over a year. The application worked. Tests passed. Users were happy. All good. The problem only surfaced when we migrated...","published_at":"Sep 30, 2026","published_at_iso":"2026-09-30T16:24:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/migrating-pinkary-to-laravel-cloud_featured.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/migrating-pinkary-to-cloud_feature-square.png","category":{"name":"Community","slug":"community"},"tags":[],"authors":[{"name":"Punyapal Shah","role":null,"bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/punyapal-shah.webp","twitter":null,"website":"https:\/\/mrpunyapal.dev\/","github":null,"youtube":"https:\/\/www.youtube.com\/@mrpunyapal"}]},{"id":748,"title":"Preview environments and scale to zero: Better together","slug":"preview-environments-and-scale-to-zero-better-together","description":"Give every pull request its own preview environment on Laravel Cloud. Share a link, test the full stack, and let idle previews scale to zero.","content_preview":"There is a familiar moment in almost every project. The code is ready, the tests pass, and then someone asks⦠âCan I try it?â It should be an easy question to answer. Sometimes it is. Other times, sta...","published_at":"Sep 28, 2026","published_at_iso":"2026-09-28T12:23:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/featured_image-preview-environments-and-scale-to-zero_-better-together-(1).png","featured_image_square_url":null,"category":{"name":"Releases","slug":"releases"},"tags":[],"authors":[{"name":"Philip Hartin","role":null,"bio":"Philip is part of the Laravel team.","avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/philip-hartin.png","twitter":null,"website":null,"github":null,"youtube":null}]},{"id":740,"title":"Introducing Laravel AI SDK v1.0","slug":"introducing-laravel-ai-sdk-v1","de
122scription":"Laravel AI SDK v1.0 is here: one Laravel-native API for every provider, with conversation storage, streaming chat, agents, tool approvals, and Jev classification.","content_preview":"Today, weâre releasing v1.0 of the Laravel AI SDK. Our AI SDK entered beta earlier this year with the promise of one elegant, Laravel-native API for every provider. For v1.0, weâve cooked. Weâve close...","published_at":"Sep 23, 2026","published_at_iso":"2026-09-23T10:53:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-ai-sdk-v1-featured.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-ai-sdk-v1-featured-square.png","category":{"name":"Releases","slug":"releases"},"tags":[{"name":"AI","slug":"ai"}],"authors":[{"name":"Pushpak Chhajed","role":null,"bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/pushpak.webp","twitter":"pushpak1300","website":null,"github":null,"youtube":null}]},{"id":728,"title":"A better way to build MCP servers with Laravel","slug":"a-better-way-to-build-mcp-servers-with-laravel","description":"Every MCP tool loads on every request. Laravel MCP 1.0 fixes that with searchable tool catalogs: the same payload for 10 or 100 tools.","content_preview":"We ship an MCP server for Laravel Nightwatch. It does what we built it for. Users like it, use it, and immediately ask for the thing it does not do yet. Every ask is reasonable! But every ask is also...","published_at":"Sep 11, 2026","published_at_iso":"2026-09-11T12:01:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/better-way-mcp-server-laravel_featured.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/better-mcp-server-laravel-featured-square.png","category":{"name":"Engineering","slug":"engineering"},"tags":[{"name":"AI","slug":"ai"}],"authors":[{"name":"Pushpak Chhajed","role":null,"bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/pushpak.webp","twitter":"pushpak1300","website":null,"github":null,"youtube":null}]},{"id":726,"title":"Why I think we should write our own PR descriptions","slug":"why-i-think-we-should-write-our-own-pr-descriptions","description":"Agents can write your PR descriptions, but they shouldn't. Here's why writing them yourself makes you a better engineer and a better teammate.","content_preview":"I think we, as developers, should write our own pull request descriptions, even when an agent has done most of the implementation. Not because Claude or Codex canât write them. They can, and theyâll n...","published_at":"Sep 10, 2026","published_at_iso":"2026-09-10T12:15:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-laravel-illustration-dark-featured-1789043477818.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-laravel-illustration-dark-featured-square-1789043478084.png","category":{"name":"Engineering","slug":"engineering"},"tags":[{"name":"Artisans","slug":"artisans"}],"authors":[{"name":"Ryan Chandler","role":"Senior Software Engineer","bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/ryan-chandler.png","twitter":null,"website":null,"github":null,"youtube":null}]},{"id":723,"title":"Laravel August product updates","slug":"laravel-august-product-updates","description":"Here's everything that shipped in August.","content_preview":"TL\/DR: Itâs been a whole month since LaraconUS and a lot has since shipped! Missed the sessions? Watch them here. The Laravel Framework shipped read-through filesystems for migrating between storage d...","published_at":"Sep 3, 2026","published_at_iso":"2026-09-03T20:30:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/august-product-updated-laravel_featured.png","featured_image_square_url":null,"category":{"name":"Releases","slug":"releases"},"tags":[{"name":"Changelog","slug":"changelog"}],"authors":[{"name":"Laravel Team","role":null,"bio":"The official Laravel development team, responsible for framework releases and updates.","avatar":null,"twitter":"laravelphp","website":"https:\/\/laravel.com","github":null,"youtube":null}]},{"id":721,"title":"Semantic memory or just Markdown?","slug":"semantic-memory-or-just-markdown","description":"Why Laravel Boost project rules use a generated Markdown index after we deleted semantic search.","content_preview":"Every team using an AI coding agent eventually sees it repeat a mistake the team already corrected. The agent will extend the framework controller and miss the application's tenant scope. It reaches f...","published_at":"Sep 3, 2026","published_at_iso":"2026-09-03T13:03
122:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-semantic-memory-markdown-featured.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-semantic-memory-markdown-square.png","category":{"name":"Engineering","slug":"engineering"},"tags":[{"name":"Laravel Boost","slug":"laravel-boost"},{"name":"AI","slug":"ai"}],"authors":[{"name":"Pushpak Chhajed","role":null,"bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/pushpak.webp","twitter":"pushpak1300","website":null,"github":null,"youtube":null}]},{"id":718,"title":"Extracting AI rules from an existing codebase","slug":"extracting-ai-rules-from-an-existing-codebase","description":"How Laravel Boost uses an agent skill to find existing project conventions and record the useful ones as scoped rules.","content_preview":"A new Laravel application can record project rules as the team makes decisions. An established application already has years of conventions encoded in its controllers, models, tests, directory structu...","published_at":"Aug 31, 2026","published_at_iso":"2026-08-31T17:15:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-boost-project-rules-long-featured.png","featured_image_square_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/laravel-boost-project-rules-square.png","category":{"name":"Engineering","slug":"engineering"},"tags":[{"name":"Laravel Boost","slug":"laravel-boost"},{"name":"AI","slug":"ai"}],"authors":[{"name":"Pushpak Chhajed","role":null,"bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/pushpak.webp","twitter":"pushpak1300","website":null,"github":null,"youtube":null}]},{"id":548,"title":"Laravel Private Cloud is now HIPAA compliant","slug":"hipaa-compliant-hosting-laravel","description":"Laravel Private Cloud is now HIPAA compliant. See what the certification covers, what a BAA gets you, and how to secure PHI in your Laravel app.","content_preview":"If you are building a Laravel application that handles Protected Health Information (PHI), you can now deploy HIPAA-compliant apps on Laravel Private Cloud. This was recently announced at Laracon US 2...","published_at":"Aug 25, 2026","published_at_iso":"2026-08-25T22:21:00.000000Z","featured_image_url":null,"featured_image_square_url":null,"category":{"name":"Releases","slug":"releases"},"tags":[{"name":"Private Cloud","slug":"private-cloud"}],"authors":[{"name":"Laravel Team","role":null,"bio":"The official Laravel development team, responsible for framework releases and updates.","avatar":null,"twitter":"laravelphp","website":"https:\/\/laravel.com","github":null,"youtube":null}]},{"id":542,"title":"Object storage migrations with Laravel's read-through filesystem","slug":"object-storage-migrations-with-laravels-read-through-filesystem","description":"Migrate from S3 to R2 without downtime using Laravel 13's read-through filesystem driver. New writes land on the destination, legacy reads promote on access.","content_preview":"Object storage cutover and object transfer happen on different timelines. New uploads begin landing in the destination immediately, while existing objects remain in the source until they are copied. A...","published_at":"Aug 18, 2026","published_at_iso":"2026-08-18T15:26:00.000000Z","featured_image_url":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/posts\/featured-images\/social_image-ai-coding-agents-pass-tests.-can-they-write-idiomatic-laravel_-(1).png","featured_image_square_url":null,"category":{"name":"Engineering","slug":"engineering"},"tags":[{"name":"Framework","slug":"framework"}],"authors":[{"name":"Aaron Francis","role":"VP of Marketing & Community at Laravel","bio":null,"avatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/cms\/authors\/avatars\/aaron-francis.png","twitter":null,"website":null,"github":null,"youtube":null}]}],"meta":{"current_page":1,"last_page":44,"per_page":10,"total":438,"from":1,"to":10}},"customerStories":{"data":[{"id":5,"variant":"default","title":"How Sportmonks Handles 600M API Requests a Week on Laravel Cloud","slug":"how-sportmonks-handles-600m-api-requests-a-week-on-laravel-cloud","company":"Sportmonks","companyLogo":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/customer-stories\/logos\/01KW21R91TZFY67HFGYFMC73ZA.svg","companyLogoDark":null,"statValue":"600M","quote":"If you are running an application of our size or smaller, and your current infrastru
122cture is just taking a lot of time to adjust day over day, night over night, to get things running, go Laravel Cloud because they know what they're doing.","quoteName":"Peter Dorn","quoteTitle":"Lead Software Developer at Sportmonks","quoteAvatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/customer-stories\/webinar-images\/01KVZ9XED76GGG5Q584CQCC1JJ.png"},{"id":6,"variant":"default","title":"How Shoptimised cut infra costs by 42%, and deployment time by 30x","slug":"how-shoptimised-cut-infra-costs-by-42-and-deployment-time-by-30x","company":"Shoptimised","companyLogo":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/customer-stories\/logos\/01M265FFMJ2JSAM0ADNQ9YQEHZ.svg","companyLogoDark":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/customer-stories\/logos\/01M265BAFFJBCHZPHZYD5T33HP.svg","statValue":"30x","quote":null,"quoteName":null,"quoteTitle":null,"quoteAvatar":null},{"id":4,"variant":"default","title":"How Roomies Cut Compute Costs 80% and Unlocked Nightwatch ","slug":"how-roomies-cut-compute-costs-80-and-unlocked-nightwatch","company":"Roomies","companyLogo":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/customer-stories\/logos\/01KT6XE9QMJ3NKPKVACZGEXPZD.svg","companyLogoDark":null,"statValue":"80%","quote":null,"quoteName":null,"quoteTitle":null,"quoteAvatar":null},{"id":1,"variant":"black","title":"PyleSoft Cuts Infrastructure Costs 50% Migrating from Vapor to Cloud","slug":"pylesoft-cuts-infrastructure-costs-50-migrating-from-vapor-to-cloud","company":"PyleSoft","companyLogo":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/customer-stories\/logos\/01KS8NWX17MPTH2K9QJQW9EX6T.svg","companyLogoDark":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/customer-stories\/logos\/01KS8NWXDXG9B3PGMN0KS9NXVJ.svg","statValue":"50%","quote":"If I could do something differently, I would have left Vapor earlier, just because of cost. Our infrastructure costs on Laravel Cloud are more than 50% lower.","quoteName":"Fa Perreault","quoteTitle":"Solutions Architect, PyleSoft","quoteAvatar":"https:\/\/fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud\/customer-stories\/webinar-images\/01KS8Q2EZQ3JWF9FK1WBFS019D.png"}]},"categories":[{"name":"Community","slug":"community","count":100},{"name":"Customers","slug":"customers","count":5},{"name":"Engineering","slug":"engineering","count":81},{"name":"Releases","slug":"releases","count":252}],"totalCount":438,"filters":{"category":"all","search":""}},"url":"\/blog","version":"23d14746423c294304722b4e3a0c3c30","sharedProps":["errors","appUrl","events","featuredEvents","navPartners","featuredArticle","alerts","githubStars","footerNavigation","themeMode","turnstileSiteKey","hubspot","mapboxPublicKey"]}</script>
122<div data-server-rendered="true" id="app"><link rel="preload" as="image" href="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/cms/posts/featured-images/migrating-pinkary-to-laravel-cloud_featured.png"/><link rel="preload" as="image" href="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/cms/posts/featured-images/featured_image-preview-environments-and-scale-to-zero_-better-together-(1).png"/><link rel="preload" as="image" href="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/cms/posts/featured-images/laravel-ai-sdk-v1-featured.png"/><link rel="preload" as="image" href="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/cms/posts/featured-images/better-way-mcp-server-laravel_featured.png"/><link rel="preload" as="image" href="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/customer-stories/logos/01KW21R91TZFY67HFGYFMC73ZA.svg"/><link rel="preload" as="image" href="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/customer-stories/logos/01M265FFMJ2JSAM0ADNQ9YQEHZ.svg"/><link rel="preload" as="image" href="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/customer-stories/logos/01KT6XE9QMJ3NKPKVACZGEXPZD.svg"/><link rel="preload" as="image" href="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/customer-stories/logos/01KS8NWX17MPTH2K9QJQW9EX6T.svg"/><nav aria-label="Main" data-orientation="horizontal" dir="ltr" class="sticky top-0 z-50 w-full dark:text-white [--accent-color:var(--color-laravel-red)] [--bg-color:var(--color-white)] dark:[--bg-color:var(--color-neutral-900)] [--border-color:#00000018] dark:[--border-color:#fff2] [--active-color:#f530030d] dark:[--active-color:#f530030d]"><div class="flex h-16 items-center border-b border-(--border-color) bg-(--bg-color)/80 backdrop-blur-sm transition-colors duration-150 ease-out"><div class="container flex size-full items-center justify-between"><div class="flex h-full items-center"><div class="flex h-full items-center"><div class="shrink-0 pr-5"><a class="group/logo -mx-1 block shrink-0 p-1" aria-label="Laravel" href="/"><svg viewBox="0 0 1280 314" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-5 transition-colors duration-150 ease-out text-laravel-red"><path d="M50.2753 0H0V308.689H144.713V263.27H50.2753V0Z" fill="currentColor"></path><path d="M322.209 130.973C315.796 120.684 306.688 112.602 294.883 106.718C283.081 100.84 271.201 97.8969 259.253 97.8969C243.798 97.8969 229.665 100.764 216.843 106.496C204.014 112.228 193.015 120.099 183.834 130.091C174.654 140.088 167.51 151.628 162.412 164.706C157.308 177.792 154.761 191.54 154.761 205.94C154.761 220.645 157.308 234.457 162.412 247.39C167.508 260.332 174.652 271.796 183.834 281.788C193.015 291.785 204.017 299.647 216.843 305.379C229.665 311.111 243.798 313.978 259.253 313.978C271.201 313.978 283.081 311.038 294.883 305.159C306.688 299.282 315.796 291.197 322.209 280.904V308.685H369.865V103.186H322.209V130.973ZM317.837 231.076C314.922 239.016 310.841 245.925 305.598 251.804C300.35 257.687 294.009 262.389 286.579 265.917C279.146 269.445 270.905 271.208 261.875 271.208C252.837 271.208 244.676 269.445 237.391 265.917C230.104 262.389 223.839 257.687 218.593 251.804C213.345 245.925 209.335 239.016 206.57 231.076C203.794 223.138 202.417 214.759 202.417 205.942C202.417 197.12 203.794 188.742 206.57 180.804C209.335 172.866 213.345 165.961 218.593 160.078C223.839 154.201 230.102 149.493 237.391 145.965C244.676 142.437 252.837 140.674 261.875 140.674C270.908 140.674 279.146 142.437 286.579 145.965C294.009 149.493 300.35 154.199 305.598 160.078C310.844 165.961 314.922 172.866 317.837 180.804C320.748 188.742 322.209 197.12 322.209 205.942C322.209 214.759 320.748 223.138 317.837 231.076Z" fill="currentColor"></path><path d="M709.568 130.973C703.155 120.684 694.047 112.602 682.242 106.718C670.44 100.84 658.56 97.8969 646.612 97.8969C631.157 97.8969 617.024 100.764 604.202 106.496C591.373 112.228 580.374 120.099 571.193 130.091C562.013 140.088 554.869 151.628 549.771 164.706C544.666 177.792 542.12 191.54 542.12 205.94C542.12 220.645 544.666 234.457 549.771 247.39C554.867 260.332 562.01 271.796 571.193 281.788C580.374 291.785 591.375 299.647 604.202 305.379C617.024 311.111 631.157 313.978 646.612 313.978C658.56 313.978 670.44 311.038 682.242 305.159C694.047 299.282 703.155 291.197 709.568 280.904V308.685H757.224V103.186H709.568V130.973ZM705.198 231.076C702.283 239.016 698.202 245.925 692.959 251.804C687.711 257.687 681.37 262.389 673.94 265.917C666.507 269.445 658.266 271.208 649.236 271.208C64
1220.198 271.208 632.037 269.445 624.752 265.917C617.465 262.389 611.2 257.687 605.954 251.804C600.706 245.925 596.696 239.016 593.931 231.076C591.155 223.138 589.778 214.759 589.778 205.942C589.778 197.12 591.155 188.742 593.931 180.804C596.696 172.866 600.706 165.961 605.954 160.078C611.2 154.201 617.463 149.493 624.752 145.965C632.037 142.437 640.198 140.674 649.236 140.674C658.269 140.674 666.507 142.437 673.94 145.965C681.37 149.493 687.711 154.199 692.959 160.078C698.205 165.961 702.283 172.866 705.198 180.804C708.109 188.742 709.57 197.12 709.57 205.942C709.568 214.759 708.107 223.138 705.198 231.076Z" fill="currentColor"></path><path d="M1280 1.12315e-05H1232.35V308.689H1280V1.12315e-05Z" fill="currentColor"></path><path d="M407.466 308.689H455.117V150.486H536.876V103.192H407.466V308.689Z" fill="currentColor"></path><path d="M948.281 103.192L888.386 260.557L828.489 103.192H780.224L858.441 308.689H918.331L996.546 103.192H948.281Z" fill="currentColor"></path><path d="M1100.48 97.908C1042.13 97.908 995.937 146.279 995.937 205.944C995.937 271.9 1040.64 313.98 1106.59 313.98C1143.5 313.98 1167.06 299.745 1195.85 268.746L1163.66 243.621C1163.64 243.646 1139.36 275.802 1103.1 275.802C1060.96 275.802 1043.22 241.533 1043.22 223.803H1201.32C1209.62 155.913 1165.37 97.908 1100.48 97.908ZM1043.35 188.085C1043.71 184.13 1049.2 136.086 1100.1 136.086C1151.01 136.086 1157.19 184.123 1157.55 188.085H1043.35Z" fill="currentColor"></path></svg></a></div></div><div style="position:relative"><ul data-orientation="horizontal" class="hidden pt-px lg:block" dir="ltr"><div class="flex items-center" style="opacity:1;filter:blur(0px)"><li class="relative"><button id="radix-_R_25_-trigger-framework" data-state="closed" aria-expanded="false" aria-controls="radix-_R_25_-content-framework" class="flex h-9 items-center rounded-lg px-3 text-[15px] font-medium tracking-tight text-neutral-900 hover:bg-(--active-color) data-[state=open]:bg-(--active-color) dark:text-neutral-300 dark:hover:text-white group cursor-pointer gap-1 pr-1.5 lg:pr-2" data-radix-collection-item="">Framework<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="size-4 text-(--accent-color) lg:size-5" aria-hidden="true"><g class="transition-transform duration-150 ease-out group-data-[state=open]:-translate-y-[5.25px]"><path d="M5.75 8.75L10 13" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:-rotate-90"></path><path d="M10 13L14.25 8.75" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:rotate-90"></path></g></svg></button></li><li class="relative"><button id="radix-_R_25_-trigger-products" data-state="closed" aria-expanded="false" aria-controls="radix-_R_25_-content-products" class="flex h-9 items-center rounded-lg px-3 text-[15px] font-medium tracking-tight text-neutral-900 hover:bg-(--active-color) data-[state=open]:bg-(--active-color) dark:text-neutral-300 dark:hover:text-white group cursor-pointer gap-1 pr-1.5 lg:pr-2" data-radix-collection-item="">Products<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="size-4 text-(--accent-color) lg:size-5" aria-hidden="true"><g class="transition-transform duration-150 ease-out group-data-[state=open]:-translate-y-[5.25px]"><path d="M5.75 8.75L10 13" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:-rotate-90"></path><path d="M10 13L14.25 8.75" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:rotate-90"></path></g></svg></button></li><li class="relative"><button id="radix-_R_25_-trigger-resources" data-state="closed" aria-expanded="false" aria-controls="radix-_R_25_-content-resources" class="flex h-9 items-center rounded-lg px-3 text-[15px] font-medium tracking-tight text-neutral-900 hover:bg-(--active-color) data-[state=open]:bg-(--active-color) dark:text-neutral-300 dark:hover:text-white group cursor-pointer gap-1 pr-1.5 lg:pr-2" data-radix-collection-item="">Resources<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="size-4 text-(--accent-color) lg:size-5" aria-hidden="true"><g class="transition-transform duration-150 ease-out group-data-[state=open]:-translate-y-[5.25px]"><path d="M5.75 8.75L10 13" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:-rotate-90"></path><path d="M10 13L14.25 8.75" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:rotate-90"></path></g></svg></button></li><li class="relative"><button id="radix-_R_25_-trigger-events" data-state="closed" aria-expanded="false" aria-controls="radix-_R_25_-content-events" class="flex h-9 items-center rounded-lg px-3 text-[15px] font-medium tracking-tight text-neutral-900 hover:bg-(--active-color) data-[state=open]:bg-(--active-color) dark:text-neutral-300 dark:hover:text-white group cursor-pointer gap-1 pr-1.5 lg:pr-2" data-radix-collection-item="">Events<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="size-4 text-(--accent-color) lg:size-5" aria-hidden="true"><g class="transition-transform duration-150 ease-out group-data-[state=open]:-translate-y-[5.25px]"><path d="M5.75 8.75L10 13" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:-rotate-90"></path><path d="M10 13L14.25 8.75" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:rotate-90"></path></g></svg></button></li><li><a class="flex h-9 items-center rounded-lg px-3 text-[15px] font-medium tracking-tight text-neutral-900 hover:bg-(--active-color) data-[state=open]:bg-(--active-color) dark:text-neutral-300 dark:hover:text-white" href="/framework/docs">Docs</a></li></div></ul></div></div><div class="flex items-center gap-4"><div class="flex items-center gap-4" style="opacity:1;filter:blur(0px);transform:none"><a href="https://github.com/laravel/laravel" class="flex hidden items-center gap-2 text-[15px] font-medium tracking-tight text-neutral-900 hover:text-blue-600 lg:flex dar
122k:text-neutral-400 dark:hover:text-neutral-100" target="_blank" rel="noopener noreferrer"><svg class="size-4" viewBox="0 0 16 16" fill="currentColor"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg><span>85K</span></a><button type="button" class="group relative hidden h-8 items-center gap-1 rounded-lg border border-neutral-200 bg-white px-2 text-sm shadow-xs xs:flex hover:bg-neutral-50 data-[state=open]:bg-neutral-50 dark:border-neutral-700 dark:bg-neutral-800 dark:hover:bg-neutral-700 data-[state=open]:dark:bg-neutral-700" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-_R_tme5_" data-state="closed">Sign in<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="size-4 opacity-50" aria-hidden="true"><g class="transition-transform duration-150 ease-out group-data-[state=open]:-translate-y-[5.25px]"><path d="M5.75 8.75L10 13" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:-rotate-90"></path><path d="M10 13L14.25 8.75" class="transition-transform duration-150 ease-out origin-[10px_13px] group-data-[state=open]:rotate-90"></path></g></svg></button><button type="button" class="relative hidden h-8 min-w-40 items-center gap-2 rounded-lg border border-neutral-200 bg-white px-2 shadow-xs hover:bg-neutral-50 lg:flex dark:border-neutral-700 dark:bg-neutral-800 dark:hover:bg-neutral-700"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-4 shrink-0 text-neutral-400 dark:text-neutral-500"><path fill-rule="evenodd" d="M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.452 4.391l3.328 3.329a.75.75 0 1 1-1.06 1.06l-3.329-3.328A7 7 0 0 1 2 9Z" clip-rule="evenodd"></path></svg><div class="grow text-left text-sm tracking-tight text-neutral-500 dark:text-neutral-300">Search docs<div id="docsearch-_R_15me5_" class="absolute inset-0 cursor-pointer bg-transparent text-base *:absolute *:inset-0 *:px-9 *:py-1.5 dark:text-neutral-300"></div></div><kbd class="shrink-0 text-sm tracking-tight text-neutral-400 dark:text-neutral-500">âK</kbd></button></div><button type="button" class="flex items-center justify-center rounded-lg p-1 lg:hidden" aria-label="Open navigation menu"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="size-6 text-black dark:text-white"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 9h16.5m-16.5 6.75h16.5"></path></svg></button><div class="pointer-events-none fixed top-0 left-0 z-99 h-screen w-screen overflow-hidden"><div class="pointer-events-auto size-full overflow-hidden bg-(--bg-color) leading-tight transition-transform duration-300 ease-out lg:hidden translate-x-full" inert="" aria-hidden="true"><div class="flex size-full flex-col overflow-y-auto"><div class="flex items-center justify-between p-6"><a class="shrink-0 p-1" href="/"><svg viewBox="0 0 1280 314" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-5 text-laravel-red"><path d="M50.2753 0H0V308.689H144.713V263.27H50.2753V0Z" fill="currentColor"></path><path d="M322.209 130.973C315.796 120.684 306.688 112.602 294.883 106.718C283.081 100.84 271.201 97.8969 259.253 97.8969C243.798 97.8969 229.665 100.764 216.843 106.496C204.014 112.228 193.015 120.099 183.834 130.091C174.654 140.088 167.51 151.628 162.412 164.706C157.308 177.792 154.761 191.54 154.761 205.94C154.761 220.645 157.308 234.457 162.412 247.39C167.508 260.332 174.652 271.796 183.834 281.788C193.015 291.785 204.017 299.647 216.843 305.379C229.665 311.111 243.798 313.978 259.253 313.978C271.201 313.978 283.081 311.038 294.883 305.159C306.688 299.282 315.796 291.197 322.209 280.904V308.685H369.865V103.186H322.209V130.973ZM317.837 231.076C314.922 239.016 310.841 245.925 305.598 251.804C300.35 257.687 294.009 262.389 286.579 265.917C279.146 269.445 270.905 271.208 261.875 271.208C252.837 271.208 244.676 269.445 237.391 265.917C230.104 262.389 223.839 257.687 218.593 251.804C213.345 245.925 209.335 239.016 206.57 231.076C203.794 223.138 202.417 214.759 202.417 205.942C202.417 197.12 203.794 188.742 206.57 180.804C209.335 172.866 213.345 165.961 218.593 160.078C223.839 154.201 230.102 149.493 237.391 145.965C244.676 142.437 252.837 140.674 261.875 140.674
122C270.908 140.674 279.146 142.437 286.579 145.965C294.009 149.493 300.35 154.199 305.598 160.078C310.844 165.961 314.922 172.866 317.837 180.804C320.748 188.742 322.209 197.12 322.209 205.942C322.209 214.759 320.748 223.138 317.837 231.076Z" fill="currentColor"></path><path d="M709.568 130.973C703.155 120.684 694.047 112.602 682.242 106.718C670.44 100.84 658.56 97.8969 646.612 97.8969C631.157 97.8969 617.024 100.764 604.202 106.496C591.373 112.228 580.374 120.099 571.193 130.091C562.013 140.088 554.869 151.628 549.771 164.706C544.666 177.792 542.12 191.54 542.12 205.94C542.12 220.645 544.666 234.457 549.771 247.39C554.867 260.332 562.01 271.796 571.193 281.788C580.374 291.785 591.375 299.647 604.202 305.379C617.024 311.111 631.157 313.978 646.612 313.978C658.56 313.978 670.44 311.038 682.242 305.159C694.047 299.282 703.155 291.197 709.568 280.904V308.685H757.224V103.186H709.568V130.973ZM705.198 231.076C702.283 239.016 698.202 245.925 692.959 251.804C687.711 257.687 681.37 262.389 673.94 265.917C666.507 269.445 658.266 271.208 649.236 271.208C640.198 271.208 632.037 269.445 624.752 265.917C617.465 262.389 611.2 257.687 605.954 251.804C600.706 245.925 596.696 239.016 593.931 231.076C591.155 223.138 589.778 214.759 589.778 205.942C589.778 197.12 591.155 188.742 593.931 180.804C596.696 172.866 600.706 165.961 605.954 160.078C611.2 154.201 617.463 149.493 624.752 145.965C632.037 142.437 640.198 140.674 649.236 140.674C658.269 140.674 666.507 142.437 673.94 145.965C681.37 149.493 687.711 154.199 692.959 160.078C698.205 165.961 702.283 172.866 705.198 180.804C708.109 188.742 709.57 197.12 709.57 205.942C709.568 214.759 708.107 223.138 705.198 231.076Z" fill="currentColor"></path><path d="M1280 1.12315e-05H1232.35V308.689H1280V1.12315e-05Z" fill="currentColor"></path><path d="M407.466 308.689H455.117V150.486H536.876V103.192H407.466V308.689Z" fill="currentColor"></path><path d="M948.281 103.192L888.386 260.557L828.489 103.192H780.224L858.441 308.689H918.331L996.546 103.192H948.281Z" fill="currentColor"></path><path d="M1100.48 97.908C1042.13 97.908 995.937 146.279 995.937 205.944C995.937 271.9 1040.64 313.98 1106.59 313.98C1143.5 313.98 1167.06 299.745 1195.85 268.746L1163.66 243.621C1163.64 243.646 1139.36 275.802 1103.1 275.802C1060.96 275.802 1043.22 241.533 1043.22 223.803H1201.32C1209.62 155.913 1165.37 97.908 1100.48 97.908ZM1043.35 188.085C1043.71 184.13 1049.2 136.086 1100.1 136.086C1151.01 136.086 1157.19 184.123 1157.55 188.085H1043.35Z" fill="currentColor"></path></svg></a><button type="button" aria-label="Close navigation menu" class="flex items-center justify-center rounded-lg p-1 lg:hidden"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="size-6 text-black dark:text-white"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"></path></svg></button></div><ul class="flex flex-col px-6"><li class="w-full"><button type="button" class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)"><span>Framework</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="size-4 shrink-0 text-(--accent-color)"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"></path></svg></button></li><li class="w-full"><button type="button" class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)"><span>Products</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="size-4 shrink-0 text-(--accent-color)"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"></path></svg></button></li><li class="w-full"><button type="button" class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)"><span>Resources</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="size-4 shrink-0 text-(--accent-color)"><path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5"></path></svg></button></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/community">Events</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/framework/docs">Docs</a></li></ul></div><div class="absolute inset-0 overflow-y-auto bg-(--bg-color) transition-transform duration-300 ease-out delay-300 translate-x-full" inert="" aria-hidden="true"><div class="flex items-center justify-between gap-2 p-6"><button type="button" class="flex grow items-center gap-2 p-1 text-xl font-medium" aria-label="Back to main menu"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-5 text-(--accent-color)"><path fill-rule="evenodd" d="M17 10a.75.75 0 0 1-.75.75H5.612l4.158 3.96a.75.75 0 1 1-1.04 1.08l-5.5-5.25a.75.75 0 0 1 0-1.08l5.5-5.25a.75.75 0 1 1 1.04 1.08L5.612 9.25H16.25A.75.75 0 0 1 17 10Z" clip-rule="evenodd"></path></svg>
122Framework</button><button type="button" class="flex items-center justify-center rounded-lg p-1 md:hidden" aria-label="Close navigation menu"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="size-6 text-black dark:text-white"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"></path></svg></button></div><ul class="flex flex-col px-6"><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/">Overview</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/starter-kits">Starter Kits</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/framework/docs/releases">Release Notes</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/framework/docs">Documentation</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/learn">Laravel Learn</a></li></ul></div><div class="absolute inset-0 overflow-y-auto bg-(--bg-color) transition-transform duration-300 ease-out delay-300 translate-x-full" inert="" aria-hidden="true"><div class="flex items-center justify-between gap-2 p-6"><button type="button" class="flex grow items-center gap-2 p-1 text-xl font-medium" aria-label="Back to main menu"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-5 text-(--accent-color)"><path fill-rule="evenodd" d="M17 10a.75.75 0 0 1-.75.75H5.612l4.158 3.96a.75.75 0 1 1-1.04 1.08l-5.5-5.25a.75.75 0 0 1 0-1.08l5.5-5.25a.75.75 0 1 1 1.04 1.08L5.612 9.25H16.25A.75.75 0 0 1 17 10Z" clip-rule="evenodd"></path></svg>Products</button><button type="button" class="flex items-center justify-center rounded-lg p-1 md:hidden" aria-label="Close navigation menu"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="size-6 text-black dark:text-white"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"></path></svg></button></div><ul class="flex flex-col px-6"><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/cloud">Laravel Cloud</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/forge">Forge</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/nightwatch">Nightwatch</a></li><li class="w-full"><a href="https://nova.laravel.com" class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)">Nova</a></li></ul></div><div class="absolute inset-0 overflow-y-auto bg-(--bg-color) transition-transform duration-300 ease-out delay-300 translate-x-full" inert="" aria-hidden="true"><div class="flex items-center justify-between gap-2 p-6"><button type="button" class="flex grow items-center gap-2 p-1 text-xl font-medium" aria-label="Back to main menu"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-5 text-(--accent-color)"><path fill-rule="evenodd" d="M17 10a.75.75 0 0 1-.75.75H5.612l4.158 3.96a.75.75 0 1 1-1.04 1.08l-5.5-5.25a.75.75 0 0 1 0-1.08l5.5-5.25a.75.75 0 1 1 1.04 1.08L5.612 9.25H16.25A.75.75 0 0 1 17 10Z" clip-rule="evenodd"></path></svg>Resources</button><button type="button" class="flex items-center justify-center rounded-lg p-1 md:hidden" aria-label="Close navigation menu"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="size-6 text-black dark:text-white">
122<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"></path></svg></button></div><ul class="flex flex-col px-6"><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/blog">Blog</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/partners">Partners</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/careers">Careers</a></li><li class="w-full"><a href="https://trust.laravel.com" class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)">Trust</a></li><li class="w-full"><a class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)" href="/legal">Legal</a></li><li class="w-full"><a href="https://status.laravel.com" class="flex w-full items-center justify-between py-4 text-xl font-medium leading-none cursor-pointer border-b border-(--border-color)">Status</a></li></ul></div></div></div></div></div></div><div class="absolute top-full right-0 left-0 flex justify-center px-4 perspective-[2000px]"></div></nav><main><div class="relative container"><div class="flex items-center justify-between pt-12 md:pt-32"><h1 class="text-4xl font-medium tracking-tighter text-pretty text-neutral-900 sm:text-5xl md:text-7xl">Laravel Blog</h1><a href="/feed" class="flex items-center gap-2 p-1 text-sm/[1.5] font-medium text-slate-light-11 transition-colors hover:text-slate-light-12 sm:p-0" aria-label="Follow RSS feed"><span class="hidden sm:inline-block">Follow RSS feed</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-5 text-blog-orange sm:size-4"><path d="M3.75 3a.75.75 0 0 0-.75.75v.5c0 .414.336.75.75.75H4c6.075 0 11 4.925 11 11v.25c0 .414.336.75.75.75h.5a.75.75 0 0 0 .75-.75V16C17 8.82 11.18 3 4 3h-.25Z"></path><path d="M3 8.75A.75.75 0 0 1 3.75 8H4a8 8 0 0 1 8 8v.25a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1-.75-.75V16a6 6 0 0 0-6-6h-.25A.75.75 0 0 1 3 9.25v-.5ZM7 15a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path></svg></a></div><div class="relative mt-6 mb-6 md:mt-20"><div class="absolute inset-0 border-b border-slate-light-6"></div><div class="relative flex items-end justify-between gap-5 sm:gap-8"><div class="hide-scrollbar mt-10 min-w-0 overflow-x-auto overflow-y-hidden scroll-mask-x-from-[90%]"><div class="flex w-fit items-center gap-5 sm:gap-8" role="tablist"><button type="button" role="tab" aria-selected="true" class="group relative flex h-12 cursor-pointer items-center justify-center px-1 text-sm font-medium whitespace-nowrap select-none hover:text-strong text-strong"><div class="absolute inset-x-0 bottom-0 h-0.5 overflow-hidden"><div class="absolute inset-0 transition-transform duration-200 ease-out bg-slate-light-9"></div></div>All posts</button><button type="button" role="tab" aria-selected="false" class="group relative flex h-12 cursor-pointer items-center justify-center px-1 text-sm font-medium whitespace-nowrap text-default select-none hover:text-strong"><div class="absolute inset-x-0 bottom-0 h-0.5 overflow-hidden"><div class="absolute inset-0 transition-transform duration-200 ease-out translate-y-full bg-slate-light-8 group-hover:translate-y-0"></div></div>Community</button><button type="button" role="tab" aria-selected="false" class="group relative flex h-12 cursor-pointer items-center justify-center px-1 text-sm font-medium whitespace-nowrap text-default select-none hover:text-strong"><div class="absolute inset-x-0 bottom-0 h-0.5 overflow-hidden"><div class="absolute inset-0 transition-transform duration-200 ease-out translate-y-full bg-slate-light-8 group-hover:translate-y-0"></div></div>Customers</button><button type="button" role="tab" aria-selected="false" class="group relative flex h-12 cursor-pointer items-center justify-center px-1 text-sm font-medium whitespace-nowrap text-default select-none hover:text-strong"><div class="absolute inset-x-0 bottom-0 h-0.5 overflow-hidden"><div class="absolute inset-0 transition-transform duration-200 ease-out translate-y-full bg-slate-light-8 group-hover:translate-y-0"></div></div>Engineering</button><button type="button" role="tab" aria-selected="false" class="group relative flex h-12 cursor-pointer items-center justify-center px-1 text-sm font-medium whitespace-nowrap text-default select-none hover:text-strong"><div class="absolute inset-x-0 bottom-0 h-0.5 overflow-hidden"><div class="absolute inset-0 transition-transform duration-200 ease-out translate-y-full bg-slate-light-8 group-hover:translate-y-0"></div></div>Releases</button></div></div><div class="relative max-w-44 shrink-0 grow"><div class="flex items-center text-neutral-500"><svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="size-3 shrink-0 -translate-y-
122px sm:size-4" color="currentColor"><path d="M15 15L11.6629 11.6629M11.6629 11.6629C12.7932 10.5325 13.4923 8.97099 13.4923 7.24616C13.4923 3.7965 10.6958 1 7.24616 1C3.7965 1 1 3.7965 1 7.24616C1 10.6958 3.7965 13.4923 7.24616 13.4923C8.97099 13.4923 10.5325 12.7932 11.6629 11.6629Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg><input type="text" placeholder="Search posts" size="1" class="min-w-32 grow border-0 border-b border-transparent bg-transparent pr-0 font-sans text-base leading-loose font-medium text-neutral-900 placeholder-neutral-500 transition-colors outline-none focus-within:ring-transparent focus:border-neutral-200 focus:text-neutral-900 sm:text-sm" value=""/></div></div></div></div><div class="grid transition-[grid-template-rows] duration-300 ease-in-out grid-rows-[1fr]"><div class="min-h-0 overflow-clip transition-opacity duration-300 ease-in-out"><div class="mb-32 grid grid-cols-1 gap-6 gap-y-16 lg:grid-flow-dense lg:grid-cols-12"><div class="lg:col-span-8 lg:row-span-2"><article class="group relative z-0 cursor-pointer transition-colors"><div class="flex h-full flex-col"><div class="relative aspect-video w-full bg-stone-100"><img src="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/cms/posts/featured-images/migrating-pinkary-to-laravel-cloud_featured.png" alt="Migrating Pinkary from Laravel Forge to Laravel Cloud: An engineering playbook" class="absolute top-0 left-0 size-full object-cover"/></div><div class="mt-6 flex items-center gap-2 text-sm font-medium text-stone-500"><span class="">Sep 30, 2026</span><span>·</span><a class="z-20 hover:text-blog-orange" href="/blog/category/community">Community</a></div><h3 class="mt-3 text-lg/[1.5] font-medium text-pretty text-stone-800 group-hover:text-blog-orange"><a class="block after:absolute after:inset-0 after:z-10" href="/blog/migrating-pinkary-from-laravel-forge-to-laravel-cloud">Migrating Pinkary from Laravel Forge to Laravel Cloud: An engineering playbook</a></h3><p class="mt-2 line-clamp-2 overflow-hidden text-base/[1.4] font-medium text-stone-500">Pinkary's move from Laravel Forge to Laravel Cloud exposed SQLite and MySQL differences, query assumptions, and local-storage coupling. Here is the code-backed migration playbook.</p><p class="mt-3 truncate text-sm/[1] font-medium text-stone-800"><span>Punyapal Shah</span></p></div></article></div><div class="lg:col-span-4 lg:row-span-2"><article class="group relative z-0 cursor-pointer transition-colors"><div class="flex h-full flex-col"><div class="relative aspect-video w-full bg-stone-100"><img src="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/cms/posts/featured-images/featured_image-preview-environments-and-scale-to-zero_-better-together-(1).png" alt="Preview environments and scale to zero: Better together" class="absolute top-0 left-0 size-full object-cover"/></div><div class="mt-6 flex items-center gap-2 text-sm font-medium text-stone-500"><span class="">Sep 28, 2026</span><span>·</span><a class="z-20 hover:text-blog-orange" href="/blog/category/releases">Releases</a></div><h3 class="mt-3 text-lg/[1.5] font-medium text-pretty text-stone-800 group-hover:text-blog-orange"><a class="block after:absolute after:inset-0 after:z-10" href="/blog/preview-environments-and-scale-to-zero-better-together">Preview environments and scale to zero: Better together</a></h3><p class="mt-2 line-clamp-2 overflow-hidden text-base/[1.4] font-medium text-stone-500">Give every pull request its own preview environment on Laravel Cloud. Share a link, test the full stack, and let idle previews scale to zero.</p><p class="mt-3 truncate text-sm/[1] font-medium text-stone-800"><span>Philip Hartin</span></p></div></article></div><div class="lg:col-span-4 lg:row-span-2"><article class="group relative z-0 cursor-pointer transition-colors"><div class="flex h-full flex-col"><div class="relative aspect-video w-full bg-stone-100"><img src="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/cms/posts/featured-images/laravel-ai-sdk-v1-featured.png" alt="Introducing Laravel AI SDK v1.0" class="absolute top-0 left-0 size-full object-cover"/>
122</div><div class="mt-6 flex items-center gap-2 text-sm font-medium text-stone-500"><span class="">Sep 23, 2026</span><span>·</span><a class="z-20 hover:text-blog-orange" href="/blog/category/releases">Releases</a></div><h3 class="mt-3 text-lg/[1.5] font-medium text-pretty text-stone-800 group-hover:text-blog-orange"><a class="block after:absolute after:inset-0 after:z-10" href="/blog/introducing-laravel-ai-sdk-v1">Introducing Laravel AI SDK v1.0</a></h3><p class="mt-2 line-clamp-2 overflow-hidden text-base/[1.4] font-medium text-stone-500">Laravel AI SDK v1.0 is here: one Laravel-native API for every provider, with conversation storage, streaming chat, agents, tool approvals, and Jev classification.</p><p class="mt-3 truncate text-sm/[1] font-medium text-stone-800"><span>Pushpak Chhajed</span></p></div></article></div><div class="lg:col-span-4 lg:row-span-3"><article class="group relative z-0 cursor-pointer transition-colors"><div class="flex h-full flex-col"><div class="relative aspect-video w-full bg-stone-100"><img src="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/cms/posts/featured-images/better-way-mcp-server-laravel_featured.png" alt="A better way to build MCP servers with Laravel" class="absolute top-0 left-0 size-full object-cover"/></div><div class="mt-6 flex items-center gap-2 text-sm font-medium text-stone-500"><span class="">Sep 11, 2026</span><span>·</span><a class="z-20 hover:text-blog-orange" href="/blog/category/engineering">Engineering</a></div><h3 class="mt-3 text-lg/[1.5] font-medium text-pretty text-stone-800 group-hover:text-blog-orange"><a class="block after:absolute after:inset-0 after:z-10" href="/blog/a-better-way-to-build-mcp-servers-with-laravel">A better way to build MCP servers with Laravel</a></h3><p class="mt-2 line-clamp-2 overflow-hidden text-base/[1.4] font-medium text-stone-500">Every MCP tool loads on every request. Laravel MCP 1.0 fixes that with searchable tool catalogs: the same payload for 10 or 100 tools.</p><p class="mt-3 truncate text-sm/[1] font-medium text-stone-800"><span>Pushpak Chhajed</span></p></div></article></div></div></div></div><div class="scroll-mt-24"><div class="grid grid-cols-[min-content_minmax(0,1fr)] gap-x-4 transition-opacity duration-150 ease-out"><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/migrating-pinkary-from-laravel-forge-to-laravel-cloud"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Sep 30, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Migrating Pinkary from Laravel Forge to Laravel Cloud: An engineering playbook</span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/preview-environments-and-scale-to-zero-better-together"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Sep 28, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Preview environments and scale to zero: Better together</span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/introducing-laravel-ai-sdk-v1"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Sep 23, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Introducing Laravel AI SDK v1.0</span><span class="hidden min-w-0 grow basis-0 truncate text-right text-sm whitespace-nowrap sm:inline-block"><span>AI</span></span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/a-better-way-to-build-mcp-servers-with-laravel"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Sep 11, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">A better way to build MCP servers with Laravel</span><span class="hidden min-w-0 grow basis-0 truncate text-right text-sm whitespace-nowrap sm:inline-block"><span>AI</span></span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/why-i-think-we-should-write-our-own-pr-descriptions"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Sep 10, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Why I think we should write our own PR descriptions</span><span class="hidden min-w-0 grow basis-0 truncate text-right text-sm whitespace-nowrap sm:inline-block"><span>Artisans</span></span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/laravel-august-product-updates"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Sep 3, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Laravel August product updates</span><span class="hidden min-w-0 grow basis-0 truncate text-right text-sm whitespace-nowrap sm:inline-block"><span>Changelog</span></span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/semantic-memory-or-just-markdown"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Sep 3, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Semantic memory or just Markdown?</span><span class="hidden min-w-0 grow basis-0 truncate text-right text-sm whitespace-nowrap sm:inline-block"><span>Laravel Boost</span><span class="mx-2">·</span><span>AI</span></span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/extracting-ai-rules-from-an-existing-codebase"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Aug 31, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Extracting AI rules from an existing codebase</span><span class="hidden min-w-0 grow basis-0 truncate text-right text-sm whitespace-nowrap sm:inline-block"><span>Laravel Boost</span><span class="mx-2">·</span><span>AI</span></span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/hipaa-compliant-hosting-laravel"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Aug 25, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Laravel Private Cloud is now HIPAA compliant</span><span class="hidden min-w-0 grow basis-0 truncate text-right text-sm whitespace-nowrap sm:inline-block"><span>Private Cloud</span></span></div></a><a class="group relative col-span-2 grid grid-cols-subgrid border-b border-slate-light-4 py-5 font-medium text-stone-500 hover:text-stone-700" href="/blog/object-storage-migrations-with-laravels-read-through-filesystem"><div class="flex items-center text-sm whitespace-nowrap md:min-w-40"><span>Aug 18, 2026</span></div><div class="flex items-center justify-between gap-6"><span class="min-w-0 truncate text-base/[1.72] text-stone-700 group-hover:text-blog-orange">Object storage migrations with Laravel's read-through filesystem</span><span class="hidden min-w-0 grow basis-0 truncate text-right text-sm whitespace-nowrap sm:inline-block"><span>Framework</span></span></div></a></div><div class="my-8 flex items-center justify-between gap-4 sm:justify-end"><div class="text-sm text-balance text-neutral-500 dark:text-neutral-400 [&_strong]:font-medium [&_strong]:text-strong">Showing<!-- --> <strong>1<!-- -->-<!-- -->10</strong> <!-- -->of <strong>438</strong><span class="max-xs:hidden"> results</span></div><div class="flex items-center justify-center space-x-1"><div class="flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
122<path d="M14 16L10 12L14 8" stroke="#C1C8CD" stroke-width="1.5" stroke-linecap="square"></path></svg></div><button class="text-13 rounded border border-neutral-200 bg-white font-medium text-neutral-900 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 flex h-8 w-8 cursor-pointer items-center justify-center" aria-label="Go to page 1" aria-current="page">1</button><button class="text-13 text-neutral-500 hover:rounded hover:bg-neutral-50 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-white/5 dark:hover:text-neutral-100 flex h-8 w-8 cursor-pointer items-center justify-center" aria-label="Go to page 2">2</button><button class="text-13 text-neutral-500 hover:rounded hover:bg-neutral-50 hover:text-neutral-900 dark:text-neutral-400 dark:hover:bg-white/5 dark:hover:text-neutral-100 flex h-8 w-8 cursor-pointer items-center justify-center" aria-label="Go to page 3">3</button><button class="flex items-center justify-center text-neutral-500 hover:bg-neutral-50 dark:text-neutral-400 dark:hover:bg-white/5" aria-label="Go to next page"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M10 16L14 12L10 8" stroke="#687076" stroke-width="1.5" stroke-linecap="square"></path></svg></button></div></div></div><div><div class="not-prose mx-auto max-w-2xl text-2xl font-medium py-32"><blockquote class="relative"><span class="absolute top-0 -left-2">â</span><p class="text-pretty text-default">If I could do something differently, I would have left Vapor earlier, just because of cost.<!-- --> <strong class="font-medium text-strong">Our infrastructure costs on Laravel Cloud are more than 50% lower</strong>.<!-- -->â</p></blockquote><div class="mt-6 flex flex-col items-start justify-between gap-y-6 sm:flex-row sm:items-end"><div class="flex items-center gap-3 text-base"><div class="size-12 overflow-hidden rounded-sm shadow-inner"><img src="/images/cloud/testimonials/fa-perreault.png" alt="Fa Perreault" class="size-full" loading="lazy"/></div><div><p class="text-strong">Fa Perreault</p><p class="text-default">Solutions Architect at PyleSoft</p></div></div><a href="/cloud/customer-stories/pylesoft-cuts-infrastructure-costs-50-migrating-from-vapor-to-cloud" target="_blank" class="group/button relative isolate inline-flex cursor-pointer items-center justify-center rounded-lg tracking-tight shadow-xs select-none border border-transparent text-center font-medium whitespace-nowrap transition-colors duration-50 ease-out focus:outline-hidden focus-visible:ring-3 bg-black text-white ring-black/40 hover:bg-black/90 h-8 gap-2 px-3 text-sm" rel="noopener noreferrer">Read full story<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="size-3.5 transition-transform duration-100 group-hover/button:translate-x-px"><path d="M14 5.75L20.25 12L14 18.25M19.5 12H3.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="square"></path></svg></a></div></div></div><div class="py-20"><div class="mb-12 flex items-end justify-between"><h2 class="text-3xl font-medium text-pretty text-neutral-900">Customer stories</h2><a class="group hidden items-center gap-1 text-base font-medium text-stone-500 hover:text-stone-700 sm:flex" href="/cloud/customer-stories">View all customer stories<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-4 transition-transform duration-100 ease-out group-hover:translate-x-px"><path fill-rule="evenodd" d="M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"></path></svg></a></div><div style="--cols:4" class="grid grid-cols-1 gap-y-8 md:grid-cols-2 lg:grid-cols-[repeat(var(--cols),minmax(0,1fr))]"><a class="group relative block h-full min-h-[240px] overflow-hidden" href="/cloud/customer-stories/how-sportmonks-handles-600m-api-requests-a-week-on-laravel-cloud"><div class="absolute inset-0 border-l border-black/10"></div><div class="relative flex h-full flex-col justify-between gap-14 p-6"><div><div class="relative h-7"><img src="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/customer-stories/logos/01KW21R91TZFY67HFGYFMC73ZA.svg" alt="Sportmonks" class="size-full object-contain object-left"/></div></div><div><span class="relative block text-7xl leading-[96%] font-medium tracking-tight text-black group-hover:text-blog-orange"><div class="absolute inset-y-0 -left-6 h-full w-[3px] -translate-x-[3px] bg-blog-orange transition-transform duration-150 ease-out group-hover:translate-x-0"></div>600<span class="opacity-60 group-hover:opacity-100">M</span></span><span class="mt-2 block text-base font-medium tracking-tight text-stone-500 group-hover:text-stone-700">How Sportmonks Handles 600M API Requests a Week on Laravel Cloud</span></div></div></a><a class="group relative block h-full min-h-[240px] overflow-hidden" href="/cloud/customer-stories/how-shoptimised-cut-infra-costs-by-42-and-deployment-time-by-30x"><div class="absolute inset-0 border-l border-black/10"></div><div class="relative flex h-full flex-col justify-between gap-14 p-6"><div><div class="relative h-7"><img src="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/customer-stories/logos/01M265FFMJ2JSAM0ADNQ9YQEHZ.svg" alt="Shoptimised" class="size-full object-contain object-left"/></div></div><div><span class="relative block text-7xl leading-[96%] font-medium tracking-tight text-black group-hover:text-blog-orange"><div class="absolute inset-y-0 -left-6 h-full w-[3px] -translate-x-[3px] bg-blog-orange transition-transform duration-150 ease-out group-hover:translate-x-0"></div>30<span class="opacity-60 group-hover:opacity-100">x</span></span><span class="mt-2 block text-base font-medium tracking-tight text-stone-500 group-hover:text-stone-700">How Shoptimised cut infra costs by 42%, and deployment time by 30x</span></div></div></a><a class="group relative block h-full min-h-[240px] overflow-hidden" href="/cloud/customer-stories/how-roomies-cut-compute-costs-80-and-unlocked-nightwatch"><div class="absolute inset-0 border-l border-black/10"></div><div class="relative flex h-full flex-col justify-between gap-14 p-6"><div><div class="relative h-7"><img src="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/customer-stories/logos/01KT6XE9QMJ3NKPKVACZGEXPZD.svg" alt="Roomies" class="size-full object-contain object-left"/></div></div><div><span class="relative block text-7xl leading-[96%] font-medium tracking-tight text-black group-hover:text-blog-orange"><div class="absolute inset-y-0 -left-6 h-full w-[3px] -translate-x-[3px] bg-blog-orange transition-transform duration-150 ease-out group-hover:translate-x-0"></div>80<span class="opacity-60 group-hover:opacity-100">%</span></span><span class="mt-2 block text-base font-medium tracking-tight text-stone-500 group-hover:text-stone-700">How Roomies Cut Compute Costs 80% and Unlocked Nightwatch </span></div></div></a><a class="group relative block h-full min-h-[240px] overflow-hidden" href="/cloud/customer-stories/pylesoft-cuts-infrastru
122cture-costs-50-migrating-from-vapor-to-cloud"><div class="absolute inset-0 border-l border-black/10"></div><div class="relative flex h-full flex-col justify-between gap-14 p-6"><div><div class="relative h-7"><img src="https://fls-9f826fcc-b2ad-40d8-813f-9cf7dac049fa.laravel.cloud/customer-stories/logos/01KS8NWX17MPTH2K9QJQW9EX6T.svg" alt="PyleSoft" class="size-full object-contain object-left"/></div></div><div><span class="relative block text-7xl leading-[96%] font-medium tracking-tight text-black group-hover:text-blog-orange"><div class="absolute inset-y-0 -left-6 h-full w-[3px] -translate-x-[3px] bg-blog-orange transition-transform duration-150 ease-out group-hover:translate-x-0"></div>50<span class="opacity-60 group-hover:opacity-100">%</span></span><span class="mt-2 block text-base font-medium tracking-tight text-stone-500 group-hover:text-stone-700">PyleSoft Cuts Infrastructure Costs 50% Migrating from Vapor to Cloud</span></div></div></a></div><a class="group mt-10 flex items-center gap-1 text-base font-medium text-stone-700 hover:text-stone-900 sm:hidden" href="/cloud/customer-stories">View all customer stories<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon" class="size-4 transition-transform duration-100 ease-out group-hover:translate-x-px"><path fill-rule="evenodd" d="M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"></path></svg></a></div><div class="grid grid-cols-1 gap-x-10 gap-y-2 py-24 sm:grid-cols-2"><h2 class="mb-4 pt-3 text-3xl font-medium text-pretty text-neutral-900">Stay connected with Laravel and receive news in your inbox.</h2><form class="max-w-3xl" noValidate=""><div class="flex flex-col items-start gap-4"><div class="w-full"><input type="email" placeholder="[email protected]" class="w-full border-b-2 bg-transparent py-3 text-3xl font-normal text-neutral-900 placeholder-neutral-400 caret-laravel-red transition-colors focus:ring-0 focus:outline-none border-transparent" required="" value=""/></div><button type="submit" class="mb-4 w-full rounded-xs border border-transparent bg-neutral-900 px-4 py-2 font-medium text-white shadow-primary-button transition duration-100 hover:bg-black hover:shadow-primary-button-hover enabled:cursor-pointer disabled:cursor-not-allowed disabled:opacity-50 dark:bg-neutral-100 dark:text-neutral-900 dark:hover:bg-neutral-200">Subscribe</button></div><p class="text-xs mt-4 text-neutral-500 dark:text-neutral-400">By submitting this form, you agree to our<!-- --> <a href="/legal" target="_blank" class="underline hover:no-underline text-neutral-700 hover:text-neutral-900 dark:text-neutral-200 dark:hover:text-white">terms</a>. You can opt-out anytime.</p></form></div></div></main><div class="border-t border-neutral-200 bg-white dark:border-neutral-700 dark:bg-neutral-900"><div class="mx-auto w-full max-w-full px-4 pt-10 md:pt-24 xl:max-w-screen-xl xl:px-16"><div class="flex flex-col justify-between lg:flex-row lg:gap-12"><div class="w-full lg:w-[30%]"><div class="mb-6 h-10 w-10"><svg width="42" height="42" viewBox="0 0 42 42" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M41 9.88889L33 5.44444L25 9.88889M41 9.88889L33 14.3333M41 9.88889V18.7778L33 23.2222M25 9.88889V18.7778M25 9.88889L33 14.3333M25 18.7778L33 23.2222M25 18.7778L9 27.6667M33 23.2222V32.1111L17 41M33 23.2222V14.3333M33 23.2222L17 32.1111M9 27.6667L17 32.1111M9 27.6667V9.88889M1 5.44444L9 1L17 5.44444M1 5.44444V32.1111L17 41M1 5.44444L9 9.88889M17 41V32.1111M9 9.88889L17 5.44444M17 5.44444V23.2222" stroke="#F53003" stroke-width="1.5"></path></svg></div><p class="text-xl font-medium text-pretty text-laravel-red">Laravel is the most productive way to<br class="block lg:hidden"/>Â build, deploy, and monitor software.</p><div class="mt-8 max-w-md"><div><form data-hs-do-not-collect="" class="space-y-3" noValidate=""><div class="grid grid-cols-1 gap-3 sm:grid-cols-2"><div><label for="cloud-newsletter-firstname" class="sr-only">First name</label><input id="cloud-newsletter-firstname" type="text" autoComplete="given-name" placeholder="First name" aria-invalid="false" class="w-full rounded-md border border-neutral-300 bg-white px-3 py-2.5 text-neutral-900 placeholder-neutral-400 shadow-xs transition-colors duration-100 hover:border-neutral-400 focus:border-neutral-400 focus:outline-none focus:ring-1 focus:ring-neutral-300 sm:text-sm dark:border-neutral-600 dar
122k:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:hover:border-neutral-500 dark:focus:border-neutral-500 dark:focus:ring-neutral-600" name="firstname"/></div><div><label for="cloud-newsletter-lastname" class="sr-only">Last name</label><input id="cloud-newsletter-lastname" type="text" autoComplete="family-name" placeholder="Last name" aria-invalid="false" class="w-full rounded-md border border-neutral-300 bg-white px-3 py-2.5 text-neutral-900 placeholder-neutral-400 shadow-xs transition-colors duration-100 hover:border-neutral-400 focus:border-neutral-400 focus:outline-none focus:ring-1 focus:ring-neutral-300 sm:text-sm dark:border-neutral-600 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:hover:border-neutral-500 dark:focus:border-neutral-500 dark:focus:ring-neutral-600" name="lastname"/></div></div><div><label for="cloud-newsletter-email" class="sr-only">Email address</label><input id="cloud-newsletter-email" type="email" inputMode="email" autoComplete="email" placeholder="Email address" aria-invalid="false" class="w-full rounded-md border border-neutral-300 bg-white px-3 py-2.5 text-neutral-900 placeholder-neutral-400 shadow-xs transition-colors duration-100 hover:border-neutral-400 focus:border-neutral-400 focus:outline-none focus:ring-1 focus:ring-neutral-300 sm:text-sm dark:border-neutral-600 dar
122k:bg-neutral-800 dark:text-neutral-100 dark:placeholder-neutral-500 dark:hover:border-neutral-500 dark:focus:border-neutral-500 dark:focus:ring-neutral-600" name="email"/></div><input type="hidden" name="country"/><div><div></div></div><button type="submit" class="inline-flex w-full cursor-pointer items-center justify-center rounded-md px-3 py-2.5 text-sm font-medium shadow-xs transition-colors duration-100 focus:outline-none focus-visible:ring-2 bg-neutral-100 text-neutral-800 hover:bg-neutral-200 focus-visible:ring-neutral-300 dark:bg-neutral-700 dark:text-neutral-100 dark:hover:bg-neutral-600">Stay updated</button><p class="text-xs text-neutral-500 dark:text-neutral-400">By submitting this form, you agree to our<!-- --> <a href="/legal" target="_blank" rel="noreferrer" class="underline hover:text-neutral-700 dark:hover:text-neutral-200">terms</a>. You can opt-out anytime.</p></form></div></div><ul class="my-8 flex items-center justify-start space-x-6 lg:my-16"><li><a href="https://github.com/laravel" target="_blank" title="Laravel on GitHub" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:hover:text-neutral-300"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" aria-hidden="true" class="size-6"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 12.305C0 17.74 3.438 22.352 8.207 23.979C8.807 24.092 9.027 23.712 9.027 23.386C9.027 23.094 9.016 22.32 9.01 21.293C5.671 22.037 4.967 19.643 4.967 19.643C4.422 18.223 3.635 17.845 3.635 17.845C2.545 17.081 3.718 17.096 3.718 17.096C4.921 17.183 5.555 18.364 5.555 18.364C6.626 20.244 8.364 19.702 9.048 19.386C9.157 18.591 9.468 18.049 9.81 17.741C7.145 17.431 4.344 16.376 4.344 11.661C4.344 10.318 4.811 9.219 5.579 8.359C5.456 8.048 5.044 6.797 5.696 5.103C5.696 5.103 6.704 4.773 8.996 6.364C9.954 6.091 10.98 5.955 12.001 5.95C13.02 5.955 14.047 6.091 15.005 6.364C17.295 4.772 18.302 5.103 18.302 5.103C18.956 6.797 18.544 8.048 18.421 8.359C19.191 9.219 19.655 10.318 19.655 11.661C19.655 16.387 16.849 17.428 14.175 17.732C14.606 18.112 14.99 18.862 14.99 20.011C14.99 21.656 14.975 22.982 14.975 23.386C14.975 23.715 15.191 24.098 15.8 23.977C20.565 22.347 24 17.738 24 12.305C24 5.508 18.627 0 12 0C5.373 0 0 5.508 0 12.305Z" fill="currentColor"></path></svg></a></li><li><a href="https://x.com/laravel" target="_blank" title="Laravel on X" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:hover:text-neutral-300"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" aria-hidden="true" class="size-6"><path d="M13.969 10.1571L22.7069 0H20.6363L13.0491 8.81931L6.9893 0H0L9.16366 13.3364L0 23.9877H2.07073L10.083 14.6742L16.4826 23.9877H23.4719L13.9684 10.1571H13.969ZM11.1328 13.4538L10.2043 12.1258L2.81684 1.55881H5.99736L11.9592 10.0867L12.8876 11.4147L20.6373 22.4998H17.4567L11.1328 13.4544V13.4538Z" fill="currentColor"></path></svg></a></li><li><a href="https://www.youtube.com/@LaravelPHP" target="_blank" title="Laravel on YouTube" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:hover:text-neutral-300"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35 24" fill="none" aria-hidden="true" class="h-6"><path d="M33.8928 3.75519C33.5002 2.27706 32.3436 1.11294 30.875 0.717875C28.2132 0 17.5393 0 17.5393 0C17.5393 0 6.86559 0 4.20366 0.717875C2.73509 1.113 1.57847 2.27706 1.18591 3.75519C0.472656 6.43437 0.472656 12.0243 0.472656 12.0243C0.472656 12.0243 0.472656 17.6141 1.18591 20.2933C1.57847 21.7714 2.73509 22.8871 4.20366 23.2821C6.86559 24 17.5393 24 17.5393 24C17.5393 24 28.2131 24 30.875 23.2821C32.3436 22.8871 33.5002 21.7714 33.8928 20.2933C34.606 17.6141 34.606 12.0243 34.606 12.0243C34.606 12.0243 34.606 6.43437 33.8928 3.75519ZM14.0484 17.0994V6.94906L22.9696 12.0244L14.0484 17.0994Z" fill="currentColor"></path></svg></a></li><li><a href="https://discord.com/invite/laravel" target="_blank" title="Laravel on Discord" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:hover:text-neutral-300"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 24" fill="none" aria-hidden="true" class="h-6"><path d="M27.4299 2.00996C25.3493 1.05745 23.153 0.381713 20.8969 0C20.588
1221 0.551901 20.3088 1.11973 20.06 1.70112C17.6568 1.33898 15.2129 1.33898 12.8097 1.70112C12.5608 1.11979 12.2814 0.551968 11.9728 0C9.71525 0.384937 7.51744 1.06228 5.43483 2.01494C1.30034 8.132 0.179542 14.0971 0.73994 19.9776C3.16121 21.7665 5.87129 23.127 8.75239 24C9.40113 23.1275 9.97519 22.2018 10.4685 21.2329C9.53156 20.883 8.62728 20.4512 7.76609 19.9427C7.99274 19.7783 8.21441 19.609 8.42861 19.4446C10.9345 20.623 13.6695 21.234 16.4386 21.234C19.2077 21.234 21.9427 20.623 24.4485 19.4446C24.6652 19.6214 24.8869 19.7908 25.111 19.9427C24.2482 20.4521 23.3423 20.8846 22.4037 21.2354C22.8964 22.2039 23.4705 23.1287 24.1198 24C27.0033 23.1305 29.7155 21.7707 32.1372 19.9801C32.7947 13.1606 31.0139 7.25031 27.4299 2.00996ZM11.1783 16.3611C9.61665 16.3611 8.32649 14.944 8.32649 13.2005C8.32649 11.457 9.57182 10.0274 11.1733 10.0274C12.7748 10.0274 14.055 11.457 14.0276 13.2005C14.0002 14.944 12.7698 16.3611 11.1783 16.3611ZM21.6988 16.3611C20.1347 16.3611 18.8495 14.944 18.8495 13.2005C18.8495 11.457 20.0949 10.0274 21.6988 10.0274C23.3028 10.0274 24.5731 11.457 24.5457 13.2005C24.5183 14.944 23.2904 16.3611 21.6988 16.3611Z" fill="currentColor"></path></svg></a></li></ul><div><ul class="flex justify-start space-x-8"><li class="text-neutral-500 dark:text-neutral-500">© <!-- -->2026<!-- --> Laravel</li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" href="/legal">Legal</a></li><li><a href="https://status.laravel.com/" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">Status</a></li></ul></div></div><div class="grid w-full grid-cols-2 lg:flex lg:w-fit lg:flex-wrap lg:justify-end"><div class="mt-14 flex flex-wrap self-start lg:mt-0 lg:min-w-[164px] lg:flex-col"><p class="mb-8 w-full text-base font-medium text-neutral-900 lg:w-fit dark:text-neutral-100">Products</p><ul class="col-span-6 mb-6 space-y-6 lg:col-span-2 lg:mb-0"><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/cloud">Cloud</a></li><li><a href="https://forge.laravel.com" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade">Forge</a></li><li><a href="https://nightwatch.laravel.com" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade">Nightwatch</a></li><li><a href="https://vapor.laravel.com" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade">Vapor</a></li><li><a href="https://nova.laravel.com" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade">Nova</a></li></ul></div><div class="mt-14 flex flex-wrap self-start lg:mt-0 lg:min-w-[164px] lg:flex-col"><p class="mb-8 w-full text-base font-medium text-neutral-900 lg:w-fit dark:text-neutral-100">Packages</p><ul class="col-span-6 mb-6 space-y-6 lg:col-span-2 lg:mb-0"><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/billing">Cashier</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/dusk">Dusk</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/horizon">Horizon</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/octane">Octane</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/scout">Scout</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/pennant">Pennant</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/pint">Pint</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/sail">Sail</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/sanctum">Sanctum</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/socialite">Socialite</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/telescope">Telescope</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/pulse">Pulse</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/reverb">Reverb</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/broadcasting">Echo</a></li></ul></div><div class="mt-14 flex flex-wrap self-start lg:mt-0 lg:min-w-[164px] lg:flex-col"><p class="mb-8 w-full text-base font-medium text-neutral-900 lg:w-fit dark:text-neutral-100">Resources</p><ul class="col-span-6 mb-6 space-y-6 lg:col-span-2 lg:mb-0"><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs">Documentation</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/starter-kits">Starter Kits</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/framework/docs/releases">Release Notes</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/blog">Blog</a></li><li>
122<a href="https://laravel-news.com" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade">News</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/community">Community</a></li><li><a href="https://larabelles.com/" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade">Larabelles</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/learn">Learn</a></li><li><a href="https://larajobs.com/?partner=5" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade">Jobs</a></li><li><a class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade" href="/careers">Careers</a></li><li><a href="https://trust.laravel.com" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300" referrerPolicy="no-referrer-when-downgrade">Trust</a></li></ul></div><div class="mt-14 flex flex-wrap self-start lg:mt-0 lg:min-w-[164px] lg:flex-col"><p class="mb-8 w-full text-base font-medium text-neutral-900 lg:w-fit dark:text-neutral-100">Partners</p><ul class="col-span-6 mb-6 space-y-6 lg:col-span-2 lg:mb-0"><li><a href="/partners/jump24" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">Jump24</a></li><li><a href="/partners/vehikl" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">Vehikl</a></li><li><a href="/partners/tighten" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">Tighten</a></li><li><a href="/partners/64-robots" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">64 Robots</a></li><li><a href="/partners/byte5" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">byte5</a></li><li><a href="/partners/threadable" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">Threadable</a></li><li><a href="/partners/kirschbaum" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">Kirschbaum</a></li><li><a href="/partners/pixel" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">Pixel</a></li><li><a href="/partners/caci-limited" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">CACI Limited</a></li><li><a href="/partners/curotec" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">Curotec</a></li><li><a href="/partners" class="text-neutral-500 transition duration-100 hover:text-neutral-700 dark:text-neutral-500 dark:hover:text-neutral-300">See All</a></li></ul></div></div></div><div class="mt-24 w-full text-neutral-100"><svg viewBox="0 0 1280 314" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-full w-full text-laravel-red"><path d="M50.2753 0H0V308.689H144.713V263.27H50.2753V0Z" fill="currentColor"></path><path d="M322.209 130.973C315.796 120.684 306.688 112.602 294.883 106.718C283.081 100.84 271.201 97.8969 259.253 97.8969C243.798 97.8969 229.665 100.764 216.843 106.496C204.014 112.228 193.015 120.099 183.834 130.091C174.654 140.088 167.51 151.628 162.412 164.706C157.308 177.792 154.761 191.54 154.761 205.94C154.761 220.645 157.308 234.457 162.412 247.39C167.508 260.332 174.652 271.796 183.834 281.788C193.015 291.785 204.017 299.647 216.843 305.379C229.665 311.111 243.798 313.978 259.253 313.978C271.201 313.978 283.081 311.038 294.883 305.159C306.688 299.282 315.796 291.197 322.209 280.904V308.685H369.865V103.186H322.209V130.973ZM317.837 231.076C314.922 239.016 310.841 245.925 305.598 251.804C300.35 257.687 294.009 262.389 286.579 265.917C279.146 269.445 270.905 271.208 261.875 271.208C252.837 271.208 244.676 269.445 237.391 265.917C230.104 262.389 223.839 257.687 218.593 251.804C213.345 245.925 209.335 239.016 206.57 231.076C203.794 223.138 202.417 214.759 202.417 205.942C202.417 197.12 203.794 188.742 206.57 180.804C209.335 172.866 213.345 165.961 218.593 160.078C223.839 154.201 230.102 149.493 237.391 145.965C244.676 142.437 252.837 140.674 261.875 140.674
122C270.908 140.674 279.146 142.437 286.579 145.965C294.009 149.493 300.35 154.199 305.598 160.078C310.844 165.961 314.922 172.866 317.837 180.804C320.748 188.742 322.209 197.12 322.209 205.942C322.209 214.759 320.748 223.138 317.837 231.076Z" fill="currentColor"></path><path d="M709.568 130.973C703.155 120.684 694.047 112.602 682.242 106.718C670.44 100.84 658.56 97.8969 646.612 97.8969C631.157 97.8969 617.024 100.764 604.202 106.496C591.373 112.228 580.374 120.099 571.193 130.091C562.013 140.088 554.869 151.628 549.771 164.706C544.666 177.792 542.12 191.54 542.12 205.94C542.12 220.645 544.666 234.457 549.771 247.39C554.867 260.332 562.01 271.796 571.193 281.788C580.374 291.785 591.375 299.647 604.202 305.379C617.024 311.111 631.157 313.978 646.612 313.978C658.56 313.978 670.44 311.038 682.242 305.159C694.047 299.282 703.155 291.197 709.568 280.904V308.685H757.224V103.186H709.568V130.973ZM705.198 231.076C702.283 239.016 698.202 245.925 692.959 251.804C687.711 257.687 681.37 262.389 673.94 265.917C666.507 269.445 658.266 271.208 649.236 271.208C640.198 271.208 632.037 269.445 624.752 265.917C617.465 262.389 611.2 257.687 605.954 251.804C600.706 245.925 596.696 239.016 593.931 231.076C591.155 223.138 589.778 214.759 589.778 205.942C589.778 197.12 591.155 188.742 593.931 180.804C596.696 172.866 600.706 165.961 605.954 160.078C611.2 154.201 617.463 149.493 624.752 145.965C632.037 142.437 640.198 140.674 649.236 140.674C658.269 140.674 666.507 142.437 673.94 145.965C681.37 149.493 687.711 154.199 692.959 160.078C698.205 165.961 702.283 172.866 705.198 180.804C708.109 188.742 709.57 197.12 709.57 205.942C709.568 214.759 708.107 223.138 705.198 231.076Z" fill="currentColor"></path><path d="M1280 1.12315e-05H1232.35V308.689H1280V1.12315e-05Z" fill="currentColor"></path><path d="M407.466 308.689H455.117V150.486H536.876V103.192H407.466V308.689Z" fill="currentColor"></path><path d="M948.281 103.192L888.386 260.557L828.489 103.192H780.224L858.441 308.689H918.331L996.546 103.192H948.281Z" fill="currentColor"></path><path d="M1100.48 97.908C1042.13 97.908 995.937 146.279 995.937 205.944C995.937 271.9 1040.64 313.98 1106.59 313.98C1143.5 313.98 1167.06 299.745 1195.85 268.746L1163.66 243.621C1163.64 243.646 1139.36 275.802 1103.1 275.802C1060.96 275.802 1043.22 241.533 1043.22 223.803H1201.32C1209.62 155.913 1165.37 97.908 1100.48 97.908ZM1043.35 188.085C1043.71 184.13 1049.2 136.086 1100.1 136.086C1151.01 136.086 1157.19 184.123 1157.55 188.085H1043.35Z" fill="currentColor"></path></svg></div></div></div></div> 123 124 125
125<script type="text/javascript"> 126 !(function () { 127 'use strict'; 128 window.RudderSnippetVersion = '3.0.60'; 129 var e = 'rudderanalytics'; 130 window[e] || (window[e] = []); 131 var rudderanalytics = window[e]; 132 if (Array.isArray(rudderanalytics)) { 133 if (true === rudderanalytics.snippetExecuted && window.console && console.error) { 134 console.error('RudderStack JavaScript SDK snippet included more than once.'); 135 } else { 136 ((rudderanalytics.snippetExecuted = true), (window.rudderAnalyticsBuildType = 'legacy')); 137 var sdkBaseUrl = 'https://cdn.rudderlabs.com'; 138 var sdkVersion = 'v3'; 139 var sdkFileName = 'rsa.min.js'; 140 var scriptLoadingMode = 'async'; 141 var r = [ 142 'setDefaultInstanceKey', 143 'load', 144 'ready', 145 'page', 146 'track', 147 'identify', 148 'alias', 149 'group', 150 'reset', 151 'setAnonymousId', 152 'startSession', 153 'endSession', 154 'consent', 155 ]; 156 for (var n = 0; n < r.length; n++) { 157 var t = r[n]; 158 rudderanalytics[t] = (function (r) { 159 return function () { 160 var n; 161 Array.isArray(window[e]) 162 ? rudderanalytics.push([r].concat(Array.prototype.slice.call(arguments))) 163 : null === (n = window[e][r]) || void 0 === n || n.apply(window[e], arguments); 164 }; 165 })(t); 166 } 167 try { 168 (new Function( 169 'class Test{field=()=>{};test({prop=[]}={}){return prop?(prop?.property??[...prop]):import("");}}', 170 ), 171 (window.rudderAnalyticsBuildType = 'modern')); 172 } catch (i) {} 173 var d = document.head || document.getElementsByTagName('head')[0]; 174 var o = document.body || document.getElementsByTagName('body')[0]; 175 ((window.rudderAnalyticsAddScript = function (e, r, n) { 176 var t = document.createElement('script'); 177 ((t.src = e), 178 t.setAttribute('data-loader', 'RS_JS_SDK'), 179 r && n && t.setAttribute(r, n), 180 'async' === scriptLoadingMode 181 ? (t.async = true) 182 : 'defer' === scriptLoadingMode && (t.defer = true), 183 d ? d.insertBefore(t, d.firstChild) : o.insertBefore(t, o.firstChild)); 184 }), 185 (window.rudderAnalyticsMount = function () { 186 (!(function () { 187 if ('undefined' == typeof globalThis) { 188 var e; 189 var r = (function getGlobal() { 190 return 'undefined' != typeof self 191 ? self 192 : 'undefined' != typeof window 193 ? window 194 : null; 195 })(); 196 r && 197 Object.defineProperty(r, 'globalThis', { 198 value: r, 199 configurable: true, 200 }); 201 } 202 })(), 203 window.rudderAnalyticsAddScript( 204 '' 205 .concat(sdkBaseUrl, '/') 206 .concat(sdkVersion, '/') 207 .concat(window.rudderAnalyticsBuildType, '/') 208 .concat(sdkFileName), 209 'data-rsa-write-key', 210 '2w8mFiDWValXyby6yHwgkH3Pb8X', 211 )); 212 }), 213 'undefined' == typeof Promise || 'undefined' == typeof globalThis 214 ? window.rudderAnalyticsAddScript( 215 'https://polyfill-fastly.io/v3/polyfill.min.js?ver
215sion=3.111.0&features=Symbol%2CPromise&callback=rudderAnalyticsMount', 216 ) 217 : window.rudderAnalyticsMount()); 218 var loadOptions = {}; 219 rudderanalytics.load( 220 '2w8mFiDWValXyby6yHwgkH3Pb8X', 221 'https://laraveltrxdkoq.dataplane.rudderstack.com', 222 loadOptions, 223 ); 224 } 225 } 226 })(); 227 </script>
227 228 229 230
230<script src="https://analytics.ahrefs.com/analytics.js" data-key="K8SP93/yGnQLRFpxPgjhmA" async></script>
230 231 232 233
233<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/45240648.js"></script>
233 234 235 236
236<script> 237 window.oaiq = window.oaiq || function () { 238 (window.oaiq.q = window.oaiq.q || []).push(arguments); 239 }; 240 oaiq("init", { pixelId: "GJp2Ez6EheeXxtPeSqnxiT" }); 241 </script>
241 242
242<script async src="https://bzrcdn.openai.com/sdk/oaiq.min.js"></script>
242 243
243<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a43a1703ef382af4',t:'MTc5MDg0MzI2NA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
243<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a43a1703ef382af4',t:'MTc5MDg0MzI2NA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
243</body> 244</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.