diff --git a/docs/content/docs/(getting-started)/docker.mdx b/docs/content/docs/(getting-started)/docker.mdx
index 8b4c2e584..701518807 100644
--- a/docs/content/docs/(getting-started)/docker.mdx
+++ b/docs/content/docs/(getting-started)/docker.mdx
@@ -215,7 +215,8 @@ docker compose up -d
### One-Click Update
-Mount the Docker socket to enable updating directly from the web UI:
+Mount the container runtime socket to enable updating directly from the web UI.
+For Docker, mount `/var/run/docker.sock`. For Podman, see the [Podman](#podman) section below.
```yaml
services:
@@ -277,3 +278,128 @@ fly volumes create spacebot_data --size 5
fly secrets set ANTHROPIC_API_KEY="sk-ant-..."
fly deploy
```
+
+## Podman
+
+Spacebot works with Podman as a drop-in replacement for Docker. Set
+`SPACEBOT_DEPLOYMENT=docker` (the same value used for Docker) and mount the
+Podman socket to enable one-click updates from the web UI.
+
+### Quick Start
+
+```bash
+podman run -d \
+ --name spacebot \
+ -e ANTHROPIC_API_KEY="sk-ant-..." \
+ -e SPACEBOT_DEPLOYMENT=docker \
+ -v spacebot-data:/data \
+ -p 19898:19898 \
+ ghcr.io/spacedriveapp/spacebot:slim
+```
+
+### One-Click Updates with Podman
+
+Spacebot supports both rootful and rootless Podman socket paths.
+
+**Rootful Podman** — start the socket service and mount it:
+
+```bash
+sudo systemctl enable --now podman.socket
+```
+
+```bash
+podman run -d \
+ --name spacebot \
+ -e ANTHROPIC_API_KEY="sk-ant-..." \
+ -e SPACEBOT_DEPLOYMENT=docker \
+ -v spacebot-data:/data \
+ -v /run/podman/podman.sock:/run/podman/podman.sock \
+ --security-opt label=disable \
+ -p 19898:19898 \
+ ghcr.io/spacedriveapp/spacebot:slim
+```
+
+**Rootless Podman** — enable the user socket and map it to the standard rootful
+path inside the container. The container has no user profile, so mapping to
+`/run/podman/podman.sock` (not the host's user-scoped path) is cleaner and
+requires no extra environment variables:
+
+```bash
+systemctl --user enable --now podman.socket
+```
+
+```bash
+podman run -d \
+ --name spacebot \
+ -e ANTHROPIC_API_KEY="sk-ant-..." \
+ -e SPACEBOT_DEPLOYMENT=docker \
+ -v spacebot-data:/data \
+ -v $XDG_RUNTIME_DIR/podman/podman.sock:/run/podman/podman.sock \
+ --security-opt label=disable \
+ -p 19898:19898 \
+ ghcr.io/spacedriveapp/spacebot:slim
+```
+
+You can also set `DOCKER_HOST=unix:///path/to/podman.sock` to point Spacebot at
+any custom socket location.
+
+> **SELinux note (Fedora, RHEL, and derivatives):** SELinux blocks containers
+> from connecting to the Podman socket by default. Add
+> `--security-opt label=disable` to the `podman run` command, or
+> `security_opt: [label=disable]` in your `podman-compose.yml`, when mounting
+> the socket.
+
+### Podman Compose
+
+For rootful Podman, use the system socket directly:
+
+```yaml
+services:
+ spacebot:
+ image: ghcr.io/spacedriveapp/spacebot:slim
+ container_name: spacebot
+ restart: unless-stopped
+ ports:
+ - "19898:19898"
+ volumes:
+ - spacebot-data:/data
+ - /run/podman/podman.sock:/run/podman/podman.sock
+ environment:
+ - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
+ - SPACEBOT_DEPLOYMENT=docker
+ security_opt:
+ - label=disable
+
+volumes:
+ spacebot-data:
+```
+
+For rootless Podman, map the user socket to the standard rootful path inside
+the container (no `XDG_RUNTIME_DIR` needed inside the container):
+
+```yaml
+services:
+ spacebot:
+ image: ghcr.io/spacedriveapp/spacebot:slim
+ container_name: spacebot
+ restart: unless-stopped
+ ports:
+ - "19898:19898"
+ volumes:
+ - spacebot-data:/data
+ - ${XDG_RUNTIME_DIR}/podman/podman.sock:/run/podman/podman.sock
+ environment:
+ - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
+ - SPACEBOT_DEPLOYMENT=docker
+ security_opt:
+ - label=disable
+
+volumes:
+ spacebot-data:
+```
+
+Run with `podman-compose up -d`.
+
+> **Note:** `SPACEBOT_DEPLOYMENT=docker` is required regardless of whether you
+> use Docker or Podman — the value tells Spacebot that it is running inside a
+> container and can manage its own lifecycle via the socket.
diff --git a/interface/src/components/UpdateBanner.tsx b/interface/src/components/UpdateBanner.tsx
index c278ca149..979c98910 100644
--- a/interface/src/components/UpdateBanner.tsx
+++ b/interface/src/components/UpdateBanner.tsx
@@ -64,7 +64,7 @@ export function UpdateBanner() {
)}
{!data.can_apply && data.deployment === "docker" && (
- Mount docker.sock for one-click updates
+ Mount the container runtime socket for one-click updates
)}