Runtimes and limits
What runs here, and the ceilings that apply.
Languages
ffmpeg is available for voice and media work. Anything else your program needs must come from your manifest.
Memory
An app that exceeds its memory ceiling is stopped and restarted rather than being allowed to affect anyone else. These are the figures we measure in practice:
So Solo comfortably fits anything that is not driving a browser — five times over. Headless browsers are the exception and want Builder or Fleet.
Disk covers your code, its dependencies and anything the app writes while running. A Discord app with its packages is around 100 MB, so the allowances are generous on purpose — you should only meet the limit if something is writing files it never cleans up.
CPU is a share of one core. It is deliberately modest: enough for any app, not enough to make mining worth attempting.
What this is for
Long-lived processes: gateway connections, queue consumers, pollers, schedulers. Things that need to be awake rather than woken up.
It is not a static host — a folder of HTML with no process behind it belongs somewhere else. An app that serves HTTP is fine: bind process.env.PORT and you get a public URL, and your own domain if you want one. See Inbound HTTP.