hex package manager and rebar, fetches your dependencies with mix deps.get, and starts your application with mix run --no-halt. Whether you are building a Phoenix web application, a GenServer-based bot, or a background processing service, Virtus Cloud handles the runtime setup so you can focus on your application code. This guide covers the complete deployment process.
Prerequisites
Before you deploy, make sure you have the following:- Elixir installed locally. Download it from the official Elixir website.
- A Virtus Cloud account — sign up at virtuscloud.app/login using your email or Discord.
- An active paid plan on your account. Browse plans at virtuscloud.app/plans.
Elixir version
Virtus Cloud provides the following Elixir versions:VERSION value | Elixir version |
|---|---|
recommended | 1.18.4 |
latest | 1.18.4 |
Create your config file
Every Virtus Cloud deployment requires avirtuscloud.app configuration file at the root of your project. Set MAIN to your Elixir entry-point file (typically main.ex or your application’s primary .ex file).
Config File Reference
Learn every available parameter — MAIN, MEMORY, VERSION, DISPLAY_NAME, SUBDOMAIN, START, and more.
virtuscloud.app
Startup behavior
Virtus Cloud determines how to start your application based on whether theSTART field is set in your config file.
- If
STARTis not set, the platform runsmix run --no-haltto start your project and keep the VM alive. - If
STARTis set, the platform executes theSTARTcommand directly, bypassing the default Mix command.
- Installs
hexandrebarlocally for the project environment. - Runs
mix deps.getto fetch all declared dependencies.
Custom start command for Phoenix
For more information on all startup parameters, see the Config File Reference.
Required files
Your ZIP archive must include the following files:| File | Purpose |
|---|---|
virtuscloud.app or virtuscloud.config | Platform configuration |
main.ex (or your primary .ex file) | Application entry point |
mix.exs | Mix project manifest and dependency list |
You do not need to include a
_build/ or deps/ directory. Virtus Cloud installs dependencies fresh via mix deps.get on every deployment.Upload your project
Once your files are ready, package them into a.zip archive and upload using your preferred method.
- CLI upload
- Dashboard upload
Install the CLI
If you do not have the Virtus Cloud CLI installed, run the appropriate command for your system:To update an existing installation:
Authenticate
Retrieve your API key from virtuscloud.app/account by clicking Request API Key, then run:
Troubleshooting
The main file is invalid or corrupted
The main file is invalid or corrupted
This error appears when the file path in your
MAIN parameter does not match a file in your ZIP archive. Check that the filename is correct. If your entry point is inside a lib/ subdirectory, use the relative path — for example, MAIN=lib/my_app.ex.Bad Memory
Bad Memory
The minimum RAM for a bot is 256 MB and for a website or API is 512 MB. The BEAM virtual machine can be memory-intensive for larger applications. Increase the
MEMORY value in your config file if you see out-of-memory errors. See the LACK_OF_RAM troubleshooting guide for details.mix deps.get fails
mix deps.get fails
If dependency fetching fails during startup, check that all packages listed in your
mix.exs file are available on Hex.pm and that version constraints are valid. Run mix deps.get locally to verify your dependency tree resolves correctly before uploading.