#!/usr/bin/env bash # Run after completing `modal token new` in the browser. set -euo pipefail cd "$(dirname "$0")/.." source .venv/bin/activate MODAL_TOML="$HOME/.modal.toml" ENV_FILE=".env" if [[ ! -f "$MODAL_TOML" ]]; then echo "Modal not authenticated yet. Run: modal token new" echo "Then open the URL in your browser and approve." exit 1 fi TOKEN_ID=$(grep -E 'token_id' "$MODAL_TOML" | head -1 | sed -E 's/.*"([^"]+)".*/\1/') TOKEN_SECRET=$(grep -E 'token_secret' "$MODAL_TOML" | head -1 | sed -E 's/.*"([^"]+)".*/\1/') if [[ -z "$TOKEN_ID" || -z "$TOKEN_SECRET" ]]; then echo "Could not read tokens from $MODAL_TOML" exit 1 fi echo "Deploying to Modal..." DEPLOY_OUTPUT=$(modal deploy modal_app.py 2>&1) echo "$DEPLOY_OUTPUT" INFERENCE_URL=$(echo "$DEPLOY_OUTPUT" | grep -oE 'https://[^ ]+--aether-garden-inference\.modal\.run' | head -1) if [[ -z "$INFERENCE_URL" ]]; then INFERENCE_URL=$(echo "$DEPLOY_OUTPUT" | grep -oE 'https://[^ ]+\.modal\.run' | head -1) fi # Update .env (preserve HF_* lines) touch "$ENV_FILE" grep -v '^MODAL_TOKEN_ID=' "$ENV_FILE" | grep -v '^MODAL_TOKEN_SECRET=' | grep -v '^MODAL_INFERENCE_URL=' | grep -v '^USE_MOCK_AI=' > "$ENV_FILE.tmp" || true mv "$ENV_FILE.tmp" "$ENV_FILE" { echo "MODAL_TOKEN_ID=$TOKEN_ID" echo "MODAL_TOKEN_SECRET=$TOKEN_SECRET" echo "MODAL_INFERENCE_URL=$INFERENCE_URL" echo "USE_MOCK_AI=false" } >> "$ENV_FILE" echo "" echo "Done. .env updated with Modal credentials." echo "Inference URL: ${INFERENCE_URL:-}"