📡
CB Stream Poller
Records every live stream event in real time
📊
OF Data Poller
Syncs creator analytics every 2–45 min
🤖
Creator Advisors
Per-creator AI agent on Telegram
🎯
Ops Advisor
Cross-creator intelligence & strategy
🧠
Content Advisor
Scripts and content plans
📅
Scheduling Pipeline
End-to-end content scheduling automation
💰
Invoice Agent
Auto-generates and delivers invoices
Python
OpenClaw
Claude
PostgreSQL
Telegram
OF REST API
CB Events API
Infrastructure
All of This Runs on One Mac Mini
M4 Pro · 14-core CPU / 20-core GPU · 48GB RAM · 1TB SSD · Gigabit Ethernet
Every system on this page: pollers, all 4 OpenClaw gateways, 13 agents, PostgreSQL, Docker sandboxes, and cron briefings. All on a single Mac Mini. No cloud servers, no multi-machine setup.
LLM inference happens on provider servers (Anthropic, OpenAI, Google). The Mac Mini orchestrates it all: polling APIs, storing data, routing Telegram messages, managing 4 OpenClaw gateways across prod, main, creators, and personal.
🌐
4 Gateways
13 agents total
🔌
3 AI Providers
Anthropic · OpenAI · Google
OpenClaw Gateways
prod/
:19789
Sonnet 4.6 · Opus (strategy)
Run Director · Strategy Planner · Caption Writer · Policy Research
main/
:18789
GPT-5.4 · Gemini 3.1 · Sonnet 4.6
Command · Learning Analyst · Nick Advisor · Invoice
creators/
:20789
Sonnet 4.6 · Opus (admin)
Grace Bennett · Maya Hill · ItsKassieLee · EROS Admin
personal/
:17789
Opus 4.6 primary
ATMAN, personal assistant, full coding + browser enabled
AI Providers & Auth
🧠
Anthropic -- Sonnet 4.6 & Opus 4.6
Primary provider across all 4 gateways. API key + Extra Usage bundles only.
API Key
⚡
OpenAI Codex -- GPT-5.4 & GPT-5.4 Mini
Command router (main/) + subagent model (prod/ & main/). OAuth auth.
OAuth
✨
Google Gemini -- Gemini 3.1 Pro Preview
Learning Analyst only (main/). OAuth via kyle@erosops.com.
OAuth
📡
Pollers + PostgreSQL
~500MB RAM
🌐
4 OpenClaw Gateways + 13 Agents
~1GB RAM
💤
Idle most of the day
spikes at briefing time
April 2026 billing change: Anthropic subscription OAuth (Claude Max plan) is no longer supported by OpenClaw. All Anthropic model calls go through API keys and Extra Usage bundles. OpenAI Codex and Google remain OAuth.
Scaling plan: All 3 AI providers handle current agent load easily. To scale beyond ~8 creator agents, add more Anthropic Extra Usage bundles -- no architecture changes needed.
Stream Data Collection
📡
Chaturbate Stream Poller
What It Does
A Python CLI that connects to the Chaturbate Events API and records everything that happens during a creator's live stream in real time: tips, chat, follows, media purchases, viewer flow, room topics. All stored in PostgreSQL with 31 pre-built analytics queries.
How It Works
1
Poller runs continuously
Longpoll connection to eventsapi.chaturbate.com. When a creator goes live, a broadcastStart event arrives and recording begins automatically.
2
Events stream in real time
Tips, chat, follows, media purchases, viewer enter/leave, room topic changes. 12 event types captured per-minute by the in-memory ActiveSessionAccumulator.
3
Stream ends, data gets crunched
broadcastStop triggers session close: total tokens, unique tippers, warmup time, tokens-per-minute, peak engagement. 31 analytics functions compute insights across Revenue, Audience, Broadcast, and Strategy.
4
Export to creator advisors
cb-poller export generates per-creator SQLite databases. 18 tables, all usernames SHA-256 hashed, bind-mounted read-only into each creator's Docker sandbox.
See It In Action
Here's the stream tracker running live during Grace's first tracked stream:
Live Poller Output
Real-time event capture from Grace's first tracked stream
The export command packaging stream data for each girl's advisor
Terminal Export Screenshot
cb-poller export packaging stream data for each girl's advisor
10,771 data points captured from a single 4-hour stream
Event Types
tip
chatMessage
privateMessage
broadcastStart
broadcastStop
follow
unfollow
fanclubJoin
mediaPurchase
userEnter
userLeave
roomSubjectChange
Key Commands
$ cb-poller start
$ cb-poller add-creator NAME
$ cb-poller status
$ cb-poller export -o DIR
$ cb-poller analytics revenue
$ cb-poller context-pack
🛡️
All usernames SHA-256 hashed before export. Raw chat messages, tip messages, and private messages never leave PostgreSQL. Creator-facing SQLite files contain only aggregated analytics.
OF Data Collection
📊
OnlyFans Data Poller
What It Does
A TypeScript CLI that automatically pulls each creator's OnlyFans analytics (earnings, subscribers, tips, messages, posts, and more) and stores them in a local SQLite database. Creator credentials are encrypted so they're never stored in plain text, and one bad account never blocks another.
How It Works
Layer 1 · Vault
Encrypts credentials
Every creator's login is encrypted at rest. Cross-creator credential mixing is prevented at the key level.
Layer 2 · Signing Engine
Signs every request
Computes the auth signature OnlyFans requires on each API call. Self-validates after every rules update.
Layer 3 · Poller
Runs the schedule
Polls each data category on its own interval. Rate limits auto-scale as more accounts are added.
If one creator hits 5 errors → paused 15 min → quiet retry. One bad account never blocks the rest.
What Gets Collected
Ten data categories, each refreshed on its own schedule.
Fast · 2–5 min
📩 DM Conversations 2m
👤 Creator Snapshots 5m
💰 Earnings 5m
💎 Tips 5m
Regular · 10–20 min
💬 Message Stats 10m
📢 Campaigns 20m
📸 Posts 20m
Slow · 45 min–2 hr
👥 Subscribers 45m
⚠️ Disputes 2h
🏦 Payouts 2h
Project Status
Design → Poller Core ✓
CLI Commands
Normalizer · Integration
In Progress
Phase 6: CLI Commands 9 of 15 built
How Data Flows
📡 CB Poller
📊 OF Poller
🔒
Per-Creator SQLite Databases
(read-only)
👩 Creator Agents
🎯 Ops Advisor
Both pollers export to isolated SQLite databases. Creator agents see only their own data. The ops advisor sees everything.
Per-Creator Intelligence
👩
Creator Advisors
What They Are
Each EROS creator gets her own dedicated OpenClaw agent on Telegram: a personal data advisor that sees only her data, answers questions about her business, and delivers daily briefings. Powered by Claude Sonnet 4.6, sandboxed in Docker with read-only data mounts.
Instant
Data-Backed Answers
The First Three
Three creator agents built to prove the architecture. Once validated, new agents deploy instantly. Same protections, same capabilities, zero rebuild.
Grace Bennett
Active
Dual OF pages (FREE + PAID) + CB stream data. The first fully operational creator agent.
grace_bennett.db
cb_grace_bennett.db
Maya Hill
Active
Single FREE page, OF data only. Fully operational. CB stream polling activates as soon as her API token is added to the config.
mayahill.db
Kassie Lee
Active
Dual pages, OF data only. Fully operational. CB stream polling activates as soon as her API token is added to the config.
itskassielee.db
What Creators Can Ask
Example: Grace's Advisor
what should I make this week?
Grace's Advisor
shower POV and lingerie have Grace's highest repurchase rate on OF and consistently pull the biggest tips on stream. lead with shower content this week. it's her most reliable revenue trigger across both platforms.
I have a video call with Marcus tomorrow, what should I know?
Grace's Advisor
Marcus is one of Grace's top CB tippers this month: 55,000 tokens, mostly during lingerie streams. he's bought two customs on OF, both shower-themed. he responds well when she acknowledges him by name on stream. high-value fan, worth the extra attention on the call.
how was last night's stream?
Grace's Advisor
good stream. 13,000 tokens from 51 tippers, 15% above Grace's monthly avg. DreamCatcher99 came back after 11 days quiet and dropped 3,200 during the lingerie set. sloppy dildo BJ goals drove most of the action last night. the content before and after it was quiet by comparison. when a goal is running that's working, stay in it longer.
who are my top CB fans right now?
Grace's Advisor
Grace's top 3 this month: Marcus (55,000 tokens), Tyler (38,200 tokens, heavy tipper during lingerie sets), and DreamCatcher99 (21,500 tokens, consistent every stream). all three are also on her OF. DreamCatcher99 has been quiet lately though, hasn't tipped in 11 days.
* Example conversation with sample data, actual responses are generated from real creator analytics
Automatic Briefings
Each creator's advisor checks in automatically. No action needed.
🔔
Daily Recap Mon-Sat 9 AM ET
Every morning, the advisor texts each creator the highlights -- what sold, what's trending, and anything that needs attention.
📋
Weekly Deep Dive Monday 10 AM ET
Monday morning deep dive -- how the creator's week compared to last week, their best-performing content, and a few ideas for the week ahead.
Data Isolation by Design
✓
Each advisor can only see that creator's data, nobody else's
✓
Only the creator can message their own advisor
✓
Built-in rules that can't be overridden
✗
Other creators' data -- earnings, fans, strategies
✗
Agency business -- pricing, margins, revenue
✗
Internal operations -- tools, playbooks, staffing
If she asks about another creator, agency costs, or how we run things, the advisor simply redirects to her own numbers.
Portfolio Intelligence
🎯
EROS Ops Advisor
What It Does
The big-picture agent. Sees every creator's data side by side so you can compare performance, spot anomalies, and push winning strategies across the board. Every authorized team member gets identical access -- same model, same tools, same data. Message @eros_ops_bot on Telegram and ask it anything.
How It Differs
Creator Agent
Sonnet 4.6
1 creator only
No web access
Talks to creator
sqlite3 only
Ops Agent
Opus 4.6
ALL creators via ATTACH
web_search + web_fetch
Any authorized user
sqlite3 + web
The Ops Advisor in Action
Just text @eros_ops_bot on Telegram. Here's what it looks like:
Stream Performance
how did Grace do on CB this week?
EROS Ops
Grace streamed 4 sessions this week. 18,400 tokens total, up 15% from last week.
Best session: Thursday 10 PM (5,232 tokens, 36 unique tippers).
Weakest: Monday (3,100 tokens, slow warmup at 28 min).
Two of her top tippers haven't shown up in 10 days, worth watching.
Pre-Stream Coaching
Grace is streaming tonight, anything we should tell her?
EROS Ops
Thursday 8-11 PM is her strongest slot. Last 3 sessions averaged 4,800 tokens.
Two top tippers haven't been back in 10 days, if they show up engage early.
Her warmup has been slow (avg 22 min). Suggest an engagement hook in the first 10.
* Example conversations with sample data, actual responses are generated from real stream analytics
Scheduled Briefings
⚡
Daily Ops Pulse 8:30 AM ET
Stream performance recap, per-creator highlights, anything flagged overnight
📋
Weekly Portfolio Review Monday 8 AM ET
Full week-over-week stream breakdown, cross-creator insights, action items
⚠️
Smart Alerts anytime
Fan drift warnings, hot streak detection, revenue dips -- flagged before we'd notice
Data Access
Loads all creator DBs read-only into one session for side-by-side queries.
sqlite3 :memory: "
ATTACH '/data/maya.db' AS maya;
ATTACH '/data/kassie.db' AS kassie;
ATTACH '/data/grace.db' AS grace;
ATTACH '/data/cb_grace.db' AS cb_grace;
"
Content ETL Manager
🦞
Nick 2.0 Content Advisor
How It Works
Nick 2.0 is split into two parts: the OpenClaw agent (structured reasoning, strict JSON output) and the ETL service (side-effects like sending iMessages and storing data). The agent never touches files or sends messages directly.
1
Onboard
ETL service creates an upload link/album and sends it to the creator via iMessage. Nick 2.0 may refine the onboarding message copy.
2
Ingest
New files detected, matched to the correct creator, and logged. Team gets an instant alert on new uploads.
3
Organize
Assets grouped into vault sets by shoot/set. Named sequentially: 073#-Set-White-Lingerie
4
Flyers
Two types per batch: vault info cards (chatter reference) + promo GIF specs (mass message marketing materials)
5
OnlyFans Handoff
Structured manifest with vault set folder paths, upload notes for Infloww, and compliance flags (human review required, no undocumented APIs)
6
Growth Advising
Weekly: Nick 2.0 analyzes performance data, chatter feedback, and trends to suggest 2-4 content types. ETL service sends the reminder to the creator via iMessage.
Steps 3-5 share a single batch_id for referential integrity. All output is strict JSON consumed by the ETL service -- no Markdown, no extra text.
See It In Action
Every vault set gets a name that chatters, uploaders, and Nick 2.0 all understand instantly:
072#-Set-White-Lingerie
72nd set from this creator, photos & videos, white lingerie theme
070#-Script-Grey-Outfit
Chatter conversation script, grey outfit content
073#-Set-Shower-POV
Shower point-of-view, photos & video clips
📋
Format: {N}#-{Type}-{Descriptor}. Numbers are sequential per creator (from next_set_number in the API). Types are Set (photos/videos) or Script (chatter conversations). Descriptor = outfit color, theme, or setting (hyphenated).
What Nick 2.0 Produces
For Chatters
1 per vault set
Vault Info Cards
Everything a chatter needs to sell a set -- content summary, asset counts, price floor, and a direct link to the matching chatter script.
073#-Set-White-Lingerie
READY
White Lingerie
📷 34 pics
🎬 3 vids
📝
Chatter Script
072#-Script-White-Lingerie
For Mass Messages
1 per campaign
Promo GIF Specs
Complete creative brief for each mass message campaign -- background photo ref, headline, offer, and CTA. Handed off to the GIF pipeline ready to render.
Who Gets What
👩🎤
Each Creator
Personal upload link via iMessage, organized vault sets, volume feedback, weekly growth reminders
Upload link
Vault sets
Volume feedback
Growth reminders
🎯
EROS Ops
Vault info cards for chatters, promo GIF specs for mass messages, handoff manifests, upload alerts
Info cards
Promo specs
OF handoffs
Upload alerts
🛡️
Each creator only sees her own uploads. Only EROS Ops sees everything.
Creator Communication
Nick 2.0 generates messages that the ETL service sends via iMessage. Communication style: warm, simple, no jargon -- written for creators with very low tech literacy. Never condescending.
Weekly Growth Reminder (via iMessage)
Nick 2.0 → iMessage
Hey girl! 💕
Your shower content is doing really well right now, would love to see more of that vibe this week if you're feeling it!
Based on what's been working:
• shower POV videos
• lingerie photo sets
• short selfie clips
If you can get 30+ pics and a few clips we can build a full vault set. Upload everything here:
[upload link]
Onboarding (via iMessage)
Nick 2.0 → iMessage
Hey! Welcome to EROS 🎉
I set up a personal upload link just for you. Whenever you have new photos or videos, just:
1. Open this link
2. Upload your files
3. That's it!
We handle everything from there: organizing, naming, packaging. If you ever need help, just text back!
[upload link]
* Nick 2.0 generates the message copy. The ETL service delivers it via iMessage. Nick 2.0 never sends messages directly or asks for passwords/2FA.
Automated Pipeline Steps
📦
Upload Detected automatic
New files auto-ingested, matched to the correct creator, logged in system. Team gets an instant alert.
🗂️
Vault Sets Named ai-powered
Assets grouped by shoot/set, named with sequential vault convention. Thin sets flagged with filler suggestions.
🎨
Flyers Generated ai-powered
Vault info cards (content type in ALL CAPS, pricing, script cross-refs) + promo GIF specs (headline, CTA, duration, creator photo ref)
📋
OF Handoff Packaged automatic
Structured manifest with package name (e.g., Grace_2026-04-01_drop01), vault set folder paths, upload notes, and compliance flags
💬
Weekly Growth Reminder weekly
Nick 2.0 pulls performance data, chatter feedback, and trends via reminder-context endpoint. Generates 2-4 content focus areas + iMessage-ready reminder. ETL service sends it. No revenue numbers, no guarantees.
Content Volume Targets
Filler content matters. Same-style photos keep chatter scripts flowing and posts scheduling without burning premium pieces. Nick 2.0 flags thin sets and suggests creators add more.
Safety & Compliance
🔒
Locked down: no file access, no browser, no shell. Nick 2.0 can only talk to our local ETL service and nothing else.
🛡️
Never asks for passwords or 2FA codes
🚫
Never calls undocumented or private OnlyFans endpoints
✅
Human review required before any OnlyFans upload
📋
All outputs are preview-safe -- no explicit sexual language in any output
Scheduling Pipeline
📅
EROS Scheduling Pipeline
What It Does
Takes each creator's vault, past performance, and fan engagement patterns and builds a full week of content: wall posts, mass messages, PPV drops, and timed drip sequences. Every caption is written in the creator's real voice, pricing is set from actual conversion data, and nothing goes live until the operator signs off.
40-70
Slots/Week
per creator
The 5-Stage Pipeline
1
Opus 4.6 analyzes performance data, generates 7-day personality plan with optimal send types
Strategy Planner (eros_strategy_planner)
2
Kernel allocates 40-70 slots per creator with timing, channels, formats, drip windows
3
Caption writer produces conversion-optimized copy with voice authenticity + retry repair
Caption Writer (eros_caption_writer)
4
Quality gates + compliance tiers + policy research for ambiguous cases
Policy Research (eros_policy_research, escalations only)
5
schedule.csv + needs_review.csv + pricing manifest + KPI dashboard
OpenClaw Agent Architecture
Production Control Plane
Stage-gate decisions: PROCEED, RETRY, ESCALATE, FAIL
7-day personality + volume budget assembly
LLM caption generation with multi-pass repair
Compliance research with adversarial challenger
Operator Gateway
Primary operator interface via Telegram/Discord
Cross-run analysis, pattern learning, provider promotion
Quality Gates
🔒
Copy Gate
Uniqueness check vs 30-day history (weighted similarity)
🎭
Voice Conformity
Tone fit, authenticity scoring per creator profile
🧩
Structural Diversity
Prevent repetitive HOOK|BODY|CTA patterns
⚖️
Compliance Tiers
Flags anything from "banned outright" through "needs review" down to "fine to send"
Automation Levels
- Strategy generation
- Slot planning
- Caption generation
- Pricing computation
- Drip coordination
- Quality gate failures
- Compliance escalations
- needs_review.csv
- Provider promotions
- Learning memos
Mission Control
$ eros mc board
$ eros mc pending
$ eros mc health
$ eros mc costs RUN
$ eros mc digest
What Makes It Smart
Death Spiral
Detection
Built-in
Voice &
Pricing
Per-Creator
1
Operator Sign-off Required
Architecture
Input Layer
OF Performance
CB Stream Data
Vault Inventory
Fan Behavior
↓
Processing Layer
Kernel
Python / SQLite
Slot Allocation
Pricing
Timing
Drip Windows
↕
Intelligence Layer
OpenClaw Control Plane
run_director
strategy_planner
caption_writer
policy_research
↓
Output Layer
schedule.csv
needs_review.csv
Pricing Manifest
KPI Dashboard
🔐
Template-only. No automated posting.
All processing runs locally. No external network dependencies in runtime flow. Control plane uses local loopback only.
Invoice Agent
💰
EROS Invoice Agent
What It Does
Transforms raw creator earnings from OnlyFans and Chaturbate into professional PDF invoices, delivers them via Telegram, confirms payments, and chases open balances with automated reminders.
The Pipeline
1
Discover & parse CSVs from inbox/ - Infloww (OF) and JB's Daily Sales (CB)
2
Link accounts to creator registry, consolidate multi-account creators, check idempotency
3
Calculate totals - OF: 50% agency split, CB: sum Model Owes - Decimal precision
4
Generate PDFs, persist to SQLite with audit trail, archive source CSVs
5
Validate 5-point checklist, send PDF + summary via Telegram DM, log to delivery_log
6
Process payment claims from creators, send tiered reminders, escalate at 21+ days
Key Features
🔀
Multi-Platform
OnlyFans (Infloww) + Chaturbate in one run
🎯
Decimal Precision
Zero floating-point errors, ROUND_HALF_UP
🔒
Idempotent
No duplicate invoices for same (creator, period)
👀
Dry-Run Mode
Preview invoices without writing PDFs or DB
📋
Audit Trail
Complete mutation history with timestamps
📴
Fully Offline
No API calls, no network dependency
🛡️
Zero Misdelivery
5-point validation before every Telegram send
⏰
Tiered Reminders
4-tier escalation from gentle nudge to EROS Admin alert
👤
Creator Isolation
Each creator sees only their own invoices
CLI Commands
$ eros-invoice generate \
--period-start 2026-03-01 \
--period-end 2026-03-15
$ eros-invoice status
$ eros-invoice list --status sent
$ eros-invoice confirm \
EROS-INV-20260315-MAYA-HILL \
--method venmo
$ eros-notify deliver \
--period-start 2026-03-01 \
--period-end 2026-03-15 --dry-run
$ eros-notify note-payment \
--invoice-id EROS-INV-20260315-MAYA-HILL \
--method venmo \
--creator-telegram-id 123456789 \
--message "Sent payment via Venmo"
$ eros-notify scan-open
$ eros-notify health-check
Invoice Lifecycle
DRAFT
Pipeline
eros-invoice generate
Invoice created from CSV
SENT
AI Agent
5-point validation passes, PDF sent via Telegram DM
OVERDUE
Tier 1-3 automated reminders via Telegram
ESCALATED
Tier 4: EROS admins notified directly
NOTED
AI Agent
Creator claims payment in Telegram DM
PAID
EROS Admin
manual step
Admin verifies payment received, then runs eros-invoice confirm to close the invoice.
Notification System
Before Every Delivery
5 checks
1
Creator is active in registry
2
Creator has started the bot
3
PDF file exists and is readable
4
Invoice not already delivered
All 5 must pass, any failure blocks delivery
When a Creator Claims Payment
💬
Creator messages bot
Sends claim via Telegram
→
🔍
Agent matches invoice
Finds open invoice, logs to notes
→
🔔
Status → NOTED
EROS Admin alerted to verify
Overdue Reminder Escalation
3+
days overdue
Gentle nudge sent to creator
Tier 1
7+
days overdue
Friendly follow-up sent to creator
Tier 2
14+
days overdue
Firm but kind reminder sent to creator
Tier 3
21+
days overdue
Escalate to EROS Admin only, no more creator messages
Tier 4
Only SENT invoices trigger reminders, NOTED invoices are excluded
The AI Agent
Available Tools
exec
read
write
message
cron
memory
Cron Schedules
Daily 10:00 AM MT
Reminder scan
Every 6 hours
Delivery retry check
Monday 9:00 AM MT
Weekly summary to EROS Admin
Key Constraints
✕
Agent NEVER marks invoices as PAID
✕
Creator isolation enforced per Telegram ID
✕
No corporate jargon, messages sound human
Architecture
Generation Layer
Reads sales CSVs, computes splits, renders PDF invoices
↓
Shared SQLite DB + PDFs
Notification Layer
Delivers invoices via Telegram, logs who got what
↓
JSON CLI Output
AI Agent Layer (OpenClaw)
Chats with creators, chases payments, escalates to EROS Admin
↓
Shared Data Layer
Both systems share one invoice database. The AI agent only flips an invoice's status in two cases: draft → sent (when it goes out) and sent → noted (when a creator says they paid). EROS Admin is the only one who marks anything as PAID.
EROS
Built for the EROS OPS team
OpenClaw
Claude Opus 4.6
Python
TypeScript
SQLite
PostgreSQL