Skip to content

Installation

Get from zero to running automation in 10 minutes. No API keys required for core features.

RequirementVersionHow to Check
Python3.10+python3 --version
ADBAny recentadb --version
Android phone5.0+ (API 21+)Physical device or emulator
USB cableData-capableNot a charge-only cable

Ubuntu/Debian:

Terminal window
sudo apt install android-tools-adb

macOS:

Terminal window
brew install android-platform-tools

Windows:

Download from Android SDK Platform-Tools, extract, and add the folder to your PATH.

Verify ADB is installed:

Terminal window
adb --version
# Android Debug Bridge version 1.0.41
Terminal window
git clone https://github.com/[org]/adb-marketing-agent.git
cd adb-marketing-agent
# Install in development mode (recommended)
pip install -e .
# Or install dependencies manually
pip install flask requests pyyaml openai

The -e flag installs in editable mode so changes to the source take effect immediately.

Create a .env file by copying the example:

Terminal window
cp .env.example .env

No API keys are needed for core automation. The following work out of the box:

  • ADB device control (tap, swipe, type, screenshots)
  • Skill system (load, run, create skills)
  • Macro recording and replay
  • Dashboard (all 14 tabs)
  • Job scheduler
  • App Explorer

Add these to .env only if you need AI-powered features:

Terminal window
# Content generation (KIE AI video generation)
KIE_AI_API_KEY=your_key_here
# LLM content planner + Skill Creator (OpenRouter)
OPENROUTER_API_KEY=your_key_here
# Video generation (OpenAI Sora)
OPENAI_API_KEY=your_key_here
# Image hosting for video generation
FREEIMAGE_API_KEY=your_key_here
# Analytics (optional)
POSTHOG_API_KEY=your_key_here

The Skill Creator supports 4 LLM backends. Configure whichever you want to use:

BackendConfigDefault Model
OpenRouterOPENROUTER_API_KEY env varanthropic/claude-sonnet-4
Claude APIANTHROPIC_API_KEY env varclaude-sonnet-4-20250514
OllamaAuto-detect at localhost:11434llama3
Claude Codeclaude CLI installedsonnet
Terminal window
# Start the server
python3 run.py

Open http://localhost:5055 in your browser. You should see the dashboard with 14 tabs.

Terminal window
# Quick Python verification
python3 -c "
from marketing_system.bots.common.adb import Device
from marketing_system.skills.tiktok import load
s = load()
print(f'Skill: {s.name} | Actions: {len(s.list_actions())} | Workflows: {len(s.list_workflows())}')
"
# Expected: Skill: tiktok | Actions: 13 | Workflows: 9

If you have multiple phones connected, set the default device:

Terminal window
# List connected devices
adb devices
# Set default via environment variable
export DEVICE=L9AIB7603188953
# Or pass per-command
DEVICE=RZCX125RE5L python3 -m pytest tests/ -v
adb-marketing-agent/
run.py # Entry point (port 5055)
pyproject.toml # Package config
.env # Your API keys (gitignored)
marketing_system/ # All application code
server.py # Flask API (132+ routes)
db.py # SQLite ORM (20+ tables)
bots/common/adb.py # Device class
skills/ # Skill packages
agent/ # LLM content planner
static/dashboard.html # SPA dashboard
data/ # Runtime data
marketing.db # SQLite database
tests/ # Pytest suite (19 files)
config/ # Credentials (gitignored)