[{"data":1,"prerenderedAt":267},["ShallowReactive",2],{"page:\u002Fblog\u002Fkubb-studio":3},{"id":4,"title":5,"body":6,"description":250,"extension":251,"frontmatter":252,"heading":256,"meta":257,"navigation":258,"order":256,"path":259,"seo":260,"sitemap":261,"source":264,"stem":265,"__hash__":266},"site\u002Fblog\u002Fkubb-studio.md","Introducing Kubb Studio",{"type":7,"value":8,"toc":239},"minimark",[9,16,20,28,36,41,44,49,53,56,78,81,85,92,170,173,177,186,190,206,210,227],[10,11,12],"p",{},[13,14],"img",{"src":15,"alt":5},"\u002Fblog\u002Fkubb-studio\u002Fcover.svg",[17,18,5],"h1",{"id":19},"introducing-kubb-studio",[10,21,22,23,27],{},"Tuning a Kubb config takes repeated runs. You change a plugin option, run ",[24,25,26],"code",{},"kubb generate",", and check the output folder.",[10,29,30,35],{},[31,32,34],"a",{"href":33},"https:\u002F\u002Fkubb.studio","Kubb Studio"," puts that loop in a browser tab. You change plugin options, generate, and review the resulting files. Connect your project to run Kubb locally, or use the shared sandbox to try it without setup.",[37,38,40],"h2",{"id":39},"generation-stays-where-your-agent-runs","Generation stays where your agent runs",[10,42,43],{},"With a connected CLI or Docker agent, Kubb uses the spec and plugin versions in your environment. Studio receives plugin settings, the project path, progress, generated file paths, and file hashes. Your local spec is not uploaded. During an interactive generation, Studio receives generated file contents only when you grant read access.",[45,46,48],"blockquote",{"as":47},"note","The shared sandbox runs on shared infrastructure and uses a spec you provide in the browser.",[37,50,52],{"id":51},"one-command-to-connect","One command to connect",[10,54,55],{},"The runtime ships with the CLI, so a project with Kubb installed needs nothing extra:",[57,58,62],"pre",{"language":59,"code":60,"class":61},"shell","kubb studio","highlights",[24,63,65],{"class":64},"language-shell",[66,67,70,74],"span",{"class":68,"style":69},"line","display: inline",[66,71,73],{"style":72},"color:#6f42c1;--hls-dark:#b392f0","kubb ",[66,75,77],{"style":76},"color:#24292e;--hls-dark:#e1e4e8","studio",[10,79,80],{},"The first run in a project asks you to approve a pairing code in Studio. Later runs in that project connect straight away.",[37,82,84],{"id":83},"choose-what-studio-can-access","Choose what Studio can access",[10,86,87,88,91],{},"A session with no permissions granted generates in memory. It sends progress and file paths to Studio but does not write to your output folder. The agent still keeps copies of recent generations in ",[24,89,90],{},"node_modules\u002F.cache\u002Fkubb",". The CLI asks about five permissions:",[93,94,95,108],"table",{},[96,97,98],"thead",{},[99,100,101,105],"tr",{},[102,103,104],"th",{},"Permission",[102,106,107],{},"What it grants",[109,110,111,122,132,142,156],"tbody",{},[99,112,113,119],{},[114,115,116],"td",{},[24,117,118],{},"--allow-read",[114,120,121],{},"Studio can read the source of the files a generation produced.",[99,123,124,129],{},[114,125,126],{},[24,127,128],{},"--allow-read-ast",[114,130,131],{},"Studio can read the parsed spec (the Kubb AST).",[99,133,134,139],{},[114,135,136],{},[24,137,138],{},"--allow-write",[114,140,141],{},"Generated files are written to your output folder.",[99,143,144,149],{},[114,145,146],{},[24,147,148],{},"--allow-config-edit",[114,150,151,152,155],{},"Studio may change plugin options in your ",[24,153,154],{},"kubb.config.ts",".",[99,157,158,163],{},[114,159,160],{},[24,161,162],{},"--allow-exec",[114,164,165,166,169],{},"The formatter, the linter, and ",[24,167,168],{},"output.postGenerate"," run as child processes.",[10,171,172],{},"The CLI remembers your answers per project. In CI or without a TTY, it does not prompt, so pass the needed permissions as flags.",[37,174,176],{"id":175},"editing-config-from-the-browser","Editing config from the browser",[10,178,179,180,182,183,185],{},"With ",[24,181,148],{},", Studio can save changed plugin options to ",[24,184,154],{},". The edit preserves the surrounding comments and formatting.",[37,187,189],{"id":188},"beyond-your-laptop","Beyond your laptop",[10,191,192,193,196,197,200,201,205],{},"The ",[24,194,195],{},"kubblabs\u002Fkubb-agent"," Docker image keeps a team agent connected. In CI, ",[24,198,199],{},"kubb studio snapshot"," publishes an installable package for a pull or merge request. It takes no permission flags and uses an organization CI API key. See the ",[31,202,204],{"href":203},"\u002Fdocs\u002F5.x\u002Fintegrations\u002Fstudio","guide"," for setup.",[37,207,209],{"id":208},"try-it","Try it",[10,211,212,213,216,217,219,220,226],{},"Studio is live at ",[31,214,215],{"href":33},"kubb.studio",". The ",[31,218,204],{"href":203}," walks through connecting a project, and the ",[31,221,223,225],{"href":222},"\u002Fdocs\u002F5.x\u002Freference\u002Fcommands\u002Fstudio",[24,224,60],{}," reference"," lists every action and flag.",[10,228,229,230,234,235,155],{},"Feedback goes to ",[31,231,233],{"href":232},"https:\u002F\u002Fgithub.com\u002Fkubb-labs\u002Fkubb\u002Fissues","GitHub"," or ",[31,236,238],{"href":237},"https:\u002F\u002Fdiscord.gg\u002FshfBFeczrm","Discord",{"title":240,"searchDepth":241,"depth":241,"links":242},"",5,[243,245,246,247,248,249],{"id":39,"depth":244,"text":40},2,{"id":51,"depth":244,"text":52},{"id":83,"depth":244,"text":84},{"id":175,"depth":244,"text":176},{"id":188,"depth":244,"text":189},{"id":208,"depth":244,"text":209},"Kubb Studio lets you generate and review OpenAPI clients in the browser with a local agent, Docker agent, or shared sandbox.","md",{"layout":253,"title":5,"description":250,"outline":254,"image":15,"date":255},"doc","deep","2026-09-04",null,{"layout":253,"outline":254,"image":15,"date":255},true,"\u002Fblog\u002Fkubb-studio",{"title":5,"description":250},{"loc":259,"images":262,"lastmod":255},[263],{"loc":15},"platform\u002Fapps\u002Fkubb.dev\u002Fcontent\u002Fblog\u002Fkubb-studio.md","blog\u002Fkubb-studio","gMAKS9oO3aAcXbXp1gXIePCIwrwZYeZX_ZOATwRIb4o",1794776424501]