[{"data":1,"prerenderedAt":350},["ShallowReactive",2],{"docs-nav":3,"docs:\u002Fdocs\u002Flocal-dashboard":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":57,"body":141,"description":343,"extension":344,"meta":345,"navigation":346,"path":56,"seo":347,"stem":348,"__hash__":349},"docs\u002Fdocs\u002Flocal-dashboard.md",{"type":142,"value":143,"toc":338},"minimark",[144,148,153,167,174,178,233,240,284,296,300,303,314,334],[145,146,147],"p",{},"The dashboard shows service health, routes, resources, and recent operations.\nIt is read-only: use the CLI or terminal UI to deploy or change configuration.",[149,150,152],"h2",{"id":151},"open-the-dashboard","Open the dashboard",[145,154,155,156,161,162,166],{},"Install the ",[157,158,160],"a",{"href":159},".\u002Flocal-services","shared local services",", then open\n",[163,164,165],"code",{},"https:\u002F\u002Fmm.test",". Choose a registered project to see its dashboard.\nUse the links shown by mm rather than guessing a project hostname.",[145,168,169,170,173],{},"The full dashboard setup requires Linux with systemd and HAProxy, plus Docker\nCompose or Podman Compose. Configure DNS or hosts-file entries for its ",[163,171,172],{},".test","\nnames; mm does not add them automatically.",[149,175,177],{"id":176},"check-a-problem","Check a problem",[179,180,185],"pre",{"className":181,"code":182,"language":183,"meta":184,"style":184},"language-sh shiki shiki-themes mm","mm --runtime docker-compose dev services status\nmm dev tls status\nmm doctor\n","sh","",[163,186,187,213,225],{"__ignoreMap":184},[188,189,192,196,200,204,207,210],"span",{"class":190,"line":191},"line",1,[188,193,195],{"class":194},"svrjQ","mm",[188,197,199],{"class":198},"sbRf1"," --runtime",[188,201,203],{"class":202},"sv8ni"," docker-compose",[188,205,206],{"class":202}," dev",[188,208,209],{"class":202}," services",[188,211,212],{"class":202}," status\n",[188,214,216,218,220,223],{"class":190,"line":215},2,[188,217,195],{"class":194},[188,219,206],{"class":202},[188,221,222],{"class":202}," tls",[188,224,212],{"class":202},[188,226,228,230],{"class":190,"line":227},3,[188,229,195],{"class":194},[188,231,232],{"class":202}," doctor\n",[145,234,235,236,239],{},"Use ",[163,237,238],{},"podman-compose"," instead if it owns your shared services. If a project was\njust registered, refresh the shared services to add its dashboard certificate:",[179,241,243],{"className":181,"code":242,"language":183,"meta":184,"style":184},"mm --runtime docker-compose dev services plan\nmm --runtime docker-compose dev services apply --plan PLAN_HASH --yes\n",[163,244,245,260],{"__ignoreMap":184},[188,246,247,249,251,253,255,257],{"class":190,"line":191},[188,248,195],{"class":194},[188,250,199],{"class":198},[188,252,203],{"class":202},[188,254,206],{"class":202},[188,256,209],{"class":202},[188,258,259],{"class":202}," plan\n",[188,261,262,264,266,268,270,272,275,278,281],{"class":190,"line":215},[188,263,195],{"class":194},[188,265,199],{"class":198},[188,267,203],{"class":202},[188,269,206],{"class":202},[188,271,209],{"class":202},[188,273,274],{"class":202}," apply",[188,276,277],{"class":198}," --plan",[188,279,280],{"class":202}," PLAN_HASH",[188,282,283],{"class":198}," --yes\n",[145,285,286,287,290,291,295],{},"Replace ",[163,288,289],{},"PLAN_HASH"," with the printed hash. See\n",[157,292,294],{"href":293},".\u002Fhelp\u002Ftroubleshooting","troubleshooting"," for DNS, certificate, and service\nrepair steps.",[149,297,299],{"id":298},"access-and-privacy","Access and privacy",[145,301,302],{},"The dashboard omits secret values, credentials, raw command output, and private\nfilesystem paths. Anyone who can reach the trusted local routes can view the\noverview; it is not a per-user authorization system for shared workstations.",[145,304,305,306,309,310,313],{},"Normal setup starts the dashboard automatically. ",[163,307,308],{},"mm dev dashboard serve"," is\nfor development and diagnostics. Its backend defaults to ",[163,311,312],{},"0.0.0.0:42831"," and\nrequires mm's private proxy credential; do not expose or proxy it separately.",[145,315,316,317,321,322,325,326,329,330,333],{},"API consumers can use the version-1 ",[157,318,320],{"href":319},"\u002Fschema\u002Fdashboard.schema.json","dashboard schema",".\nThe read-only endpoints are ",[163,323,324],{},"\u002Fapi\u002Fv1\u002Fdashboard",", ",[163,327,328],{},"\u002Fapi\u002Fv1\u002Fevents",", and\n",[163,331,332],{},"\u002Fapi\u002Fv1\u002Fschema",". Events tell clients when to refresh their snapshot.",[335,336,337],"style",{},"html pre.shiki code .svrjQ, html code.shiki .svrjQ{--shiki-default:var(--mm-code-function)}html pre.shiki code .sbRf1, html code.shiki .sbRf1{--shiki-default:var(--mm-code-option)}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);}",{"title":184,"searchDepth":215,"depth":215,"links":339},[340,341,342],{"id":151,"depth":215,"text":152},{"id":176,"depth":215,"text":177},{"id":298,"depth":215,"text":299},"View project health, routes, and recent operations in your browser.","md",{},true,{"title":57,"description":343},"docs\u002Flocal-dashboard","tPYr5U7PZFn8j0ngcRWaeaBvVC0U00J5Vq-xr-C9KoA",1794512545909]