This ZIP contains two runnable projects:
VishGuardAndroid/(Android app)vishguard-laptop/(Python laptop backend)
Use this README only. It has complete step-by-step setup and run commands.
VishGuard detects a vishing incident in progress by combining:
- Laptop call intelligence (mic -> speech-to-text -> scam risk analysis)
- Phone security events (OTP/reset/login notifications)
The Android app correlates these and raises an on-phone warning with incident timeline.
- macOS (Apple Silicon)
- Android phone (USB debugging enabled)
- Android Studio installed
- Python 3.9+
cd vishguard-laptop
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-mic.txtUse a valid HF token with inference access.
export HF_TOKEN="YOUR_HF_TOKEN"
export HUGGINGFACE_HUB_TOKEN="$HF_TOKEN"
export HF_MODEL="meta-llama/Meta-Llama-3-8B-Instruct"- Open Android Studio
- Open folder:
VishGuardAndroid - Let Gradle sync
- Connect Android phone by USB
- Press Run (green triangle) to install app
Open 2 terminal windows.
cd vishguard-laptop
source .venv/bin/activate
export HF_TOKEN="YOUR_HF_TOKEN"
export HUGGINGFACE_HUB_TOKEN="$HF_TOKEN"
export HF_MODEL="meta-llama/Meta-Llama-3-8B-Instruct"
python3 main.py --serve --host 0.0.0.0 --port 8000export ANDROID_SDK_ROOT="$HOME/Library/Android/sdk"
export PATH="$ANDROID_SDK_ROOT/platform-tools:$PATH"
adb devices
adb reverse --remove-all
adb reverse tcp:8000 tcp:8000
adb reverse --listExpected: tcp:8000 tcp:8000
Open VishGuard app:
- Tap Automation Settings
- Set laptop URL to exactly:
http://127.0.0.1:8000
- Save settings
- Ensure Auto-sync ON
- Tap Enable Notification Access and grant access to VishGuard
In Terminal B:
curl -X POST "http://127.0.0.1:8000/analyze_text" \
-H "Content-Type: application/json" \
--data-raw '{"text":"This is bank fraud team. Share OTP now. Account will be blocked.","mode":"llm_hf"}'Expected: JSON response with scam risk fields.
- Keep Terminal A server running.
- Keep USB cable connected.
- Start/answer call on Android phone and enable speaker.
- Place phone near laptop mic.
- Speak scam-like script for ~45-75 seconds.
- During call, send an OTP-style message to the same phone.
- End call.
- Show app dashboard + timeline:
CALL_INTELeventsOTP_EVENT/ reset/login events if triggered- escalated ATO risk and warning UI
URL saved incorrectly. It must include protocol:
http://127.0.0.1:8000
Then rerun:
adb reverse --remove-all
adb reverse tcp:8000 tcp:8000Run:
export ANDROID_SDK_ROOT="$HOME/Library/Android/sdk"
export PATH="$ANDROID_SDK_ROOT/platform-tools:$PATH"- Check laptop backend is running
- Keep phone near laptop mic
- Make sure call is on speaker
- Verify app Auto-sync is ON
VishGuardAndroid/Android source (Kotlin/Compose)vishguard-laptop/Python API + transcription + analysis