App kinds
The probe classifies what you dropped into one of these kinds and serves it accordingly. You never declare the kind, it is observed (and if it is ever wrong, you can pin it in the run contract).
| Kind | What it is | How it’s served |
|---|---|---|
web |
binds a port and speaks HTTP | reverse-proxied at https://<id>.<domain>/ |
tcp |
binds a port, not HTTP | reachable at a direct host:port address |
worker |
stays alive producing output, no bind | logs at /logs/<id>; never idled |
job |
runs to completion and exits | run on demand via the app or POST /run/<id> |
interactive |
a REPL or TUI that waits on a terminal | a fresh process per browser terminal session, no long-lived process |
static |
a directory of files | served as a static site |
docs |
documents & media (pdf, csv, md, images, video) | a generated viewer with a download link |
oci |
a container image | its entrypoint is run under a filesystem scope |
gui |
a desktop / X11 app | run headless and streamed to your browser over VNC |
Content deploys
A drop made entirely of documents and media is treated as data, not code. Jollop generates a
viewer: PDFs in a frame, images and video in native players, CSV parsed into a table, Markdown
rendered, JSON pretty-printed, always with a download link for the original. An index.html you
include is always respected and never overwritten.
Interactive apps
A REPL, shell, or terminal UI that stays alive only while a terminal is attached is classified as
interactive. Each browser terminal session spawns its own fresh process, so there is no shared
long-lived process to idle or wake.
Orphan frontend components
Drop a single frontend component (say, a lone Counter.jsx) with no package.json or index.html
of its own, and Jollop scaffolds a minimal host app around it, builds it, and serves the result
as a static site. This only kicks in for a genuine orphan: any manifest or HTML entry point means
you already have a real app, and it is deployed as-is.
GUI apps
Drop a desktop app and Jollop runs it headless (a virtual display plus a VNC server) and streams the screen to your browser. It scales to zero when no one is watching and wakes on the next viewer.
Scale to zero
Web, tcp, and gui apps with no traffic for the idle window have their process stopped and their registration kept. The next request wakes them synchronously by replaying the frozen plan. Workers are exempt, staying alive is their whole job. Static, job, and docs apps have no long-lived process.