[{"data":1,"prerenderedAt":1134},["ShallowReactive",2],{"docs-nav":3,"docs:\u002Fdocs\u002Fhelp\u002Ftroubleshooting":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":42,"body":141,"description":1127,"extension":1128,"meta":1129,"navigation":1130,"path":41,"seo":1131,"stem":1132,"__hash__":1133},"docs\u002Fdocs\u002Fhelp\u002Ftroubleshooting.md",{"type":142,"value":143,"toc":1111},"minimark",[144,148,171,191,197,200,290,302,307,310,371,374,378,393,396,415,422,426,429,443,450,454,457,487,502,505,509,512,542,559,563,574,593,611,640,674,678,684,728,747,751,765,781,795,799,802,845,855,859,862,870,877,881,884,919,945,948,952,962,966,975,981,984,1044,1050,1053,1060,1064,1072,1075,1086,1100,1107],[145,146,147],"p",{},"Start with a read-only readiness report from the project directory:",[149,150,155],"pre",{"className":151,"code":152,"language":153,"meta":154,"style":154},"language-sh shiki shiki-themes mm","mm doctor\n","sh","",[156,157,158],"code",{"__ignoreMap":154},[159,160,163,167],"span",{"class":161,"line":162},"line",1,[159,164,166],{"class":165},"svrjQ","mm",[159,168,170],{"class":169},"sv8ni"," doctor\n",[145,172,173,174,178,179,182,183,186,187,190],{},"Doctor collects independent problems together. A ",[175,176,177],"strong",{},"blocked"," check means a\nprerequisite must be resolved before mm can check it; it does not mean the check\npassed. Doctor does not initialize or migrate SQLite state, save runtime choices,\nor publish generated stack artifacts. ",[156,180,181],{},"--output json"," includes ",[156,184,185],{},"readiness.checks",",\nruntime candidates, and scoped ",[156,188,189],{},"recovery_commands"," as argument arrays.",[145,192,193,194,196],{},"In an interactive terminal, run ",[156,195,166],{}," for guided setup. It offers local target\nregistration, available runtime choices, reviewed image builds, local-services\ninstallation, and legacy-state recovery. It rechecks after each action and saves\nruntime choices privately for the selected environment. You can inspect project\nconfiguration or exit at any step; completed choices are kept.",[145,198,199],{},"Additional diagnostic commands:",[149,201,203],{"className":151,"code":202,"language":153,"meta":154,"style":154},"mm config validate\nmm doctor\nmm target preference show\nmm service status\nmm --runtime podman-compose dev services status\nmm dev tls status\nmm doctor --check-updates\n",[156,204,205,215,222,236,247,267,279],{"__ignoreMap":154},[159,206,207,209,212],{"class":161,"line":162},[159,208,166],{"class":165},[159,210,211],{"class":169}," config",[159,213,214],{"class":169}," validate\n",[159,216,218,220],{"class":161,"line":217},2,[159,219,166],{"class":165},[159,221,170],{"class":169},[159,223,225,227,230,233],{"class":161,"line":224},3,[159,226,166],{"class":165},[159,228,229],{"class":169}," target",[159,231,232],{"class":169}," preference",[159,234,235],{"class":169}," show\n",[159,237,239,241,244],{"class":161,"line":238},4,[159,240,166],{"class":165},[159,242,243],{"class":169}," service",[159,245,246],{"class":169}," status\n",[159,248,250,252,256,259,262,265],{"class":161,"line":249},5,[159,251,166],{"class":165},[159,253,255],{"class":254},"sbRf1"," --runtime",[159,257,258],{"class":169}," podman-compose",[159,260,261],{"class":169}," dev",[159,263,264],{"class":169}," services",[159,266,246],{"class":169},[159,268,270,272,274,277],{"class":161,"line":269},6,[159,271,166],{"class":165},[159,273,261],{"class":169},[159,275,276],{"class":169}," tls",[159,278,246],{"class":169},[159,280,282,284,287],{"class":161,"line":281},7,[159,283,166],{"class":165},[159,285,286],{"class":169}," doctor",[159,288,289],{"class":254}," --check-updates\n",[145,291,292,293,295,296,301],{},"For automation, put ",[156,294,181],{}," before the subcommand. Check the exit status\nas well as the JSON: valid JSON can still describe a failure. See\n",[297,298,300],"a",{"href":299},"..\u002Freference\u002Ferrors-and-exit-codes","errors and exit codes",".",[303,304,306],"h2",{"id":305},"plan-changed-after-review","Plan changed after review",[145,308,309],{},"The worktree, configuration, selected environment\u002Fruntime\u002Ftarget, secret\nrevision, registry input, or observed baseline changed. Re-run the exact plan\ncommand with the same flags and apply only its new hash:",[149,311,313],{"className":151,"code":312,"language":153,"meta":154,"style":154},"mm build --publish plan\nmm build --publish apply --plan NEW_HASH --yes\nmm deploy plan\nmm deploy apply --plan NEW_HASH --yes\n",[156,314,315,328,348,357],{"__ignoreMap":154},[159,316,317,319,322,325],{"class":161,"line":162},[159,318,166],{"class":165},[159,320,321],{"class":169}," build",[159,323,324],{"class":254}," --publish",[159,326,327],{"class":169}," plan\n",[159,329,330,332,334,336,339,342,345],{"class":161,"line":217},[159,331,166],{"class":165},[159,333,321],{"class":169},[159,335,324],{"class":254},[159,337,338],{"class":169}," apply",[159,340,341],{"class":254}," --plan",[159,343,344],{"class":169}," NEW_HASH",[159,346,347],{"class":254}," --yes\n",[159,349,350,352,355],{"class":161,"line":224},[159,351,166],{"class":165},[159,353,354],{"class":169}," deploy",[159,356,327],{"class":169},[159,358,359,361,363,365,367,369],{"class":161,"line":238},[159,360,166],{"class":165},[159,362,354],{"class":169},[159,364,338],{"class":169},[159,366,341],{"class":254},[159,368,344],{"class":169},[159,370,347],{"class":254},[145,372,373],{},"Do not reuse the old hash after changing files or selection.",[303,375,377],{"id":376},"runtime-missing-or-unsupported","Runtime missing or unsupported",[145,379,380,381,384,385,388,389,392],{},"Run ",[156,382,383],{},"mm target preference show",", then ",[156,386,387],{},"mm doctor",". Fix the selected runtime or\nchoose another with ",[156,390,391],{},"--runtime","; mm does not silently switch engines. Swarm\nmust be active with one manager and one node. It cannot provide source mounts,\ncontainer health checks, or updates to files inside managed volumes.",[145,394,395],{},"To remember Docker Compose for this project:",[149,397,399],{"className":151,"code":398,"language":153,"meta":154,"style":154},"mm target preference set-runtime docker-compose\n",[156,400,401],{"__ignoreMap":154},[159,402,403,405,407,409,412],{"class":161,"line":162},[159,404,166],{"class":165},[159,406,229],{"class":169},[159,408,232],{"class":169},[159,410,411],{"class":169}," set-runtime",[159,413,414],{"class":169}," docker-compose\n",[145,416,417,418,421],{},"Use ",[156,419,420],{},"--environment NAME"," on the preference command to limit the choice to one\nenvironment. Explicit command-line selections still take precedence.",[303,423,425],{"id":424},"local-target-is-missing","Local target is missing",[145,427,428],{},"Register this workstation with:",[149,430,432],{"className":151,"code":431,"language":153,"meta":154,"style":154},"mm target local\n",[156,433,434],{"__ignoreMap":154},[159,435,436,438,440],{"class":161,"line":162},[159,437,166],{"class":165},[159,439,229],{"class":169},[159,441,442],{"class":169}," local\n",[145,444,445,446,449],{},"This is idempotent and preserves existing targets. ",[156,447,448],{},"mm target add"," is for SSH\ntargets, not local workstation registration.",[303,451,453],{"id":452},"state-uses-an-unsupported-pre-baseline-sqlite-schema","State uses an unsupported pre-baseline SQLite schema",[145,455,456],{},"Stop other mm processes and review recovery:",[149,458,460],{"className":151,"code":459,"language":153,"meta":154,"style":154},"mm doctor recover-state\nmm doctor recover-state --plan PLAN_HASH --yes\n",[156,461,462,471],{"__ignoreMap":154},[159,463,464,466,468],{"class":161,"line":162},[159,465,166],{"class":165},[159,467,286],{"class":169},[159,469,470],{"class":169}," recover-state\n",[159,472,473,475,477,480,482,485],{"class":161,"line":217},[159,474,166],{"class":165},[159,476,286],{"class":169},[159,478,479],{"class":169}," recover-state",[159,481,341],{"class":254},[159,483,484],{"class":169}," PLAN_HASH",[159,486,347],{"class":254},[145,488,489,490,493,494,497,498,501],{},"Replace ",[156,491,492],{},"PLAN_HASH"," with the displayed hash. Use the same ",[156,495,496],{},"--mm-home"," for review\nand apply if you use a custom state directory. The command saves a private\n",[156,499,500],{},"state-backup-\u003Cid>.sqlite3"," beside the database, including committed SQLite WAL\ndata, before resetting the legacy database in a transaction. Changed input\ninvalidates the review. Current, unknown, or newer schemas cannot be reset this\nway.",[145,503,504],{},"Resetting loses the active database's private preferences, build records,\noperation history, and ownership records. Project files, secret files, the\ntarget catalog, and running containers are preserved. Existing resources may\nneed ownership reconciliation; resetting state is not a repair for a failed\ndeployment. Keep the backup until recovery is complete.",[303,506,508],{"id":507},"shared-development-services-network-is-missing","Shared development-services network is missing",[145,510,511],{},"Projects using development mail bindings depend on mm's installation-wide\nservices network. Readiness and deployment apply check that the expected\ntarget-owned network exists before changing runtime resources. Deployment plans\ncan still be reviewed offline:",[149,513,515],{"className":151,"code":514,"language":153,"meta":154,"style":154},"mm dev services plan\nmm dev services apply --plan PLAN_HASH\n",[156,516,517,527],{"__ignoreMap":154},[159,518,519,521,523,525],{"class":161,"line":162},[159,520,166],{"class":165},[159,522,261],{"class":169},[159,524,264],{"class":169},[159,526,327],{"class":169},[159,528,529,531,533,535,537,539],{"class":161,"line":217},[159,530,166],{"class":165},[159,532,261],{"class":169},[159,534,264],{"class":169},[159,536,338],{"class":169},[159,538,341],{"class":254},[159,540,541],{"class":169}," PLAN_HASH\n",[145,543,544,545,547,548,551,552,555,556,301],{},"Review the plan and replace ",[156,546,492],{}," with its hash. For a new workstation\nthat also needs local TLS setup, use ",[156,549,550],{},"mm --runtime docker-compose dev setup --services",". To disable injected development mail, set\n",[156,553,554],{},"development-mail.enabled: false"," in ",[156,557,558],{},".config\u002Fmm.yaml",[303,560,562],{"id":561},"https-name-does-not-resolve","HTTPS name does not resolve",[145,564,565,566,569,570,573],{},"Check route ownership with ",[156,567,568],{},"mm config ingress list",". Configure local DNS\u002Fhosts for the\nexact ",[156,571,572],{},".test"," name, or isolate DNS from TLS\u002Fruntime problems:",[149,575,577],{"className":151,"code":576,"language":153,"meta":154,"style":154},"curl --resolve web.my-project.test:443:127.0.0.1 https:\u002F\u002Fweb.my-project.test\u002Fhealth\n",[156,578,579],{"__ignoreMap":154},[159,580,581,584,587,590],{"class":161,"line":162},[159,582,583],{"class":165},"curl",[159,585,586],{"class":254}," --resolve",[159,588,589],{"class":169}," web.my-project.test:443:127.0.0.1",[159,591,592],{"class":169}," https:\u002F\u002Fweb.my-project.test\u002Fhealth\n",[145,594,595,596,599,600,602,603,606,607,610],{},"If this works, the remaining problem is DNS. From the mm checkout, run\n",[156,597,598],{},".\u002Finstall.sh --setup-only"," to configure or verify wildcard ",[156,601,572],{}," resolution.\nNo per-project ",[156,604,605],{},"domains"," entries or hosts-file entries are needed for automatic\n",[156,608,609],{},"{service}.{project-name}.test"," routing.",[145,612,613,614,616,617,620,621,624,625,628,629,632,633,636,637,639],{},"If workstation DNS is active but ",[156,615,572],{}," resolution still fails, inspect\n",[156,618,619],{},"resolvectl status mm-test-dns",". It should list ",[156,622,623],{},"169.254.77.53"," and only ",[156,626,627],{},"~test",".\nA different server or ",[156,630,631],{},"~."," indicates another DNS manager overwrote the interface.\nRerun the updated installer with ",[156,634,635],{},"--setup-only","; its NetworkManager configuration\nkeeps mm's interface separate from connection dispatcher hooks. The DNS service\nanswers only ",[156,638,572],{},"; ordinary DNS continues through the system's existing\nupstreams.",[145,641,642,643,646,647,650,651,654,655,658,659,662,663,666,667,670,671,301],{},"On macOS, ",[156,644,645],{},"scutil --dns"," should list a resolver for domain ",[156,648,649],{},"test"," with\nnameserver ",[156,652,653],{},"127.0.77.53",". Check name resolution the way browsers do, with\n",[156,656,657],{},"dscacheutil -q host -a name web.my-project.test","; ",[156,660,661],{},"dig"," and ",[156,664,665],{},"nslookup"," bypass\n",[156,668,669],{},"\u002Fetc\u002Fresolver"," and are not a reliable test. If the resolver is listed but names\ndo not resolve, inspect ",[156,672,673],{},"sudo launchctl print system\u002Flocal.mm.dns",[303,675,677],{"id":676},"local-ingress-does-not-start-on-macos","Local ingress does not start on macOS",[145,679,380,680,683],{},[156,681,682],{},"mm ingress status",". The most common causes are:",[685,686,687,702,716],"ul",{},[688,689,690,693,694,697,698,701],"li",{},[175,691,692],{},"Another program uses port 80 or 443."," ",[156,695,696],{},"mm ingress start"," reports that the\nforwarder did not stay running and leaves it stopped. Find the program with\n",[156,699,700],{},"lsof -nP -iTCP:80 -iTCP:443 -sTCP:LISTEN",", stop it, then retry.",[688,703,704,707,708,711,712,715],{},[175,705,706],{},"Docker is not Docker Desktop."," mm reports the active endpoint. Run\n",[156,709,710],{},"docker context use desktop-linux",", or unset ",[156,713,714],{},"DOCKER_HOST",", then retry.",[688,717,718,721,722,725,726,301],{},[175,719,720],{},"The forwarder is disabled in launchd."," Run\n",[156,723,724],{},"launchctl enable gui\u002F$(id -u)\u002Flocal.mm.ingress-forwarder",", then\n",[156,727,696],{},[145,729,730,731,734,735,738,739,742,743,746],{},"Agent output is in ",[156,732,733],{},"~\u002FLibrary\u002FLogs\u002Fmm\u002F",": ",[156,736,737],{},"ingress-forwarder.log"," for HAProxy,\n",[156,740,741],{},"ingress.log"," for the Compose replay at login, and ",[156,744,745],{},"dashboard.log",". After login,\nthe ingress containers start once Docker Desktop is running; the replay retries\nevery 15 seconds until then.",[303,748,750],{"id":749},"certificate-is-untrusted","Certificate is untrusted",[145,752,380,753,756,757,760,761,764],{},[156,754,755],{},"mm dev tls status",". Linux trust generally needs ",[156,758,759],{},"sudo","; macOS\u002FWindows system\ntrust needs explicit ",[156,762,763],{},"--system",". Repair owned trust and key permissions with:",[149,766,768],{"className":151,"code":767,"language":153,"meta":154,"style":154},"mm dev tls repair\n",[156,769,770],{"__ignoreMap":154},[159,771,772,774,776,778],{"class":161,"line":162},[159,773,166],{"class":165},[159,775,261],{"class":169},[159,777,276],{"class":169},[159,779,780],{"class":169}," repair\n",[145,782,783,784,787,788,791,792,301],{},"A same-name foreign certificate is not replaced or deleted. Investigate that\ncollision instead of copying private CA keys or using ",[156,785,786],{},"curl -k"," as a fix.\nStale project leaves require a reviewed deployment reconciliation; stale shared\nservice leaves require an explicit-runtime ",[156,789,790],{},"mm dev services plan --operation repair"," and matching ",[156,793,794],{},"mm dev services repair",[303,796,798],{"id":797},"deployment-has-no-matching-published-build","Deployment has no matching published build",[145,800,801],{},"Confirm the configured image repository is real, the worktree is clean, and\nthe clone is not shallow:",[149,803,805],{"className":151,"code":804,"language":153,"meta":154,"style":154},"git status --short\ngit rev-parse --is-shallow-repository\ngit fetch --unshallow --tags  # when the preceding command prints true\n",[156,806,807,818,828],{"__ignoreMap":154},[159,808,809,812,815],{"class":161,"line":162},[159,810,811],{"class":165},"git",[159,813,814],{"class":169}," status",[159,816,817],{"class":254}," --short\n",[159,819,820,822,825],{"class":161,"line":217},[159,821,811],{"class":165},[159,823,824],{"class":169}," rev-parse",[159,826,827],{"class":254}," --is-shallow-repository\n",[159,829,830,832,835,838,841],{"class":161,"line":224},[159,831,811],{"class":165},[159,833,834],{"class":169}," fetch",[159,836,837],{"class":254}," --unshallow",[159,839,840],{"class":254}," --tags",[159,842,844],{"class":843},"sP7nD","  # when the preceding command prints true\n",[145,846,847,848,851,852,854],{},"Then run a reviewed build with ",[156,849,850],{},"--publish"," and re-plan deployment. A build\nwithout ",[156,853,850],{},", a failed build, or one for different source\u002Fconfiguration\ndoes not qualify.",[303,856,858],{"id":857},"configuration-schema-is-rejected","Configuration schema is rejected",[145,860,861],{},"The project file must declare:",[149,863,868],{"className":864,"code":866,"language":867,"meta":154},[865],"language-text","schema-version: 1\n","text",[156,869,866],{"__ignoreMap":154},[145,871,872,873,876],{},"Missing, zero, or other versions are rejected without rewriting the file. Use\nthe typed ",[156,874,875],{},"storage"," secret declaration shown in the configuration reference;\nURI-shaped secret declarations are not part of schema 1.",[303,878,880],{"id":879},"secret-is-missing-or-in-the-wrong-place","Secret is missing or in the wrong place",[145,882,883],{},"Inspect metadata without printing values:",[149,885,887],{"className":151,"code":886,"language":153,"meta":154,"style":154},"mm secret status\nmm env status --no-check-secrets\nmm env check\n",[156,888,889,898,910],{"__ignoreMap":154},[159,890,891,893,896],{"class":161,"line":162},[159,892,166],{"class":165},[159,894,895],{"class":169}," secret",[159,897,246],{"class":169},[159,899,900,902,905,907],{"class":161,"line":217},[159,901,166],{"class":165},[159,903,904],{"class":169}," env",[159,906,814],{"class":169},[159,908,909],{"class":254}," --no-check-secrets\n",[159,911,912,914,916],{"class":161,"line":224},[159,913,166],{"class":165},[159,915,904],{"class":169},[159,917,918],{"class":169}," check\n",[145,920,921,922,925,926,929,930,933,934,937,938,662,941,944],{},"For Age, initialize once with ",[156,923,924],{},"mm secret init age",", then use ",[156,927,928],{},"mm secret set KEY","\nor ",[156,931,932],{},"mm secret generate --missing",". Check the selected ",[156,935,936],{},"MM_HOME","; normal private\nstate is under ",[156,939,940],{},"~\u002F.mm\u002Fidentities",[156,942,943],{},"~\u002F.mm\u002Fsecrets",", not the repository.",[145,946,947],{},"If a stateful database stops authenticating immediately after password\nrotation, restore\u002Fcoordinately set the previous database role password. Its\npersistent volume does not re-run image initialization when an mm secret\nchanges.",[303,949,951],{"id":950},"dashboard-has-no-action-buttons","Dashboard has no action buttons",[145,953,954,955,957,958,961],{},"The dashboard is read-only. Use CLI plan\u002Fapply commands to change a deployment.\nIf the dashboard cannot load status, run ",[156,956,387],{}," and\n",[156,959,960],{},"mm dev services status"," rather than connecting directly to its authenticated\nbackend port.",[303,963,965],{"id":964},"interrupted-deployment-or-service-operation","Interrupted deployment or service operation",[145,967,968,969,662,971,974],{},"Deployment apply records a journal and attempts rollback\u002Frecovery on the next\napply. Select the same runtime that owned the interrupted operation, run\n",[156,970,387],{},[156,972,973],{},"mm service status",", then make and apply a fresh deployment plan. Do not\ndelete SQLite state or generated ownership metadata to clear the error.",[145,976,977,978,980],{},"Recovery restores the previous workloads using the environment configuration\nfrom the newly reviewed plan. Configuration edits after the interruption do not\nrequire restoring an old configuration file. If ",[156,979,696],{}," has since\nestablished installation-wide ingress, project recovery leaves it in place.",[145,982,983],{},"Shared service operations block further mutation when their journal requires\nrepair. Use the explicit reviewed repair flow:",[149,985,987],{"className":151,"code":986,"language":153,"meta":154,"style":154},"mm --runtime podman-compose dev services plan --operation repair\nmm --runtime podman-compose dev services repair --plan PLAN_HASH --yes\nmm --runtime podman-compose dev services status\n",[156,988,989,1009,1030],{"__ignoreMap":154},[159,990,991,993,995,997,999,1001,1004,1007],{"class":161,"line":162},[159,992,166],{"class":165},[159,994,255],{"class":254},[159,996,258],{"class":169},[159,998,261],{"class":169},[159,1000,264],{"class":169},[159,1002,1003],{"class":169}," plan",[159,1005,1006],{"class":254}," --operation",[159,1008,780],{"class":169},[159,1010,1011,1013,1015,1017,1019,1021,1024,1026,1028],{"class":161,"line":217},[159,1012,166],{"class":165},[159,1014,255],{"class":254},[159,1016,258],{"class":169},[159,1018,261],{"class":169},[159,1020,264],{"class":169},[159,1022,1023],{"class":169}," repair",[159,1025,341],{"class":254},[159,1027,484],{"class":169},[159,1029,347],{"class":254},[159,1031,1032,1034,1036,1038,1040,1042],{"class":161,"line":224},[159,1033,166],{"class":165},[159,1035,255],{"class":254},[159,1037,258],{"class":169},[159,1039,261],{"class":169},[159,1041,264],{"class":169},[159,1043,246],{"class":169},[145,1045,417,1046,1049],{},[156,1047,1048],{},"docker-compose"," throughout if Docker Compose owns the installation.",[145,1051,1052],{},"Repair of an interrupted first installation completes the reviewed installation\nin place. It retains shared networks that project containers may already use.\nDo not disconnect project endpoints or remove those networks to clear a repair\nerror. When an earlier successful service release exists, repair can restore\nthat recorded release instead.",[145,1054,1055,1056,1059],{},"For CA rotation\u002Ftrust interruption, use ",[156,1057,1058],{},"mm dev tls repair",". Recovery commands\nremain ownership-checked and fail rather than adopting unknown resources.",[303,1061,1063],{"id":1062},"release-installation-fails","Release installation fails",[145,1065,1066,1067,1071],{},"For the checkout installer, start with\n",[297,1068,1070],{"href":1069},"..\u002Fstart\u002Finstall#if-installation-fails","installation troubleshooting",".\nPublic release downloads are not available yet. The notes below apply to the\nrelease installer once packages have been published.",[145,1073,1074],{},"An unsupported-target message means the stable manifest has no exact native\narchive for the detected OS\u002Farchitecture. Do not rename or substitute another\ntarget's archive.",[145,1076,1077,1078,1081,1082,1085],{},"Fix TLS\u002Fproxy failures in system trust or proxy configuration. Do not bypass\n",[156,1079,1080],{},"https:\u002F\u002Fget.modmon.org",", use an ",[156,1083,1084],{},"r2.dev"," URL, or disable certificate validation.\nConfirm that an intercepting proxy supports TLS 1.2 or newer.",[145,1087,1088,1089,1091,1092,1095,1096,1099],{},"Resolve permissions by choosing a user-writable install directory, not by piping\nthe installer through ",[156,1090,759],{},". On Windows, antivirus or a running ",[156,1093,1094],{},"mm.exe"," can\nlock replacement; stop it and retry. For execution-policy errors, download and\ninspect ",[156,1097,1098],{},"install.ps1"," before using a process-scoped policy.",[145,1101,1102,1103,1106],{},"A checksum mismatch or truncated archive is fail-closed. Retry only after the\norigin\u002Fcache issue is understood; never skip checksum verification.\n",[156,1104,1105],{},"mm doctor --check-updates"," returning unavailable means its explicit manifest\nrequest failed or schema 1 was invalid. It downloads no executable; restore\nconnectivity and rerun the installer.",[1108,1109,1110],"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)}html pre.shiki code .sP7nD, html code.shiki .sP7nD{--shiki-default:var(--mm-code-comment)}",{"title":154,"searchDepth":217,"depth":217,"links":1112},[1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126],{"id":305,"depth":217,"text":306},{"id":376,"depth":217,"text":377},{"id":424,"depth":217,"text":425},{"id":452,"depth":217,"text":453},{"id":507,"depth":217,"text":508},{"id":561,"depth":217,"text":562},{"id":676,"depth":217,"text":677},{"id":749,"depth":217,"text":750},{"id":797,"depth":217,"text":798},{"id":857,"depth":217,"text":858},{"id":879,"depth":217,"text":880},{"id":950,"depth":217,"text":951},{"id":964,"depth":217,"text":965},{"id":1062,"depth":217,"text":1063},"Diagnose failed plans, runtimes, HTTPS, builds, and interrupted operations.","md",{},true,{"title":42,"description":1127},"docs\u002Fhelp\u002Ftroubleshooting","K30M4D1OO70VZMFSsCcA6OrhoFq1wrAVk_n79U2MTMQ",1794512546196]