[{"data":1,"prerenderedAt":182},["ShallowReactive",2],{"app-en-process-manager":3,"cats-en":100,"mdc--nx0d4l-key":122},{"id":4,"body":5,"category":82,"extension":83,"featured":84,"header":85,"meta":97,"slug":68,"stem":98,"__hash__":99},"apps\u002Fen\u002Fapps\u002Fprocess-manager.yml",[6,29,45,57,62,73],{"name":7,"type":8,"args":9},"Features","features",{"items":10},[11,14,17,20,23,26],{"title":12,"description":13},"Docker-compose style config","Define services in pm.yaml — command, environment, depends_on, working_dir, restart policy.",{"title":15,"description":16},"Interactive TUI","Navigate services, start\u002Fstop\u002Frestart individually or all at once. Keyboard-driven.",{"title":18,"description":19},"Daemon mode","pm up starts a background daemon. Services keep running after TUI exit.",{"title":21,"description":22},"Per-service logs","pm logs \u003Cservice> tails output. Add -f to follow.",{"title":24,"description":25},"Restart policies","no, on-failure, or always. Exponential backoff: 1s to 32s cap.",{"title":27,"description":28},"Hot reload","pm reload picks up config changes without restarting running services.",{"name":30,"type":31,"args":32},"Usage","code",{"commands":33},[34,35,36,37,38,39,40,41,42,43,44],"pm                  # launch TUI (default)","pm up               # start all services","pm up api db        # start named services","pm stop             # stop all","pm stop api         # stop named","pm restart          # restart all","pm status           # print status table","pm logs api         # tail logs","pm logs api -f      # follow logs","pm reload           # reload config","pm shutdown         # shut down daemon",{"name":46,"type":31,"args":47},"TUI keybindings",{"commands":48},[49,50,51,52,53,54,55,56],"↑\u002F↓ or k\u002Fj    Navigate services","s \u002F Enter      Start selected","x              Stop selected","r              Restart selected","a              Start all","z              Stop all","R (shift)      Reload config","q              Quit TUI (services keep running)",{"name":58,"type":59,"args":60},"Config example","markdown",{"content":61},"Create `pm.yaml` in your project root:\n\n```yaml\nservices:\n  web:\n    command: python3 -m http.server 8080\n    environment:\n      PYTHONUNBUFFERED: \"1\"\n    depends_on:\n      - logger\n    restart: on-failure\n\n  logger:\n    command: bash -c \"while true; do echo heartbeat; sleep 5; done\"\n```\n\nAll fields except `command` are optional. `working_dir` defaults to the config directory.\n",{"name":63,"type":64,"args":65},"Tags","tags",{"tags":66},[67,68,69,70,71,72],"rust","process-manager","docker-compose","tui","daemon","cli",{"name":74,"type":75,"args":76},"Changelog","changelog",{"entries":77},[78],{"date":79,"version":80,"text":81},"2026-04-19","v0.1.0","Initial release — daemon, TUI, YAML config, restart policies, per-service logs","dev-tools","yml",true,{"name":86,"tagline":87,"description":88,"platforms":89,"installCommand":91,"links":92,"requirements":95,"screenshot":96},"pm","Docker-compose-like process manager with TUI dashboard. Runs any command, not limited to Node\u002FBun.","YAML config, dependency ordering, restart policies, interactive TUI, daemon mode, per-service logs.",[90],"Linux","curl -fsSL appcrate.dev\u002Fpm | sh",{"github":93,"download":94},"https:\u002F\u002Fgithub.com\u002Folamedia\u002Fprocess-manager","https:\u002F\u002Fgithub.com\u002Folamedia\u002Fprocess-manager\u002Freleases","Rust binary. Linux x86_64. MIT License.","\u002Fscreenshots\u002Fprocess-manager.png",{},"en\u002Fapps\u002Fprocess-manager","5PMiIXgvwDc-grN7Zb_4RczLcgpYExOnBhEVu_m0sLE",{"id":101,"extension":83,"items":102,"meta":119,"stem":120,"__hash__":121},"categories\u002Fen\u002Fcategories.yml",[103,105,108,111,114,116],{"slug":82,"label":104},"Dev Tools",{"slug":106,"label":107},"ai","AI",{"slug":109,"label":110},"games","Games",{"slug":112,"label":113},"mobile","Mobile",{"slug":72,"label":115},"CLI",{"slug":117,"label":118},"utilities","Utilities",{},"en\u002Fcategories","MvaEfwnqgassJcsI3pKwUkdu-xCj98IMS9cksTLQ_Cw",{"data":123,"body":124},{},{"type":125,"children":126},"root",[127,143,156,177],{"type":128,"tag":129,"props":130,"children":131},"element","p",{},[132,135,141],{"type":133,"value":134},"text","Create ",{"type":128,"tag":31,"props":136,"children":138},{"className":137},[],[139],{"type":133,"value":140},"pm.yaml",{"type":133,"value":142}," in your project root:",{"type":128,"tag":144,"props":145,"children":151},"pre",{"className":146,"code":147,"language":148,"meta":149,"style":150},"language-yaml","services:\n  web:\n    command: python3 -m http.server 8080\n    environment:\n      PYTHONUNBUFFERED: \"1\"\n    depends_on:\n      - logger\n    restart: on-failure\n\n  logger:\n    command: bash -c \"while true; do echo heartbeat; sleep 5; done\"\n","yaml","","undefined",[152],{"type":128,"tag":31,"props":153,"children":154},{"__ignoreMap":149},[155],{"type":133,"value":147},{"type":128,"tag":129,"props":157,"children":158},{},[159,161,167,169,175],{"type":133,"value":160},"All fields except ",{"type":128,"tag":31,"props":162,"children":164},{"className":163},[],[165],{"type":133,"value":166},"command",{"type":133,"value":168}," are optional. ",{"type":128,"tag":31,"props":170,"children":172},{"className":171},[],[173],{"type":133,"value":174},"working_dir",{"type":133,"value":176}," defaults to the config directory.",{"type":128,"tag":178,"props":179,"children":180},"style",{},[181],{"type":133,"value":149},1777756433983]