-
Notifications
You must be signed in to change notification settings - Fork 0
Getting Started
John Williams edited this page Mar 9, 2026
·
1 revision
This guide gets you from zero to a fully deployed ARGUS instance on Cloudflare in under 30 minutes.
- Cloudflare account (free tier works for everything)
- Node.js 20+ — nodejs.org
- Wrangler CLI — Cloudflare's deployment tool
- API keys for detection services (all have free tiers — see below)
npm install -g wrangler
wrangler login
# Opens browser for Cloudflare OAuth — authenticate with your accountgit clone https://github.com/itallstartedwithaidea/argus
cd argus
npm installRun these commands in order. Copy the IDs they return — you'll need them in Step 4.
# D1 Database
wrangler d1 create argus-db
# → Returns: database_id = "xxxx-xxxx-xxxx"
# R2 Buckets (evidence storage)
wrangler r2 bucket create argus-evidence-vault
wrangler r2 bucket create argus-screenshots
# KV Namespaces (caching + rate limiting)
wrangler kv:namespace create SCORE_CACHE
# → Returns: id = "xxxx"
wrangler kv:namespace create RATE_LIMITER
# → Returns: id = "xxxx"
wrangler kv:namespace create SESSION
# → Returns: id = "xxxx"
# Queues (async processing)
wrangler queues create argus-analysis-queue
wrangler queues create argus-notify-queueOpen wrangler.toml and replace all REPLACE_WITH_YOUR_* placeholders with the IDs from Step 3:
[[d1_databases]]
binding = "DB"
database_name = "argus-db"
database_id = "YOUR_D1_ID_HERE" # ← paste here
[[kv_namespaces]]
binding = "SCORE_CACHE"
id = "YOUR_KV_ID_HERE" # ← paste herewrangler d1 execute argus-db --file=./schema/d1_schema.sql
# Should show: "Executed N statements"All of these have free tiers sufficient for development and moderate production use.
| Service | Purpose | Get Key |
|---|---|---|
| Hive AI | GAN image detection | thehive.ai — free tier |
| GPTZero | AI text detection | gptzero.me — free tier |
| Google Search Console | Auto-indexing on publish | search.google.com/search-console |
| Resend (or CF Email) | Email notifications | resend.com — 100 emails/day free |
wrangler secret put ADMIN_SECRET_KEY
# Enter a strong password — this protects your admin dashboard
wrangler secret put HIVE_API_KEY
# Paste your Hive AI key
wrangler secret put GPTZERO_API_KEY
# Paste your GPTZero key
wrangler secret put SEARCH_CONSOLE_KEY
# Paste your Google Search Console service account key
wrangler secret put EMAIL_API_KEY
# Paste your Resend or email API keywrangler deploy workers/api/index.js
# → Deploys to: argus.[your-subdomain].workers.devTo deploy to your custom subdomain (argus.googleadsagent.ai), add your domain to Cloudflare first, then the routes in wrangler.toml will activate automatically.
cd pages
npm install
npm run build
cd ..
wrangler pages deploy pages/.next --project-name argus
# → Deploys to: argus.pages.dev (then connect your custom domain)- Open Chrome → address bar →
chrome://extensions - Enable Developer mode (toggle top right)
- Click Load unpacked
- Select the
extension/folder from this repo - The ARGUS eye icon appears in your toolbar
The extension is now active on LinkedIn, Reddit, X, and Instagram.
# Test the API
curl https://argus.googleadsagent.ai/api/score?platform=linkedin&handle=test
# Should return:
# { "status": "not_analyzed", "message": "Queued for analysis" }Visit https://argus.googleadsagent.ai/admin and log in with your ADMIN_SECRET_KEY.
For local development without deploying:
# Create .dev.vars from example
cp .dev.vars.example .dev.vars
# Fill in your API keys
# Run Worker locally (with local D1 + KV)
wrangler dev workers/api/index.js --local
# Run Pages locally (separate terminal)
cd pages && npm run dev
# → http://localhost:3000| Variable | Required | Description |
|---|---|---|
ADMIN_SECRET_KEY |
✅ | Protects /admin dashboard |
HIVE_API_KEY |
✅ | GAN image detection |
GPTZERO_API_KEY |
✅ | AI text detection |
SEARCH_CONSOLE_KEY |
Optional | Auto-triggers Google indexing on publish |
EMAIL_API_KEY |
Optional | Sends admin and dispute notifications |
APP_URL |
✅ | Set in wrangler.toml vars |
ADMIN_EMAIL |
✅ | Set in wrangler.toml vars |
FLAG_THRESHOLD |
✅ | Default: 40 (profiles below this go to queue) |
- Architecture Overview — understand the full system
- Admin Dashboard — how to use your approval queue
- Browser Extension — customizing badge behavior
- API Reference — integrate ARGUS into other tools