feat: docsgpt up --native

Run DocsGPT without Docker: the API and the worker each become a service
on the machine itself, a launchd agent on macOS and a systemd user unit
on Linux, pointed at a PostgreSQL and a Redis that already run.

`docsgpt up --native --postgres-uri ... --redis-url ...` writes the same
.env a Docker install uses, applies the migrations and starts both
services. status, logs, down and uninstall work on a native install the
same way they do on a Docker one, and never touch the database or Redis:
they were the user's to begin with.

One Redis URL covers the broker, the result backend and the cache on
three consecutive databases, starting at the one the URL names, so a
Redis that already holds something else can be shared.

Windows has neither service manager, so native mode refuses it and says
what to do instead.
This commit is contained in:
Alex committed 2026-09-16 21:51:43 +01:00
1 parent fe68fec69e
commit f23a32d9c5
7 files changed
+722 -7

No files matched your search

+4
View File
@@ -206,6 +206,10 @@ def _add_deploy_commands(commands) -> None:
help="go back to the default image")
up.set_defaults(docling=None)
up.add_argument("--image-tag", help="image tag to run instead of this package's version, e.g. develop")
up.add_argument("--native", action="store_true",
help="run the API and worker as services on this machine instead of on Docker")
up.add_argument("--postgres-uri", help="native mode: the PostgreSQL DocsGPT should use")
up.add_argument("--redis-url", help="native mode: the Redis for the queue and the cache (default: localhost:6379)")
up.add_argument("-y", "--yes", action="store_true", help="ask nothing: use the flags, then the defaults")
up.add_argument("--reconfigure", action="store_true", help="ask the setup questions again")
up.add_argument("--adopt", action="store_true", help="take over a DocsGPT stack started from another folder")