#!/bin/bash set -e # check alembic alembic upgrade head alembic check if [ ! -f ".streamlit/secrets.toml" ]; then echo "Creating organization and API token..." org_output=$(python scripts/create_organization.py Skyvern-Open-Source) api_token=$(echo "$org_output" | awk '/token=/{gsub(/.*token='\''|'\''.*/, ""); print}') # Update the secrets-open-source.toml file echo -e "[skyvern]\nconfigs = [\n {\"env\" = \"local\", \"host\" = \"http://skyvern:8000/api/v1\", \"orgs\" = [{name=\"Skyvern\", cred=\"$api_token\"}]}\n]" > .streamlit/secrets.toml echo ".streamlit/secrets.toml file updated with organization details." fi _kill_xvfb_on_term() { kill -TERM $xvfb } # Setup a trap to catch SIGTERM and relay it to child processes trap _kill_xvfb_on_term TERM echo "Starting Xvfb..." # delete the lock file if any rm -f /tmp/.X99-lock # Set display environment variable export DISPLAY=:99 # Start Xvfb Xvfb :99 -screen 0 1920x1080x16 & xvfb=$! DISPLAY=:99 xterm 2>/dev/null & python run_streaming.py > /dev/null & # Run the command and pass in all three arguments python -m skyvern.forge