Skip to content

Cloud Deploy

Airupt can run on any cloud VM or PaaS. First-class configs are provided for Fly.io and Railway.

Fly.io

The repo includes a fly.toml. Deploy in three commands:

bash
# Install flyctl if needed
curl -L https://fly.io/install.sh | sh

# Authenticate
fly auth login

# Launch (first time)
fly launch

# Or deploy updates
fly deploy

Set secrets

bash
fly secrets set AIRUPT_LLM_API_KEY=sk-...
fly secrets set AIRUPT_CHANNELS_TELEGRAM_BOT_TOKEN=123456:ABC...

Persistent storage

Airupt needs a volume for memory and cost data:

bash
fly volumes create airupt_data --size 1

The fly.toml already mounts this at /home/airupt/.airupt.

fly.toml overview

toml
[build]

[env]
  PORT = "8080"

[mounts]
  source = "airupt_data"
  destination = "/home/airupt/.airupt"

[[services]]
  internal_port = 8080
  protocol = "tcp"

No public HTTP port is required unless you enable the WhatsApp webhook.


Railway

The repo includes a railway.json. Deploy via the Railway dashboard or CLI:

bash
npm i -g @railway/cli
railway login
railway up

Environment variables

Set these in the Railway dashboard under your service's Variables tab:

VariableValue
AIRUPT_LLM_API_KEYYour OpenAI/Anthropic key
AIRUPT_CHANNELS_TELEGRAM_BOT_TOKENTelegram bot token
AIRUPT_LLM_PROVIDERopenai or anthropic
AIRUPT_LLM_MODELe.g. gpt-4o

Persistent volume

Add a Railway volume mounted at /home/airupt/.airupt to persist memory and costs across deploys.


Generic VPS

On any Ubuntu/Debian server:

bash
# Install Node 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs

# Install Airupt
npm i -g airupt

# Configure
airupt setup

# Run with pm2
npm i -g pm2
pm2 start "airupt start" --name airupt
pm2 save
pm2 startup

Released under the MIT License.