Add an app
An app (app) is a project deployed on one of your servers - Django, FastAPI or Flask, optionally with a static frontend in front. Each app gets its own domain, nginx config, Python environment and deploy key.
Requirements
- A provisioned server (status: Ready)
- A Git repository - connect GitHub for the full experience
Steps
1. Connect GitHub (once)
The first time, connect your GitHub account under Settings → Source control (or inline from the app-create form). Pyvolt installs a GitHub App scoped to the repositories you choose - grant individual repos or everything, and change it any time via Manage access next to the repo picker.
2. Create the app
From your server's Apps tab, click Add app.
Choose a domain:
- Pyvolt subdomain -
yourapp.preview.pyvolt.com. Instant, no DNS setup, SSL included. - Custom domain - your own domain (point DNS at your server's IP; see Custom domains).
Pick the repository: account → repo → branch. Can't see a repo? The GitHub App may not have access to it - click Manage access, grant it, then Refresh.
3. Review what detection found
The moment you pick a repo, Pyvolt reads a handful of files from it (manage.py, pyproject.toml, lockfiles, package.json, framework configs…) and fills the form in. A summary tells you exactly what it saw:
Framework: django
Found: manage.py, django, gunicorn, celery, whitenoise
Package manager: uv
Protocol: WSGI
Settings module: config.settings
Every prefilled value is yours to edit:
- Start command - how your app serves, e.g.
gunicorn config.wsgi:application --workers 2 --bind $SOCK. Derived from the servers actually declared in your dependencies (gunicorn, uvicorn, hypercorn, waitress…). - Release command - steps that run on every deploy after dependencies install, before the app restarts. Django repos get
collectstatic+migrateprefilled. Nothing runs behind your back - if it's not in this box, it doesn't happen. - Frontend directory / passthrough - for SPA or static-export frontends (Next.js
output: 'export', Vite, CRA): the build output directory nginx serves at the root, and the URL prefixes (like/api) that pass through to your app. - Environment variables - add rows now or later from the Env tab. Connect a Postgres database from the same form and
DATABASE_URLis filled in for you.
4. Create
On create, Pyvolt:
- Creates the app directory on your server (
/home/pyvolt/sites/yourdomain/) - Writes the nginx config and reloads nginx
- Pushes a deploy key to the GitHub repo automatically - no manual key copying
Your domain serves a placeholder page until the first deploy.
From the CLI
Apps can also be created headlessly with the Pyvolt CLI - handy for scripts, CI and coding agents:
pyvolt apps create --server myserver --domain myapp --repo you/yourrepo
The same autodiscovery runs and flags override what it found; --dry-run
shows the resolved plan without creating anything. GitHub still needs
connecting once in the dashboard (step 1 above). Full flag list on the
command reference.
Next step
View this page as markdown - handy as context for your AI tools. Full index at /llms.txt.