1"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6162],{28453:(e,t,a)=>{a.d(t,{R:()=>i,x:()=>s});var n=a(96540);const o={},r=n.createContext(o);function i(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),n.createElement(r.Provider,{value:t},e.children)}},35135:e=>{e.exports=JSON.parse('{"permalink":"/blog/21-reasons-ai-agents-love-gleam","source":"@site/blog/2026-03-12-21-reasons-ai-agents-love-gleam.md","title":"AI Agents Love Gleam","description":"This post reflects our earlier Gleam exploration for Curling IO v3. We ultimately chose Rust and TypeScript. Why We Chose Rust for Version 3 explains that decision and what we kept from the exploration.","date":"2026-03-12T00:00:00.000Z","tags":[{"inline":true,"label":"gleam","permalink":"/blog/tags/gleam"},{"inline":true,"label":"ai","permalink":"/blog/tags/ai"},{"inline":true,"label":"architecture","permalink":"/blog/tags/architecture"}],"readingTime":11.6,"hasTruncateMarker":true,"authors":[{"name":"Dave Rapin","title":"Founder @ Curling IO","imageURL":"https://avatars.githubusercontent.com/u/1202?v=4","key":"dave","page":null}],"frontMatter":{"slug":"21-reasons-ai-agents-love-gleam","title":"AI Agents Love Gleam","authors":["dave"],"tags":["gleam","ai","architecture"]},"unlisted":false,"prevItem":{"title":"Live Admin With Gleam and Lustre","permalink":"/blog/live-admin-without-javascript"},"nextItem":{"title":"Parallel Tests for Free","permalink":"/blog/parallel-tests-for-free"}}')},91282:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>i,metadata:()=>n,toc:()=>c});var n=a(35135),o=a(74848),r=a(28453);const i={slug:"21-reasons-ai-agents-love-gleam",title:"AI Agents Love Gleam",authors:["dave"],tags:["gleam","ai","architecture"]},s=void 0,l={authorsImageUrls:[void 0]},c=[];function u(e){const t={a:"a",admonition:"admonition",em:"em",p:"p",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.admonition,{title:"Update: October 1, 2026",type:"note",children:(0,o.jsxs)(t.p,{children:["This post reflects our earlier Gleam exploration for Curling IO v3. We ultimately chose Rust and TypeScript. ",(0,o.jsx)(t.a,{href:"/blog/why-we-chose-rust-for-version-3",children:"Why We Chose Rust for Version 3"})," explains that decision and what we kept from the exploration."]})}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.em,{children:"Fair warning: this post contains some opinions that are going to be controversial and may not age well. Here be dragons."})}),"\n",(0,o.jsx)(t.p,{children:"AI coding agents like Claude Code, OpenAI Codex, and Google Gemini can write code, run it, read the errors, and try again. That loop is the whole game. The faster and more informative that loop is, the more useful the agent becomes. After building Curling IO Version 3 in Gleam alongside AI coding agents, I'm convinced Gleam is the best language for this workflow. Agents don't write better Gleam - there's less training data. But Gleam's compiler lets agents self-correct without waiting for a human."})]})}function m(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}}}]);
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.