Skip to content

Troubleshooting, by symptom

Find your symptom; follow the link to the page that owns the fix.

The stack won't cooperate

Which restart is safe, and what each one costs: the on-call runbook.

Symptom First move
The hub won't start, or 500s everywhere curl -s http://localhost:8080/q/health (no lm command reads it), then the hub logs
required variable LUMNIK_SECRET_MASTER_KEY is missing a value when the stack starts the key is missing from .env — on a fresh install, generate one with openssl rand -base64 32; on an existing one, restore it from your backup (the master key)
lumnik.secret.master-key is too short (< 16 chars) at boot the key is shorter than 16 characters — same fix
First boot seems stuck migrations run at first boot — give it a minute, watch ./deploy/selfhost/logs.sh hub
up.sh refuses to start, naming missing tools its preflight — the message shows the exact install line; run it, re-run up.sh (Windows walkthrough, step 3)
!! could not obtain a Keycloak admin token (check KEYCLOAK_ADMIN / KEYCLOAK_ADMIN_PASSWORD in .env) at the end of up.sh — then logins fail either Keycloak was still starting: re-run up.sh; or KEYCLOAK_ADMIN_PASSWORD in .env no longer matches the console's: set the same value in both. Still failing: ./deploy/selfhost/logs.sh keycloak
Anything on a Windows PC the dedicated page: Deploy on Windows → Troubleshooting
https / certificate trouble the TLS proxy — caddy logs, Deploy

Login and identity

Symptom First move
401 with tenant_id, subject/issuer or claim errors the claim wiring — BYO IdP troubleshooting has the full table
403 on every endpoint despite a valid login the groups claim doesn't carry lm_* role names — BYO IdP
403 {"error":"user is deactivated"} the identity was archived (SCIM departure) — SCIM
Login broke after moving to TLS or a new hostname the issuer changed — Keep the same public address
SCIM calls misbehave SCIM troubleshooting — the issuer-mismatch 404 is the classic
lm prints API error 403 (forbidden): no details from the server — your account may lack the required role (raw HTTP: 403 with an empty body) a required role is missing — Roles & permissions
API error 403: missing role lm_integrator the /api/platform/* gate: the account lacks lm_integrator — same page

Refusals that are features

Symptom What it is
access refused (403): scope not granted (raw HTTP: 403 {"error":"scope not granted"}) the business-scope boundary: your user holds scope roles and this resource is outside them. It covers every read surface (PWA lists, chat, views), so several going quiet at once points here. Scopes
The chat says "I can't answer that…" or "I won't run this…" a guard refused rather than guess; the message says what to do next
"The query returned no rows. That can mean…" an empty result — check the SQL shown before concluding there are none
Error: API error 409: no schema discovered for scope '…' — apply an entity or run discovery first nothing was applied to the scope yet, or its last connector was deleted or moved — apply an entity (the message says so), then ask again
The ask answers "I have no data declared for this scope yet…" although you ingested into that scope the scope's schema card declares no tables — see below
429 on chat, search, or view-generate — not a connector run the hub's own inbound limit — Rate limits. A vendor throttling a connector is the 429 under Ingestion

Look at the scope's schema card (needs lm_admin on top of lm_integrator):

lm source schema --scope <scope> prints Meaning Fix
(no tables — run 'lm source rediscover --scope <scope>') the card exists but declares no tables run that lm source rediscover; it removes the empty card
Error: API error 404: No schema card found for scope: <scope> no card at all — the 409 state above apply an entity to the scope

The ask is Pro only; lm source schema and rediscover exist on both editions.

The ask and the model

Symptom First move
The ask/chat errors after ~20 s, with an opaque error id the model failed to load on the machine running Ollama — on Windows, update the NVIDIA drivers first, then the RAM note: Deploy on Windows, step 5
The very first ask after a restart is slow or times out the model loads on first use (tens of seconds on CPU) — ask again; on a server set OLLAMA_KEEP_ALIVE=-1 in Ollama's own environment (Deploy)
Chat/search return nothing, ask has no model Ollama isn't installed or reachable — install it (Windows: step 5) and check OLLAMA_BASE_URL (Models)
Same, on a Linux host Ollama listens on 127.0.0.1, which the hub container cannot reach — bind it on the Docker bridge: Deploy → Linux host

Ingestion

Symptom First move
A run failed, or rows are missing the dedicated recipe: Diagnosing a failed run
run scheduled looked fine, but lm run list says Failed "scheduled" only means queued. Failed at 0/0 usually means the source did not answer — lm run get <id> prints why (Diagnosing a failed run)
A run says Completed but IN=0 OUT=0 the connector found nothing to read — for file connectors, the path or mount does not exist where the hub looks (the WOW's ✔ checks catch it)
lm entity apply errors naming a relation that does not exist a source connector never landed rows — check lm run list
An applied entity never shows up in lm ask/chat the manifest declares no scopes: — Entities troubleshooting
429 Too Many Requests from a REST vendor lower default_rate_limit — REST troubleshooting
SFTP auth, host-key, or S3 403 errors CSV & files troubleshooting
Bearer token unavailable (env=…) — REST connectors only the secret was never set — lm secret set, quickstart table
jdbc run fails: password_env '<NAME>' is neither in the server environment nor in lm secret lm secret set <NAME>, or set it in the hub's environment — JDBC troubleshooting
A cursor seems stuck in the past lm endpoint reset-cursor <connector>/<endpoint> — next run is a full refresh

Outputs and apps

Symptom First move
A webhook never arrived lm outputs list (failures first), then lm outputs replay <ID> — or ^R in the TUI :outputs (Outputs)
The Records list on a phone looks empty see the table below
The PWA shows an old version after a hub upgrade the phone keeps the app's screens between openings (offline). Close the app and open it again, twice if needed: a new version is fetched at one opening and shown at the next
lm view -f v.yaml (the list), lm view KEY -f v.yaml (one record) or lm view apply refused a manifest field/column mismatch, or a missing scope role — Views troubleshooting
lm process apply refused, or a declared process never fires a manifest/schema mismatch, or its trigger table broke at runtime — Processes troubleshooting
lm workflow apply refused an unknown field, a lifecycle collision, or dormancy declared without on.key — Workflows troubleshooting
A workflow alert didn't fire dormancy is observation-relative and needs on.key + dormancy.after — Workflows

An empty Records list on the phone:

You see Meaning Where to look
an amber box with a message a refusal, with its reason: no view applied for the scope, or 403 scope not granted Views troubleshooting, Scopes
grey "Aucune ligne" text the view rendered and found zero rows the source data

Still stuck? Reading the logs says where every component writes, and how to raise the volume for the minutes you need it.