Create an app
- Open Python apps
Sidebar → Advanced → Python apps, or
/then “python”. - Name it
The name becomes the subdomain:
api→api.yourdomain.com. Letters, numbers, underscores. - Click Create app
We provision a Python 3.12 container with a starter FastAPI service, route the subdomain to it with SSL, and it appears in the table with a live link.
- Open the URL
The starter app answers immediately — your endpoint skeleton is already serving HTTPS.

Deploy your own code
- Open the file manager
Your app lives under
pyapps/<name>/—main.pyis the FastAPI entry point. - Edit main.py (or upload your project)
Add routes the normal FastAPI way. Drag-and-drop extra modules alongside it; add dependencies to the requirements file in the same folder.
- Restart the app from the Python apps page
Restarting reinstalls requirements and reloads the service. Your table row shows the status.
Apps talk to your MariaDB at 127.0.0.1:3306 using any database and user you created on the Databases page — a real API over your site's data, in the same pod.
Remove an app
- Click delete on the app's row
Confirm the prompt.
- Everything unwinds
The container, its subdomain routing and its files are removed. Your websites and databases are untouched.
Which frameworks work?
Anything ASGI — FastAPI is what the starter ships, Starlette and Quart run fine too. WSGI apps (Flask/Django) can run via an ASGI adapter.
How many apps can I run?
It's per-plan — the counter at the top of the page shows used/allowed.
Where are the logs?
Runtime output is captured per app; the table shows status, and a failing app surfaces its error. Deeper debugging: open a ticket and we'll pull the container log.