Running Streamlit on Google Colab with pyngrok

# Install required packages
!pip install streamlit pyngrok
# Create a simple Streamlit app
%%writefile app.py
import streamlit as st
import pandas as pd
import numpy as np

st.title('Streamlit on Google Colab')
st.write('This app is running on Colab with pyngrok!')

# Add some interactive elements
number = st.slider('Select a number', 0, 100, 50)
st.write(f'You selected: {number}')

# Create sample data
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=['a', 'b', 'c']
)

st.line_chart(chart_data)
# Set up ngrok authentication (optional but recommended)
# Get your free auth token from: https://dashboard.ngrok.com/get-started/your-authtoken
from pyngrok import ngrok

# Uncomment and add your token:
# ngrok.set_auth_token('YOUR_NGROK_AUTH_TOKEN')
# Run Streamlit with pyngrok
from pyngrok import ngrok
import subprocess
import threading

def run_streamlit():
    subprocess.run(['streamlit', 'run', 'app.py', '--server.port', '8501'])

# Start Streamlit in background thread
thread = threading.Thread(target=run_streamlit)
thread.start()

# Create ngrok tunnel
public_url = ngrok.connect(8501)
print(f'\n✅ Streamlit app is running at: {public_url}')
print('Click the link above to access your app!')
# Alternative: One-liner approach
!streamlit run app.py &>/dev/null&

from pyngrok import ngrok
public_url = ngrok.connect(8501)
print(f'Streamlit URL: {public_url}')
# To kill the tunnel when done
ngrok.kill()