{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# MoneyPrinterTurbo Setup Guide\n",
        "\n",
        "This notebook will guide you through the process of setting up [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo)."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 1. Clone Repository and Install Dependencies\n",
        "\n",
        "First, we'll clone the repository from GitHub and install all required packages:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "S8Eu-aQarY_B"
      },
      "outputs": [],
      "source": [
        "!git clone https://github.com/harry0703/MoneyPrinterTurbo.git\n",
        "%cd MoneyPrinterTurbo\n",
        "!pip install -q uv pyngrok\n",
        "!uv python install 3.11\n",
        "# Colab 预装了 google-colab / google-genai / google-adk 等包，直接 pip install -r requirements.txt\n",
        "# 会覆盖全局依赖并触发版本冲突。这里使用 uv 为项目创建独立 .venv，避免影响 Colab 运行时。\n",
        "!uv sync --frozen --python 3.11"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 2. Configure ngrok for Remote Access\n",
        "\n",
        "We'll use ngrok to create a secure tunnel to expose our local Streamlit server to the internet.\n",
        "\n",
        "**Important**: You need to get your authentication token from the [ngrok dashboard](https://dashboard.ngrok.com/get-started/your-authtoken) to use this service."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "from pyngrok import ngrok\n",
        "\n",
        "# Terminate any existing ngrok tunnels\n",
        "ngrok.kill()\n",
        "\n",
        "# Set your authentication token\n",
        "# Replace \"your_ngrok_auth_token\" with your actual token\n",
        "ngrok.set_auth_token(\"your_ngrok_auth_token\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 3. Launch Application and Generate Public URL\n",
        "\n",
        "Now we'll start the Streamlit server and create an ngrok tunnel to make it accessible online:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "collapsed": true,
        "id": "oahsIOXmwjl9",
        "outputId": "ee23a96c-af21-4207-deb7-9fab69e0c05e"
      },
      "outputs": [],
      "source": [
        "import subprocess\n",
        "import time\n",
        "\n",
        "print(\"🚀 Starting MoneyPrinterTurbo...\")\n",
        "# 通过 uv run 进入项目 .venv，确保 Streamlit 使用上一步锁定的依赖版本。\n",
        "streamlit_proc = subprocess.Popen([\n",
        "    \"uv\", \"run\", \"streamlit\", \"run\", \"./webui/Main.py\", \"--server.port=8501\", \"--server.address=0.0.0.0\"\n",
        "])\n",
        "\n",
        "# Wait for the server to initialize\n",
        "time.sleep(5)\n",
        "\n",
        "print(\"🌐 Creating ngrok tunnel to expose the MoneyPrinterTurbo...\")\n",
        "public_url = ngrok.connect(8501, bind_tls=True)\n",
        "\n",
        "print(\"✅ Deployment complete! Access your MoneyPrinterTurbo at:\")\n",
        "print(public_url)"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
