# Service Management Moltis can be installed as an OS service so it starts automatically on boot and restarts after crashes. ## Install ```bash moltis service install ``` This creates a service definition and starts it immediately: | Platform | Service file | Init system | |----------|-------------|-------------| | macOS | `~/Library/LaunchAgents/org.moltis.gateway.plist` | launchd (user agent) | | Linux | `~/.config/systemd/user/moltis.service` | systemd (user unit) | | Linux containers without systemd | `~/.moltis/moltis-service-supervisor.sh` | portable user supervisor | The launchd and systemd configurations: - **Start on boot** (`RunAtLoad` / `WantedBy=default.target`) - **Restart on failure** with a 10-second cooldown - **Log to** `~/.moltis/moltis.log` On Linux, the generated user service is compatible with rootless Podman. If you hand-edit the unit, avoid `NoNewPrivileges=true` and `ProtectHome=true` when using Podman as the sandbox backend because they can prevent Podman from creating user namespaces and reading its per-user container storage. On Linux, Moltis first uses `systemd --user` when it is available. Some development containers, including Coder/devbox environments, do not run systemd or provide the SysV `service` command. In those environments, `moltis service install` falls back to a small user-owned supervisor script in `~/.moltis/`. The fallback starts Moltis in the background, records pid files, supports `status`, `stop`, `restart`, and restarts Moltis after crashes. The portable supervisor is tied to the current container session. If the workspace container is recreated, configure your devbox/Coder startup hook to run `moltis service restart` after installing Moltis. ### Options You can pass `--bind`, `--port`, and `--log-level` to bake them into the service definition: ```bash moltis service install --bind 0.0.0.0 --port 8080 --log-level debug ``` These flags are written into the service file. The service reads the rest of its configuration from `~/.moltis/moltis.toml` as usual. ## Manage ```bash moltis service status # Show running/stopped/not-installed and PID moltis service stop # Stop the service moltis service restart # Restart the service moltis service logs # Print the log file path ``` To tail the logs: ```bash tail -f $(moltis service logs) ``` ## Uninstall ```bash moltis service uninstall ``` This stops the service, removes the service file, and cleans up. ## CLI Reference | Command | Description | |---------|-------------| | `moltis service install` | Install and start the service | | `moltis service uninstall` | Stop and remove the service | | `moltis service status` | Show service status and PID | | `moltis service stop` | Stop the service | | `moltis service restart` | Restart the service | | `moltis service logs` | Print log file path | ## How It Differs from `moltis node add` `moltis service install` manages the **gateway** — the main Moltis server that hosts the web UI, chat sessions, and API. `moltis node add` registers a **headless node** — a client process on a remote machine that connects back to a gateway for command execution. See [Multi-Node](nodes.md) for details. | | `moltis service` | `moltis node` | |---|---|---| | What it runs | The gateway server | A node client | | Needs `--host`/`--token` | No | Yes | | Config source | `~/.moltis/moltis.toml` | `~/.moltis/node.json` | | launchd label | `org.moltis.gateway` | `org.moltis.node` | | systemd unit | `moltis.service` | `moltis-node.service` |