[{"data":1,"prerenderedAt":753},["ShallowReactive",2],{"navigation_docs":3,"-get-started-quickstart":144,"-get-started-quickstart-surround":748},[4,35,84,109,124,134,139],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Get Started","\u002Fget-started","1.get-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fget-started\u002Fintroduction","1.get-started\u002F1.introduction","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fget-started\u002Finstallation","1.get-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick start","\u002Fget-started\u002Fquickstart","1.get-started\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Project structure","\u002Fget-started\u002Fproject-structure","1.get-started\u002F4.project-structure","i-lucide-folder-tree",{"title":30,"path":31,"stem":32,"icon":33},"Dashboard","\u002Fget-started\u002Fdashboard","1.get-started\u002F5.dashboard","i-lucide-layout-dashboard",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Concepts","\u002Fconcepts","2.concepts",[40,45,50,55,60,65,69,74,79],{"title":41,"path":42,"stem":43,"icon":44},"Architecture","\u002Fconcepts\u002Farchitecture","2.concepts\u002F1.architecture","i-lucide-layers",{"title":46,"path":47,"stem":48,"icon":49},"Machines","\u002Fconcepts\u002Fmachines","2.concepts\u002F2.machines","i-lucide-server",{"title":51,"path":52,"stem":53,"icon":54},"Colony & users","\u002Fconcepts\u002Fcolony","2.concepts\u002F3.colony","i-lucide-users",{"title":56,"path":57,"stem":58,"icon":59},"Transport","\u002Fconcepts\u002Ftransport","2.concepts\u002F4.transport","i-lucide-network",{"title":61,"path":62,"stem":63,"icon":64},"Configuration","\u002Fconcepts\u002Fconfiguration","2.concepts\u002F5.configuration","i-lucide-settings",{"title":66,"path":67,"stem":68,"icon":23},"Deploy","\u002Fconcepts\u002Fdeploy","2.concepts\u002F6.deploy",{"title":70,"path":71,"stem":72,"icon":73},"Groups","\u002Fconcepts\u002Fgroups","2.concepts\u002F7.groups","i-lucide-boxes",{"title":75,"path":76,"stem":77,"icon":78},"Templates","\u002Fconcepts\u002Ftemplates","2.concepts\u002F8.templates","i-lucide-package-plus",{"title":80,"path":81,"stem":82,"icon":83},"Existing projects","\u002Fconcepts\u002Fexisting-projects","2.concepts\u002F9.existing-projects","i-lucide-folder-open",{"title":85,"path":86,"stem":87,"children":88,"page":34},"Remote","\u002Fremote","3.remote",[89,94,99,104],{"title":90,"path":91,"stem":92,"icon":93},"Remote machines","\u002Fremote\u002Foverview","3.remote\u002F1.overview","i-lucide-cloud",{"title":95,"path":96,"stem":97,"icon":98},"Remote deploy","\u002Fremote\u002Fdeploy","3.remote\u002F2.deploy","i-lucide-send",{"title":100,"path":101,"stem":102,"icon":103},"CI","\u002Fremote\u002Fci","3.remote\u002F3.ci","i-lucide-workflow",{"title":105,"path":106,"stem":107,"icon":108},"Tunnels","\u002Fremote\u002Ftunnel","3.remote\u002F4.tunnel","i-lucide-cable",{"title":110,"path":111,"stem":112,"children":113,"page":34},"Security","\u002Fsecurity","4.security",[114,119],{"title":115,"path":116,"stem":117,"icon":118},"Security model","\u002Fsecurity\u002Fmodel","4.security\u002F1.model","i-lucide-shield",{"title":120,"path":121,"stem":122,"icon":123},"Known issues","\u002Fsecurity\u002Fknown-issues","4.security\u002F2.known-issues","i-lucide-triangle-alert",{"title":125,"path":126,"stem":127,"children":128,"page":34},"Reference","\u002Freference","5.reference",[129],{"title":130,"path":131,"stem":132,"icon":133},"CLI reference","\u002Freference\u002Fcli","5.reference\u002F1.cli","i-lucide-terminal",{"title":135,"path":136,"stem":137,"icon":138},"Changelog","\u002Fchangelog","changelog","i-lucide-history",{"title":140,"path":141,"stem":142,"icon":143},"Communities","\u002Fcommunities","communities","i-lucide-heart-handshake",{"id":145,"title":20,"body":146,"description":740,"extension":741,"links":742,"meta":743,"navigation":744,"path":21,"seo":745,"stem":22,"__hash__":747},"docs\u002F1.get-started\u002F3.quickstart.md",{"type":147,"value":148,"toc":734},"minimark",[149,209,216,304,345,350,381,385,397,571,585,588,603,607,610,675,711,715,730],[150,151,156],"pre",{"className":152,"code":153,"language":154,"meta":155,"style":155},"language-sh shiki shiki-themes material-theme-lighter github-light github-dark","# 1. Scaffold a config in your project directory.\nant nest init --port 3000\n\n# 2. Check that Docker (and any builder CLI) is available.\nant nest tools\n\n# 3. Build and run it locally.\nant trail deploy local\n","sh","",[157,158,159,167,173,180,186,192,197,203],"code",{"__ignoreMap":155},[160,161,164],"span",{"class":162,"line":163},"line",1,[160,165,166],{},"# 1. Scaffold a config in your project directory.\n",[160,168,170],{"class":162,"line":169},2,[160,171,172],{},"ant nest init --port 3000\n",[160,174,176],{"class":162,"line":175},3,[160,177,179],{"emptyLinePlaceholder":178},true,"\n",[160,181,183],{"class":162,"line":182},4,[160,184,185],{},"# 2. Check that Docker (and any builder CLI) is available.\n",[160,187,189],{"class":162,"line":188},5,[160,190,191],{},"ant nest tools\n",[160,193,195],{"class":162,"line":194},6,[160,196,179],{"emptyLinePlaceholder":178},[160,198,200],{"class":162,"line":199},7,[160,201,202],{},"# 3. Build and run it locally.\n",[160,204,206],{"class":162,"line":205},8,[160,207,208],{},"ant trail deploy local\n",[210,211,212,215],"p",{},[157,213,214],{},"ant nest init"," auto-detects the build type from the files in the directory:",[217,218,219,232],"table",{},[220,221,222],"thead",{},[223,224,225,229],"tr",{},[226,227,228],"th",{},"File",[226,230,231],{},"Detected config",[233,234,235,248,260,280,292],"tbody",{},[223,236,237,243],{},[238,239,240],"td",{},[157,241,242],{},"railpack.toml",[238,244,245],{},[157,246,247],{},"build: railpack",[223,249,250,255],{},[238,251,252],{},[157,253,254],{},"nixpacks.toml",[238,256,257],{},[157,258,259],{},"build: nixpacks",[223,261,262,271],{},[238,263,264,267,268],{},[157,265,266],{},"docker-compose.yml"," \u002F ",[157,269,270],{},"compose.yaml",[238,272,273,276,277],{},[157,274,275],{},"build: none",", ",[157,278,279],{},"run: compose",[223,281,282,287],{},[238,283,284],{},[157,285,286],{},"Dockerfile",[238,288,289],{},[157,290,291],{},"build: dockerfile",[223,293,294,299],{},[238,295,296],{},[157,297,298],{},"Procfile",[238,300,301],{},[157,302,303],{},"build: buildpacks",[210,305,306,307,276,310,276,313,276,316,276,319,276,322,325,326,276,329,332,333,336,337,340,341,344],{},"Override with ",[157,308,309],{},"--build",[157,311,312],{},"--run",[157,314,315],{},"--file",[157,317,318],{},"--port",[157,320,321],{},"--app",[157,323,324],{},"--group",",\n",[157,327,328],{},"--target-machine",[157,330,331],{},"--output",", or ",[157,334,335],{},"--force",". Or start from a catalog template\nwith ",[157,338,339],{},"ant nest new \u003Ctemplate>"," (see ",[342,343,75],"a",{"href":76},").",[346,347,349],"h2",{"id":348},"what-just-happened","What just happened",[351,352,353,363,372],"ol",{},[354,355,356,358,359,362],"li",{},[157,357,214],{}," wrote ",[157,360,361],{},"ant.yaml"," describing how to build and run the project.",[354,364,365,368,369,344],{},[157,366,367],{},"ant haul"," built the image (also run for you by ",[157,370,371],{},"trail deploy",[354,373,374,377,378,344],{},[157,375,376],{},"ant trail deploy local"," started the container. Domains are opt-in: add one\nto serve it on a hostname through Caddy (",[157,379,380],{},"ant nest edit domain add",[346,382,384],{"id":383},"the-full-lifecycle","The full lifecycle",[210,386,387,388,391,392,396],{},"The same flow exists on the CLI and in the dashboard. ",[157,389,390],{},"ant ui"," launches the\nconsole; everything after ",[393,394,395],"em",{},"Launch"," below can also be done there.",[217,398,399,411],{},[220,400,401],{},[223,402,403,406,409],{},[226,404,405],{},"Step",[226,407,408],{},"CLI",[226,410,30],{},[233,412,413,428,439,464,480,493,513,527,540,555],{},[223,414,415,418,425],{},[238,416,417],{},"Install",[238,419,420,421,424],{},"clone + ",[157,422,423],{},"task build"," (internal releases need repo access)",[238,426,427],{},"-",[223,429,430,433,437],{},[238,431,432],{},"Launch the console",[238,434,435],{},[157,436,390],{},[238,438,427],{},[223,440,441,444,454],{},[238,442,443],{},"Create your account",[238,445,446,449,450,453],{},[157,447,448],{},"ant colony signup"," (or ",[157,451,452],{},"ant colony login --bundle",")",[238,455,456,457,267,461],{},"Settings → Ant account → ",[458,459,460],"strong",{},"Create account",[458,462,463],{},"Sign in from a bundle",[223,465,466,469,474],{},[238,467,468],{},"Init a project",[238,470,471],{},[157,472,473],{},"ant nest init --port 3000",[238,475,476,477],{},"Projects → ",[458,478,479],{},"Add project",[223,481,482,485,490],{},[238,483,484],{},"Configure it",[238,486,487],{},[157,488,489],{},"ant nest edit …",[238,491,492],{},"Project → General \u002F Environments \u002F Domains \u002F …",[223,494,495,498,503],{},[238,496,497],{},"Add a server",[238,499,500],{},[157,501,502],{},"ant nest machines add prod --host ADDR --ssh-key …",[238,504,505,506,509,510],{},"Nest → ",[458,507,508],{},"Add machine"," → ",[393,511,512],{},"Provision over SSH",[223,514,515,518,522],{},[238,516,517],{},"Build",[238,519,520],{},[157,521,367],{},[238,523,524,525],{},"Project → ",[458,526,517],{},[223,528,529,531,536],{},[238,530,66],{},[238,532,533],{},[157,534,535],{},"ant trail deploy",[238,537,524,538],{},[458,539,66],{},[223,541,542,545,550],{},[238,543,544],{},"Roll back",[238,546,547],{},[157,548,549],{},"ant trail rollback",[238,551,524,552],{},[458,553,554],{},"Deployments",[223,556,557,560,568],{},[238,558,559],{},"Collaborate",[238,561,562,267,565],{},[157,563,564],{},"ant colony invite --machine prod",[157,566,567],{},"ant colony join",[238,569,570],{},"Machine → General → Invites",[210,572,573,574,577,578,581,582,584],{},"Your account is a portable ",[458,575,576],{},"NodeID",": create it once, then ",[157,579,580],{},"ant colony export","\n(the dashboard's ",[393,583,463],{}," restores it on another machine). A\nsigned-in account is required before provisioning a server: your NodeID seeds the\nmachine's first owner.",[210,586,587],{},"Open the host port the deploy printed, or find it with:",[150,589,591],{"className":152,"code":590,"language":154,"meta":155,"style":155},"ant trail status\nant trail logs --tail 50\n",[157,592,593,598],{"__ignoreMap":155},[160,594,595],{"class":162,"line":163},[160,596,597],{},"ant trail status\n",[160,599,600],{"class":162,"line":169},[160,601,602],{},"ant trail logs --tail 50\n",[346,604,606],{"id":605},"command-groups","Command groups",[210,608,609],{},"Ant's commands are grouped by pillar:",[217,611,612,622],{},[220,613,614],{},[223,615,616,619],{},[226,617,618],{},"Group",[226,620,621],{},"Purpose",[233,623,624,633,643,653,663],{},[223,625,626,630],{},[238,627,628],{},[157,629,367],{},[238,631,632],{},"Build the image without running it",[223,634,635,640],{},[238,636,637],{},[157,638,639],{},"ant trail",[238,641,642],{},"Deploy, manage, roll back, and clean up the app (local or remote)",[223,644,645,650],{},[238,646,647],{},[157,648,649],{},"ant nest",[238,651,652],{},"Machine facts, tools, containers, volumes, scaffolding, templates, and groups",[223,654,655,660],{},[238,656,657],{},[157,658,659],{},"ant colony",[238,661,662],{},"Your Ant account and the users on remote machines",[223,664,665,669],{},[238,666,667],{},[157,668,390],{},[238,670,671,672],{},"Serve and manage the ",[342,673,674],{"href":31},"local web dashboard",[210,676,677,678,681,682,685,686,689,690,693,694,696,697,699,700,703,704,707,708,710],{},"Every command accepts ",[157,679,680],{},"--verbose"," (echo each child command) and ",[157,683,684],{},"-q","\u002F",[157,687,688],{},"--quiet","\n(suppress progress; only results print), plus ",[157,691,692],{},"--machine \u003Cid>"," to route\nmachine-scoped commands at another machine. It is routing-only: local-only\ncommands fail fast when it points at a remote, and commands that write a\nproject's target use ",[157,695,328],{},". Commands that read ",[157,698,361],{}," also\ntake ",[157,701,702],{},"--config \u003Cpath>",", and the data-reporting commands take ",[157,705,706],{},"--json",". See the\n",[342,709,130],{"href":131},".",[346,712,714],{"id":713},"next","Next",[716,717,718,722,726],"ul",{},[354,719,720],{},[342,721,25],{"href":26},[354,723,724],{},[342,725,66],{"href":67},[354,727,728],{},[342,729,130],{"href":131},[731,732,733],"style",{},"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":155,"searchDepth":169,"depth":169,"links":735},[736,737,738,739],{"id":348,"depth":169,"text":349},{"id":383,"depth":169,"text":384},{"id":605,"depth":169,"text":606},{"id":713,"depth":169,"text":714},"Scaffold a config, check your tools, and deploy locally.","md",null,{},{"icon":23},{"title":20,"description":746},"From an empty project directory to a running local container in three commands.","P9C44CWl0Ua-A-KwwypFe4-kf-52_J01cCMYlmpfB9g",[749,751],{"title":15,"path":16,"stem":17,"description":750,"icon":18,"children":-1},"Build ant and ant-worker from a clone, or install a release build.",{"title":25,"path":26,"stem":27,"description":752,"icon":28,"children":-1},"ant.yaml, the state under ~\u002F.ant, and what Ant writes where.",1791494554236]