[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"docs-nav":3,"docs:\u002Fdocs\u002Fgetting-started":139},[4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136],{"path":5,"title":6},"\u002Fdocs\u002Faccess-gating","Protect a local route",{"path":8,"title":9},"\u002Fdocs\u002Farchitecture\u002Fsecurity-and-trust","Security and trust",{"path":11,"title":12},"\u002Fdocs\u002Fconcepts\u002Fbuilds-and-deployments","Build and deploy",{"path":14,"title":15},"\u002Fdocs\u002Fconcepts\u002Fconfiguration-ownership","Where configuration belongs",{"path":17,"title":18},"\u002Fdocs\u002Fconcepts\u002Fenvironments-and-secrets","Environment values and secrets",{"path":20,"title":21},"\u002Fdocs\u002Fconcepts\u002Fmental-model","How projects fit together",{"path":23,"title":24},"\u002Fdocs\u002Fconcepts\u002Fplans-and-apply","Plans and apply",{"path":26,"title":27},"\u002Fdocs\u002Fconcepts\u002Ftargets-and-runtimes","Choose a target and runtime",{"path":29,"title":30},"\u002Fdocs\u002Fcontribute\u002Freleases","Publish a release",{"path":32,"title":33},"\u002Fdocs\u002Fdevelopment-mounts","Development mounts",{"path":35,"title":36},"\u002Fdocs\u002Fgetting-started","Getting started",{"path":38,"title":39},"\u002Fdocs\u002Fhelp\u002Ffaq","FAQ",{"path":41,"title":42},"\u002Fdocs\u002Fhelp\u002Ftroubleshooting","Troubleshooting",{"path":44,"title":45},"\u002Fdocs\u002Fhow-to\u002Fdeploy-production","Prepare a deployment environment",{"path":47,"title":48},"\u002Fdocs\u002Fhow-to\u002Fswarm-cluster","Run on a multi-node Swarm",{"path":50,"title":51},"\u002Fdocs","mm documentation",{"path":53,"title":54},"\u002Fdocs\u002Fjobs-and-schedules","Jobs and schedules",{"path":56,"title":57},"\u002Fdocs\u002Flocal-dashboard","Local dashboard",{"path":59,"title":60},"\u002Fdocs\u002Flocal-https","Local HTTPS",{"path":62,"title":63},"\u002Fdocs\u002Flocal-services","Local services",{"path":65,"title":66},"\u002Fdocs\u002Fmcp","Let an AI agent work on your project",{"path":68,"title":69},"\u002Fdocs\u002Fmulti-project-hosts","Run multiple projects on one host",{"path":71,"title":72},"\u002Fdocs\u002Fonboarding","Set up a project",{"path":74,"title":75},"\u002Fdocs\u002Fopenbao","Use OpenBao",{"path":77,"title":78},"\u002Fdocs\u002Fproject\u002Fcontributing","Contributing",{"path":80,"title":81},"\u002Fdocs\u002Fproject\u002Flicense","License",{"path":83,"title":84},"\u002Fdocs\u002Fproject\u002Fsecurity","Security",{"path":86,"title":87},"\u002Fdocs\u002Freference\u002Fcapability-matrix","Supported features and platforms",{"path":89,"title":90},"\u002Fdocs\u002Freference\u002Fcli","CLI command reference",{"path":92,"title":93},"\u002Fdocs\u002Freference\u002Fconfiguration","Configuration",{"path":95,"title":96},"\u002Fdocs\u002Freference\u002Fenvironment-variables","Environment variables",{"path":98,"title":99},"\u002Fdocs\u002Freference\u002Ferrors-and-exit-codes","Errors and exit codes",{"path":101,"title":102},"\u002Fdocs\u002Freference\u002Fknown-issues","Known limitations",{"path":104,"title":105},"\u002Fdocs\u002Fremote-access","Manage remote access",{"path":107,"title":108},"\u002Fdocs\u002Fremote-daemon","Set up a remote host",{"path":110,"title":111},"\u002Fdocs\u002Fruntime-observability","Status, logs, and commands",{"path":113,"title":114},"\u002Fdocs\u002Fsecret-delivery","Pass secrets to your app",{"path":116,"title":117},"\u002Fdocs\u002Fsecret-providers","Choose a secret store",{"path":119,"title":120},"\u002Fdocs\u002Fstart\u002Finstall","Install mm",{"path":122,"title":123},"\u002Fdocs\u002Fterminal-ui","Terminal UI",{"path":125,"title":126},"\u002Fdocs\u002Ftutorials\u002Fdotnet-web-api",".NET web API example",{"path":128,"title":129},"\u002Fdocs\u002Ftutorials\u002Ffirst-local-app","First local app",{"path":131,"title":132},"\u002Fdocs\u002Ftutorials\u002Flaravel-rust","Laravel and Rust example",{"path":134,"title":135},"\u002Fdocs\u002Ftutorials\u002Fnode-fullstack","Node full stack example",{"path":137,"title":138},"\u002Fdocs\u002Fvault","Use HashiCorp Vault",{"id":140,"title":36,"body":141,"description":382,"extension":383,"meta":384,"navigation":385,"path":35,"seo":386,"stem":387,"__hash__":388},"docs\u002Fdocs\u002Fgetting-started.md",{"type":142,"value":143,"toc":377},"minimark",[144,152,204,209,243,251,255,262,306,309,313,316,350,362,373],[145,146,147,151],"p",{},[148,149,120],"a",{"href":150},".\u002Fstart\u002Finstall"," on Linux or macOS with the one-line installer,\nor build it from a checkout. Then choose the path that matches what you are\nworking on.",[153,154,155,168],"table",{},[156,157,158],"thead",{},[159,160,161,165],"tr",{},[162,163,164],"th",{},"Your goal",[162,166,167],{},"Follow this guide",[169,170,171,182,193],"tbody",{},[159,172,173,177],{},[174,175,176],"td",{},"Try mm with a complete example",[174,178,179],{},[148,180,129],{"href":181},".\u002Ftutorials\u002Ffirst-local-app",[159,183,184,187],{},[174,185,186],{},"Set up a project that already uses mm",[174,188,189],{},[148,190,192],{"href":191},".\u002Fonboarding#existing-clone","Existing clone",[159,194,195,198],{},[174,196,197],{},"Add mm to your Compose project",[174,199,200],{},[148,201,203],{"href":202},".\u002Fonboarding#new-project","New project",[205,206,208],"h2",{"id":207},"what-you-need","What you need",[210,211,212,220,226,232],"ul",{},[213,214,215,219],"li",{},[216,217,218],"strong",{},"To run containers:"," Docker Compose or Podman Compose.",[213,221,222,225],{},[216,223,224],{},"To build your own images:"," Docker Buildx and a registry you can push to.",[213,227,228,231],{},[216,229,230],{},"For local HTTPS, the dashboard, and Mailpit:"," HAProxy with Linux systemd,\nor macOS with Docker Desktop.",[213,233,234,237,238,242],{},[216,235,236],{},"For browser access to local sites:"," DNS or hosts-file entries for the\ngenerated ",[239,240,241],"code",{},".test"," names. mm creates certificates but does not configure DNS.",[145,244,245,246,250],{},"Check ",[148,247,249],{"href":248},".\u002Freference\u002Fcapability-matrix","supported features"," for platform and\nruntime differences.",[205,252,254],{"id":253},"in-an-existing-project","In an existing project",[145,256,257,258,261],{},"Run these from the directory containing ",[239,259,260],{},".config\u002Fmm.yaml",":",[263,264,269],"pre",{"className":265,"code":266,"language":267,"meta":268,"style":268},"language-sh shiki shiki-themes mm","mm config validate\nmm doctor\nmm env check\n","sh","",[239,270,271,287,295],{"__ignoreMap":268},[272,273,276,280,284],"span",{"class":274,"line":275},"line",1,[272,277,279],{"class":278},"svrjQ","mm",[272,281,283],{"class":282},"sv8ni"," config",[272,285,286],{"class":282}," validate\n",[272,288,290,292],{"class":274,"line":289},2,[272,291,279],{"class":278},[272,293,294],{"class":282}," doctor\n",[272,296,298,300,303],{"class":274,"line":297},3,[272,299,279],{"class":278},[272,301,302],{"class":282}," env",[272,304,305],{"class":282}," check\n",[145,307,308],{},"These check configuration, workstation requirements, and missing environment\nvalues. They do not deploy your app. Follow any reported setup steps before\ncreating a deployment plan.",[205,310,312],{"id":311},"review-before-applying","Review before applying",[145,314,315],{},"Most changes use two commands: one to show the plan and one to apply it.",[263,317,319],{"className":265,"code":318,"language":267,"meta":268,"style":268},"mm deploy plan\nmm deploy apply --plan PLAN_HASH --yes\n",[239,320,321,331],{"__ignoreMap":268},[272,322,323,325,328],{"class":274,"line":275},[272,324,279],{"class":278},[272,326,327],{"class":282}," deploy",[272,329,330],{"class":282}," plan\n",[272,332,333,335,337,340,344,347],{"class":274,"line":289},[272,334,279],{"class":278},[272,336,327],{"class":282},[272,338,339],{"class":282}," apply",[272,341,343],{"class":342},"sbRf1"," --plan",[272,345,346],{"class":282}," PLAN_HASH",[272,348,349],{"class":342}," --yes\n",[145,351,352,353,356,357,361],{},"Replace ",[239,354,355],{},"PLAN_HASH"," with the hash printed by the plan command. If inputs change,\ncreate and review a fresh plan. See ",[148,358,360],{"href":359},".\u002Fconcepts\u002Fplans-and-apply","plans and apply","\nfor details.",[145,363,364,365,367,368,372],{},"For a guided interface, run ",[239,366,279],{}," in an interactive terminal: see the\n",[148,369,371],{"href":370},".\u002Fterminal-ui","terminal UI",". Use explicit subcommands in scripts.",[374,375,376],"style",{},"html pre.shiki code .svrjQ, html code.shiki .svrjQ{--shiki-default:var(--mm-code-function)}html pre.shiki code .sv8ni, html code.shiki .sv8ni{--shiki-default:var(--mm-code-string)}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 pre.shiki code .sbRf1, html code.shiki .sbRf1{--shiki-default:var(--mm-code-option)}",{"title":268,"searchDepth":289,"depth":289,"links":378},[379,380,381],{"id":207,"depth":289,"text":208},{"id":253,"depth":289,"text":254},{"id":311,"depth":289,"text":312},"Choose a setup path and run your first mm commands.","md",{},true,{"title":36,"description":382},"docs\u002Fgetting-started","T12wYzg_eezuW7rbV3O-oRaNBmcnAe_JrBsPIFzamLA",1794512545910]