You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* engine: zero-config local mode (engine --local / VLE_LOCAL_MODE) on :7654
Adds a local mode that moves the base config to zero-setup defaults BEFORE
the file/env layers (which still override): listen on :7654, a localhost
Postgres URL matching the bundled/dev database, local file storage, and the
Postgres-backed river queue (no Redis needed). The engine then boots with
no required configuration — closing the 'database.url is required' gap that
otherwise blocks a bare run.
- --local flag sets VLE_LOCAL_MODE=true so CLI + Docker (env) share one path.
- Adds VLE_STORAGE_LOCAL_ROOT binding for the image's data volume.
- cmd/engine is already unauthenticated (single tenant), so local-mode auth
needs no extra wiring; documented as dev/local only.
- Documented in config.example.yaml; tests cover defaults, truthy forms,
env-override precedence, and the non-local missing-DB-URL failure.
Foundation for the all-in-one image (HAL-185) + local dashboard (HAL-188).
Closes HAL-186.
* docs: align documented local Postgres URL with the real default (?sslmode=disable)
Per CodeRabbit review on #42 — the example referenced the DSN without the
sslmode param that applyLocalDefaults actually injects.
* engine: fsync source writes + retry source fetch on ErrNotFound (HAL-319)
The ingest worker could race the just-written source object (Local.Put did
no fsync; River picks the job up within microseconds), failing with
'parse: fetch source: storage: object not found' and marking the doc failed.
Local.Put now fsyncs before returning and the source fetch retries on
ErrNotFound with short backoff.
* config: document that anthropic base_url must include /v1 for GLM/Z.ai gateways (HAL-318)
* engine: add GET /v1/documents/{id}/source + all-in-one Docker image (HAL-188, HAL-185)
New GET /v1/documents/{id}/source streams the original bytes (for PDF page
previews in clients). Dockerfile.allinone bundles the engine + Postgres + the
local web UI into one image; docker-allinone.yml publishes it to Docker Hub +
GHCR.
* ci: enforce LF for shell scripts (protect the Docker entrypoint)
* ci: build all-in-one image from the local-mode branch to publish :latest
* engine+ui: BYOK — per-request LLM key via X-LLM-* headers + dashboard settings (HAL-188)
The engine now boots without a provider key in local mode and accepts per-request
credentials (X-LLM-Api-Key / X-LLM-Provider / X-LLM-Base-Url / X-LLM-Model),
building a per-request client that drives both the treewalk loop and citation
span extraction. The bundled UI gains a settings modal that stores the key in the
browser and sends it as headers — so a docker-run user configures their key from
the dashboard, not only via env.
* ci: trigger all-in-one image build on main + dispatch (post-merge)
LABEL org.opencontainers.image.description="Vectorless retrieval engine + bundled Postgres + web UI in one container. Reasoning-based document retrieval — no chunking, no embeddings, no vector DB."
0 commit comments