Operating
Logs, limits, and getting rid of an app.
Logs
lenshub_app_logs returns recent stdout and stderr, plus the build log of
the latest release when that build failed. People see the same output on the
app's Logs tab, and live CPU, memory and request numbers on Monitoring. Refused outbound calls appear here
too — that is usually what you are looking for when an app "does nothing".
Resource limits
Every app runs in a tier. small is the default; an administrator changes it
on the app's Settings tab.
| Tier | CPUs | Memory | Processes | Disk |
|---|---|---|---|---|
small | 0.5 | 256 MB | 128 | 512 MB |
medium | 1 | 1 GB | 256 | 2 GB |
large | 2 | 4 GB | 512 | 8 GB |
An app that exceeds its memory is restarted rather than left to exhaust the
host. APPD_MAX_STORAGE_GB caps the total across all app images and volumes;
once it is reached, new builds are refused.
Isolation
Builds reach public hosts only, through the egress proxy, and never an internal
address (APPD_BUILD_NETWORK=proxy, the default; none cuts builds off
entirely). Where the host provides gVisor, appd uses it (APPD_GVISOR). Each app gets its own volume, removed when the app is.
Monitoring
appd serves Prometheus metrics on APPD_METRICS_LISTEN (:9466 in compose,
on its control network): builds by outcome, and calls the egress proxy
refused. See Monitoring.
Removing an app
lenshub_app_delete — or Delete app on the app's Settings tab — stops
the container, removes its network and its data volume, and revokes its
links. Releases and events are kept — deleting an app
does not erase the record of what it did.