LockFlare

Reading the engine log

The engine log is the first place to look for anything that is not a network problem. Messages are prefixed by scope, and a !! marks a warning or an error.

follow the log
# systemd
sudo journalctl -u lf-engine -f
sudo journalctl -u lf-engine -n 200 --no-pager

pm2

sudo env "PATH=$PATH" pm2 logs lockflare --lines 200

Scopes

ScopeCovers
boot / [FETCH]Licence, reaching the control plane, fetching and decrypting builds.
app / [TENANT]Starting and running your application.
local / [LOCAL]Storing an encrypted build on this server, free-plan storage.
enclave / [ENCLAVE]Sealing and unsealing.
fwdNode only. Forwarding a request between workers.
[CGROUP].NET only. Per-application memory and process limits.

Startup and licensing

MessageWhat it means
LICENSE not set in .env
[INTERPRETER] LICENSE not set in environment
No licence key. Run the engine by hand once to be prompted, or add LICENSE= to .env. The .NET engine exits immediately.
[FETCH] bootstrap rejected (bad license/IP?) The licence does not match this server’s address. Almost always a mistyped IP at registration, or a machine behind NAT whose public address differs. Re-register with the correct address — a licence cannot be repointed.
bootstrap failed — no data from Unity. Set LICENSE in .env and restart. Every attempt to reach the control plane failed. Check outbound connectivity from the server first, then the licence.
connecting to Unity (attempt 2/…) · retrying in 3s Normal transient retry. Only a concern if it never succeeds.
Failed to decrypt bundle from Unity The configuration payload arrived but would not decrypt. Usually a licence that has been rotated or replaced — re-register the server.

Fetching builds

MessageWhat it means
[FETCH] R2 decrypt failed (key/AAD/tag)The artifact did not authenticate. The build is bound to its project and content hash, so this is a mismatch rather than a corrupt download. Push again.
[FETCH] no local copy and no download URLThe server was told to use a locally-stored build that is not present. Push again to restore it.
[FETCH] no DLLs in app zip.NET only. The published output contained no assemblies — usually dotnet publish pointed at the wrong folder.
[FETCH] R2 blob too largeThe artifact exceeded the size ceiling. Check for a build output that has picked up something it should not, such as a node_modules or a source-map bundle.
stored copy unusable, discarding and refetchingSelf-healing. The local copy failed verification and the engine is fetching a fresh one.

Your application

MessageWhat it means
missing npm packages on the fleet
fix: npm install …
Node only. A bare require() for something outside the shared package set. The engine names the packages — install them on the server and restart, or bundle them into the artifact. See Node runtime limitations.
start failed — will retry on request (backoff) Your application threw while starting. The message that follows is your own error. The engine keeps the previous healthy instance serving and retries.
could not initialize The application failed before it produced a handler. Check the starting file is the one that actually launches your server.
forwarded but handler not ready (async .listen pending) Node only. A request arrived before the application finished starting. Harmless in isolation; persistent means something in startup never resolves.
cluster.fork() beyond licensed N worker(s) ignored Your application asked for more workers than the server is licensed for. Not an error — the extra forks are ignored. Add cores if you want them.
forwarded body exceeded … — 413 An upload exceeded the forwarding ceiling. Raise LF_FORWARD_MAX_BODY if the request is legitimate.
[TENANT] refusing restart: previous generation could not be terminated .NET only. The prior instance’s cgroup would not drain, so the engine will not start a second copy against a stale limit. Restart the engine.

Enclave

MessageWhat it means
HMAC verification failed A seal or unseal command failed authentication. Replayed or stale control traffic is rejected by design — retry from Cipher.
PARTIAL UNSEAL — 2/3 restored; enclave file RETAINED for retry Act on this. Some accounts were restored and some were not. The enclave file is kept deliberately so the unseal can be retried — retry it before assuming the server is open.
Failed to report status to Unity after N attempts The seal state changed but Cipher was not told. The server is correct; the dashboard may show a stale seal status until the next report.
breaking stale enclave lock (previous holder likely crashed) Recovery from an interrupted seal operation. Informational.
accepted the LEGACY fleet-wide key Something authenticated with an older credential. Working, but worth migrating that caller to the per-server credential.
On a sealed server you cannot read these logs — there is no login. If a sealed server has gone quiet and does not recover on its own, rebuild it. See Understanding a LockFlare server.