[{"data":1,"prerenderedAt":361},["ShallowReactive",2],{"navigation":3,"docus_navigation_docs":147,"-docs-cli-init":183,"-docs-cli-init-surround":356},[4,130],{"title":5,"path":6,"stem":7,"children":8,"page":55},"Docs","\u002Fdocs","docs",[9,21,56,95,105,119],{"title":10,"path":11,"stem":12,"children":13,"icon":20},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[14,16],{"title":15,"path":11,"stem":12},"Introduction",{"title":17,"path":18,"stem":19},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":22,"icon":23,"path":24,"stem":25,"children":26,"page":55},"Core Features","i-lucide-tag","\u002Fdocs\u002Fcore-features","docs\u002F2.core-features",[27,31,35,39,43,47,51],{"title":28,"path":29,"stem":30},"Audit Logs","\u002Fdocs\u002Fcore-features\u002Faudit-logs","docs\u002F2.core-features\u002Faudit-logs",{"title":32,"path":33,"stem":34},"Encryption","\u002Fdocs\u002Fcore-features\u002Fencryption","docs\u002F2.core-features\u002Fencryption",{"title":36,"path":37,"stem":38},"Environments","\u002Fdocs\u002Fcore-features\u002Fenvironments","docs\u002F2.core-features\u002Fenvironments",{"title":40,"path":41,"stem":42},"Projects","\u002Fdocs\u002Fcore-features\u002Fprojects","docs\u002F2.core-features\u002Fprojects",{"title":44,"path":45,"stem":46},"Teams","\u002Fdocs\u002Fcore-features\u002Fteams","docs\u002F2.core-features\u002Fteams",{"title":48,"path":49,"stem":50},"API Tokens","\u002Fdocs\u002Fcore-features\u002Ftokens","docs\u002F2.core-features\u002Ftokens",{"title":52,"path":53,"stem":54},"Variables","\u002Fdocs\u002Fcore-features\u002Fvariables","docs\u002F2.core-features\u002Fvariables",false,{"title":57,"icon":58,"path":59,"stem":60,"children":61},"CLI","i-lucide-terminal","\u002Fdocs\u002Fcli","docs\u002F3.cli\u002F2.index",[62,63,67,71,75,79,83,87,91],{"title":15,"path":59,"stem":60},{"title":64,"path":65,"stem":66},"Init","\u002Fdocs\u002Fcli\u002Finit","docs\u002F3.cli\u002F1.init",{"title":68,"path":69,"stem":70},"Run","\u002Fdocs\u002Fcli\u002Frun","docs\u002F3.cli\u002F3.run",{"title":72,"path":73,"stem":74},"Login and Logout","\u002Fdocs\u002Fcli\u002Flogin-logout","docs\u002F3.cli\u002F4.login-logout",{"title":76,"path":77,"stem":78},"Push and Pull","\u002Fdocs\u002Fcli\u002Fpush-pull","docs\u002F3.cli\u002F5.push-pull",{"title":80,"path":81,"stem":82},"Create","\u002Fdocs\u002Fcli\u002Fcreate","docs\u002F3.cli\u002F6.create",{"title":84,"path":85,"stem":86},"Config","\u002Fdocs\u002Fcli\u002Fconfig","docs\u002F3.cli\u002F7.config",{"title":88,"path":89,"stem":90},"Generate","\u002Fdocs\u002Fcli\u002Fgenerate","docs\u002F3.cli\u002F8.generate",{"title":92,"path":93,"stem":94},"Upgrade","\u002Fdocs\u002Fcli\u002Fupgrade","docs\u002F3.cli\u002F9.upgrade",{"title":96,"icon":97,"path":98,"stem":99,"children":100,"page":55},"Integrations","i-lucide-blocks","\u002Fdocs\u002Fintegrations","docs\u002F4.integrations",[101],{"title":102,"path":103,"stem":104},"Github","\u002Fdocs\u002Fintegrations\u002Fgithub","docs\u002F4.integrations\u002F1.github",{"title":106,"icon":107,"path":108,"stem":109,"children":110,"page":55},"Self-hosting","i-lucide-cloud","\u002Fdocs\u002Fself-hosting","docs\u002F5.self-hosting",[111,115],{"title":112,"path":113,"stem":114},"Deploy on Vercel","\u002Fdocs\u002Fself-hosting\u002Fvercel","docs\u002F5.self-hosting\u002F1.vercel",{"title":116,"path":117,"stem":118},"Environment variables","\u002Fdocs\u002Fself-hosting\u002Fenvironment-variables","docs\u002F5.self-hosting\u002F2.environment-variables",{"title":120,"path":121,"stem":122,"children":123,"icon":129},"Contributing","\u002Fdocs\u002Fcontributing","docs\u002F6.contributing\u002F1.index",[124,125],{"title":15,"path":121,"stem":122},{"title":126,"path":127,"stem":128},"Dev Setup","\u002Fdocs\u002Fcontributing\u002Fdev-setup","docs\u002F6.contributing\u002F2.dev-setup","i-lucide-heart-handshake",{"title":131,"path":132,"stem":133,"children":134,"page":55},"Blog","\u002Fblog","blog",[135,139,143],{"title":136,"path":137,"stem":138},"Introducing Shelve's Blog: Building in Public","\u002Fblog\u002Fintroducing-shelve-blog","blog\u002F01.introducing-shelve-blog",{"title":140,"path":141,"stem":142},"Announcing 2.0","\u002Fblog\u002Fannouncing-2.0","blog\u002F02.announcing-2.0",{"title":144,"path":145,"stem":146},"Crafting Clarity: Introducing the New Shelve Landing Page","\u002Fblog\u002Fnew-landing-page","blog\u002F03.new-landing-page",[148,152,161,172,175,179],{"title":10,"path":11,"stem":12,"children":149,"icon":20},[150,151],{"title":15,"path":11,"stem":12},{"title":17,"path":18,"stem":19},{"title":22,"icon":23,"path":24,"stem":25,"children":153,"page":55},[154,155,156,157,158,159,160],{"title":28,"path":29,"stem":30},{"title":32,"path":33,"stem":34},{"title":36,"path":37,"stem":38},{"title":40,"path":41,"stem":42},{"title":44,"path":45,"stem":46},{"title":48,"path":49,"stem":50},{"title":52,"path":53,"stem":54},{"title":57,"icon":58,"path":59,"stem":60,"children":162},[163,164,165,166,167,168,169,170,171],{"title":15,"path":59,"stem":60},{"title":64,"path":65,"stem":66},{"title":68,"path":69,"stem":70},{"title":72,"path":73,"stem":74},{"title":76,"path":77,"stem":78},{"title":80,"path":81,"stem":82},{"title":84,"path":85,"stem":86},{"title":88,"path":89,"stem":90},{"title":92,"path":93,"stem":94},{"title":96,"icon":97,"path":98,"stem":99,"children":173,"page":55},[174],{"title":102,"path":103,"stem":104},{"title":106,"icon":107,"path":108,"stem":109,"children":176,"page":55},[177,178],{"title":112,"path":113,"stem":114},{"title":116,"path":117,"stem":118},{"title":120,"path":121,"stem":122,"children":180,"icon":129},[181,182],{"title":15,"path":121,"stem":122},{"title":126,"path":127,"stem":128},{"id":184,"title":64,"body":185,"description":350,"extension":351,"meta":352,"navigation":353,"path":65,"seo":354,"stem":66,"__hash__":355},"docs\u002Fdocs\u002F3.cli\u002F1.init.md",{"type":186,"value":187,"toc":344},"minimark",[188,201,224,229,285,300,304,313,317,331,340],[189,190,191,192,196,197,200],"p",{},"The ",[193,194,195],"code",{},"init"," command prepares a repository for use with Shelve and, crucially, keeps your ",[193,198,199],{},".env*"," files out of the context of AI coding agents. Running it is a one-off setup step — run it once per project.",[202,203,209],"pre",{"className":204,"code":205,"filename":206,"language":207,"meta":208,"style":208},"language-bash shiki shiki-themes github-light github-dark github-dark","shelve init\n","terminal","bash","",[193,210,211],{"__ignoreMap":208},[212,213,216,220],"span",{"class":214,"line":215},"line",1,[212,217,219],{"class":218},"shcOC","shelve",[212,221,223],{"class":222},"sfrk1"," init\n",[225,226,228],"h2",{"id":227},"what-it-does","What it does",[230,231,232,263],"ul",{},[233,234,235,236],"li",{},"Creates (or updates) an ignore file for every major AI agent so they can never read cached secrets:\n",[230,237,238,243,248,253,258],{},[233,239,240],{},[193,241,242],{},".cursorignore",[233,244,245],{},[193,246,247],{},".aiderignore",[233,249,250],{},[193,251,252],{},".codeiumignore",[233,254,255],{},[193,256,257],{},".continueignore",[233,259,260],{},[193,261,262],{},".aigignore",[233,264,265,266,269,270,273,274,276,277,280,281,284],{},"Appends a managed block to your ",[193,267,268],{},".gitignore"," if one is not already present, so the encrypted cache directory (",[193,271,272],{},".shelve\u002F",") and all ",[193,275,199],{}," files stay out of version control. ",[193,278,279],{},".env.example"," and ",[193,282,283],{},".env.template"," are whitelisted so you can still commit references.",[189,286,287,288,291,292,295,296,299],{},"Each ignore file is framed with ",[193,289,290],{},"# shelve-managed-block"," \u002F ",[193,293,294],{},"# end shelve-managed-block"," markers. Running ",[193,297,298],{},"shelve init"," again only rewrites the managed block — your own entries above and below are preserved.",[225,301,303],{"id":302},"options","Options",[305,306,307],"field-group",{},[308,309,312],"field",{"name":310,"type":311},"cwd","string","Directory to initialize. Defaults to the current working directory.",[225,314,316],{"id":315},"why-this-matters","Why this matters",[189,318,319,320,323,324,327,328,330],{},"AI coding agents (Cursor, Claude Code, Codex, Aider, Continue…) can read every file in your workspace unless you tell them otherwise. If you ever run ",[193,321,322],{},"shelve pull"," to write a ",[193,325,326],{},".env"," to disk, an agent can trivially exfiltrate its contents into a prompt or a suggested commit. ",[193,329,298],{}," closes that hole in one command.",[332,333,335,336,339],"callout",{"type":334},"info","Even with agent ignore files in place, prefer ",[193,337,338],{},"shelve run -- \u003Ccmd>",": it pipes secrets to your subprocess through the environment and never writes them to disk in the first place.",[341,342,343],"style",{},"html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":208,"searchDepth":345,"depth":345,"links":346},2,[347,348,349],{"id":227,"depth":345,"text":228},{"id":302,"depth":345,"text":303},{"id":315,"depth":345,"text":316},"Scaffold AI-agent-safe ignore files in your project.","md",{},true,{"title":64,"description":350},"8D-17llSlCaPejqxmVhlaSn9nZ5TUjUXWt1SNnyyOnU",[357,359],{"title":15,"path":59,"stem":60,"description":358,"children":-1},"Shelve CLI is a command-line interface designed for the Shelve app.",{"title":68,"path":69,"stem":70,"description":360,"children":-1},"Inject secrets into your application at runtime without writing a .env file.",1776787536183]