App Comparison · 4 addict.best apps
← media.addict.best

Full app comparison

Side-by-side comparison of the four addict.best apps — what each does, how it wires functions into a real action, where credentials live, and which one fits your task. Toggle Arabic/English with the button top-right.

4 apps bilingual EN/AR mechanism of action how functions fire 12+ dimensions decision matrix upgrade + pro-tips 2026-09

01The four apps at a glance

Each app serves a different layer of the social-automation stack — pick by what you need: template, daemon, live runner, or session healer.

Single-account template

social.addict.best

https://social.addict.best
Honest single-account autopilot. Publish your own posts on a schedule, draft replies with human approval, pull your own metrics. browser-use + patchright + Playwright. No multi-account routing, no follow/like automation, no ban-evasion.
Scope: 1 account you own How its functions fire ↓ Upgrade + unique tips ↓ Open social.addict.best →
Media agents stack (daemons)

omni.addict.best

https://manager.addict.best/omni/
OMNI social-agent runtime. Localhost daemons: launcher (:8080), auto-responder (:8081), keep-alive, auto-login, master_fix. Cookie vault on Contabo. 4-platform session/heal plane (X · IG · TT · FB). The URL omni.addict.best will land here.
Scope: session + daemon plane How its functions fire ↓ Upgrade + unique tips ↓ Open OMNI hub →
Template library

media.addict.best/automation

https://media.addict.best/automation/
8 ready-to-paste AI-agent template boxes (4 full merged + 4 compact). Methodology + pro tips + copyable code blocks + full template per box. Three-state verify, EXECUTE gate, verification_engine.py. Pure templates — no live runner.
Scope: copy-paste prompts How its functions fire ↓ Upgrade + unique tips ↓ Open automation templates →
Live hybrid runner

manager.addict.best/console

https://manager.addict.best/console
Interactive control plane. Configure platform/account/action → run job live on Contabo → three-state result + log. Server-side credentials, cookie vault verification, auto-login heal. Auto-runs verification_engine.py after every job.
Scope: live job runner How its functions fire ↓ Upgrade + unique tips ↓ Open Run Console →

02Purpose — why each exists

Dimension social.addict.best omni (manager/omni) media/automation manager/console
Core promise Honest single-account publish + replies + analytics. Keep 4-platform sessions alive + auto-heal + run media agents. Give AI agents ready-to-paste expert templates. Run hybrid social jobs live and verify them.
What it IS Python template you clone + edit + run locally. Daemon fleet (launcher, responder, keep-alive, heal). Static HTML library of copy-paste expert templates. Interactive web UI → backend API → Contabo job runner.
What it is NOT Not multi-account. Not a growth ramp. Not ban-evasion. Not CAPTCHA bypass. Not a publish/schedule UI. Not a template lib. Not a one-click runner. Not a runner. Not a daemon. Not interactive — pure docs/prompts. Not a template. Not a session healer (uses OMNI for that). Not a long-running daemon.
Honesty contract Explicit: site-agnostic; you check ToS; AI-assisted content is labeled. passive_only=true; no CAPTCHA bypass; browser-only; no unofficial APIs. Three-state verdict; never claim done without final_gate PASS. done_allowed only when verification PASS; EXECUTE keyword required.

03Architecture & tech stack

Layer social.addict.best omni (manager/omni) media/automation manager/console
Stack Python · browser-use · patchright · Playwright Python · Playwright · FastAPI/Flask dashboards · SQLite telemetry Static HTML · no backend FastAPI on :18795 · Caddy reverse-proxy · HTML/JS UI
Backend port None (CLI: run.py) :8080 launcher · :8081 responder · CLI rest None :18795 (Console API)
Where it runs Your Mac/Linux laptop Contabo VPS (with Mac hub for cookie export) Served from media.addict.best (read-only) Contabo VPS · 1 account → 1 IP (Mode C)
Credentials storage Local encrypted session_store.py (Fernet) Contabo cookie vault /root/dashboard-social-media/*.js + credentials.json None (templates only) Server-side only; never in browser; X-Console-Token auth
Cookie expiry handling session_store (Fernet at rest) master_fix.py — KEEP expires=-1; quarantine on failure Templates describe the algorithm Reads OMNI vault; auto-login heal via OMNI
Verification engine Simple rate_limiter + analytics CSV Cookie health matrix (PASS/partial/missing) Embeds verification_engine.py protocol (3-state) Auto-runs verification_engine.py + final_gate after every job
Anti-block layer patchright stealth + browser-use fallback + human approval Bezier smart_click · Poisson delays · Mode C sticky IP · warmup Templates include full anti-block playbook Inherits OMNI stealth + verification gate

04Mechanism of action — how each app brings functions

A function is not a button. Publish, heal, grow, keep-alive, verify — the same intent is wired through a different actuator in each app: a CLI verb, a daemon loop, a copy-paste contract, or an authenticated HTTP job. This section is the wiring, step by step.

Function to bring social.addict.best omni (manager/omni) media/automation manager/console
Publish a post CLI: python run.py once → publisher.py (deterministic Playwright steps, else browser-use Agent on the SAME session). Does not publish itself. Keeps the cookie vault alive so Console can publish. Copy template → AI agent waits for EXECUTE → curl action=publisher|pipeline. POST /console/api/run {action:publisher|pipeline} + X-Console-Token → Contabo worker → Bezier click → final_gate.
Keep session alive No daemon. Live overlay only: /agent/engine keep_alive. Template path: re-run login when the Fernet store dies. This IS the function. Cron 02/10/18 → inject vault cookies → Poisson scroll → write cookies back → telemetry. Template describes the 45-minute silent refresh. Does not run it. Delegates to OMNI. Per-job inject only — not a 24/7 keep-alive.
Heal expired cookies Headful python run.py login. Human types password + 2FA. Fernet rewrite. No auto-heal. local_auto_login.py + master_fix.py (KEEP expires=-1). 2FA waits for a human. Quarantine on checkpoint. Template curl action=full_heal. Agent must poll done_allowed=true. action=full_heal|auto_login|verify. Reads OMNI vault; must not let stale /opt/manager-console/cookies/ shadow the live dir.
Grow / like / follow Refused on purpose. Publisher prompt forbids follow/like of other people. Overgrowth suite + auto-responder :8081. RateGovernor + PhasedGrowth caps. Template action=growth|pipeline with account_age_days. EXECUTE required. POST action=growth. Worker applies PhasedGrowth; <21 days = tight cap; days 0–6 often zero auto posts.
Verify the result Implicit: print count + analytics CSV. No three-state final_gate. Cookie health matrix: PASS / partial / missing per platform. Telemetry to social_engine.db. Protocol pasted into the agent: PASS/FAIL/INCONCLUSIVE. INCONCLUSIVE must not be promoted to PASS. Auto-runs verification_engine.py + final_gate after every job. done_allowed only when PASS.
What actually clicks the page Your laptop Chromium: patchright stealth, Playwright steps, browser-use fallback. Often page.click in the template path. VPS Chromium: Bezier smart_click, never raw page.click. Headless Poisson scroll for keep-alive. Nothing. Text only. The agent you paste into is the clicker — usually via Console. Contabo Chromium inherited from OMNI: Bezier smart_click + Mode C sticky IP (1 account → 1 IP forever).
Path C · local CLI + optional live /agent/

social.addict.best

Functions arrive as five CLI verbs on your laptop. YAML is the config, JSON is the queue, Fernet is the identity, Chromium is the hand. A second, optional wiring exists on the live site: static HTML calls /agent/engine on FastAPI :8900, which mounts the shared /opt/social-engine/.

loginonceserve repliesanalytics /agent keep_alive/agent check_session /agent engage/agent post
How this app brings a function

You type python run.py <verb>. run.py is a five-way switch. It loads config/settings.yaml, opens one Patchright Chromium through core/browser_session.py, then calls exactly one core module. There is no web button and no Contabo worker on the template path. The live /agent/ path is a different process: the browser page fetches JSON from the engine API; the engine reads the Contabo cookie vault and runs keep_alive / check_session / engage / post.

  1. 01
    Load intent from files, not from a UI config/settings.yaml holds target_url, rate_limits, optional publishing.steps, and the Fernet storage path. content/queue.json is the post list with scheduled_time. content/post_urls.json is the analytics target list. If a file is missing, the verb fails before a browser opens.
  2. 02
    login — human writes the identity once Headful Chromium opens account.target_url. You log in by hand (password + 2FA). Press Enter in the terminal. session_store.py writes storage_state encrypted with Fernet. Later verbs inject this state before navigate. There is no auto-login daemon.
  3. 03
    Verb dispatch in run.py once → scheduler.run_once. serve → scheduler.run_forever (poll queue every few minutes). replies → replier.check_and_draft_replies. analytics → analytics.pull_analytics. Each path shares the same browser_session so cookies stay one identity.
  4. 04
    rate_limiter — pacing, not a growth ramp Before a post leaves the queue, rate_limiter.py checks your own-account ceilings from settings.yaml. This is politeness for one account you own, not PhasedGrowth for a fleet.
  5. 05
    publisher.py — two paths, same session If publishing.steps is filled (goto / click / fill / upload / wait), Playwright drives them — fast, free, no LLM. If steps are empty or a step throws, the SAME browser_session is handed to a browser-use Agent with a plain-language task: publish this one caption, attach this file, do not follow or like anyone else. Adaptive path costs LLM tokens; deterministic path does not.
  6. 06
    replies — draft file, human is the send button The replier scrapes new comments/DMs and writes replies/pending.json. Nothing is sent unless auto_send: true (off by default). That is the honesty contract: the function stops at a file you can edit.
  7. 07
    analytics — read-only pull to CSV Opens your own URLs from post_urls.json, reads visible metrics, writes analytics/metrics.csv. No mutation of other people's content.
  8. 08
    Live overlay — /agent/engine is a different wiring https://social.addict.best is static HTML. It calls https://social.addict.best/agent/engine/{health,sessions,cookie-health,telemetry,login}. FastAPI :8900 mounts /opt/social-engine/ (db.py, cookie_manager.py, auto_login.py). Actions here are keep_alive, check_session, engage, post — in-memory jobs, no final_gate, no X-Console-Token. Complementary to Console, not a clone of the local template.
When the function fails

No heal loop. Session dead → run login again. CAPTCHA / checkpoint → stop; a human solves it. Deterministic steps throw → one fallback to browser-use on the same session, then report. The template will not resume after a platform flag. That refusal is a feature.

Session / daemon plane · Contabo

omni (manager.addict.best/omni)

Functions arrive as processes that stay up, not as one-shot jobs. OMNI does not publish. It keeps four-platform identities alive so Console, /agent/, and keep-alive cron can act without hitting a login wall.

launcher :8080auto-responder :8081 keep-alive cronlocal_auto_login.py master_fix.pycookie-health quarantine
How this app brings a function

systemd and cron start the functions. launcher binds :8080 (dashboard). auto-responder binds :8081 and loops comments. keep-alive is a cron (0 2,10,18) that injects /root/dashboard-social-media/*.js into headless Chromium, Poisson-scrolls, writes cookies back, and logs telemetry to /opt/social-engine/social_engine.db. local_auto_login.py is the heal function. master_fix.py is the cookie-hygiene function (KEEP expires=-1 so session cookies are not treated as expired). Other apps bring their own functions by reading this vault — they do not replace OMNI.

  1. 01
    Identity is born on the Mac hub, not on the VPS Headful local_auto_login.py on the Mac (2FA needs a human). Cookies are sanitized (SameSite Titlecase), encrypted to sessions/{account}.enc, chmod 600, plaintext deleted, then scp'd to the live vault /root/dashboard-social-media/*.js. One account is pinned to one VPS IP forever (Mode C).
  2. 02
    master_fix.py — the cookie must not commit suicide expires=-1 means session cookie, not expired. A naive purge that drops expires<=0 kills the login. master_fix keeps those, Titlecases SameSite, and quarantines files that fail JSON parse. This is the function that made the vault stop logging everyone out.
  3. 03
    Daemons bind ports — the dashboard is not the worker :8080 launcher is a status UI. :8081 auto-responder is a loop with a daily cap; on checkpoint it stops and raises NEED_HUMAN. Functions live in the processes, not in the HTML.
  4. 04
    keep-alive — inject before navigate, save after success Cron fires three times a day. For each vault file: parse JSON → inject cookies into a stealth context → open home/feed (not a cold profile URL without referrer) → Poisson delays + light scroll → if still logged in, write cookies back. IG/TT also refresh local_storage. Failed parse or login wall → increment error_streak, do not tight-loop.
  5. 05
    Health matrix classifies, it does not guess PASS = parse OK + critical cookies alive (auth_token/ct0, sessionid, …) + home-feed proof after inject. partial = 1–3 expired cookies but session cookies still work. missing = no file mapped. corrupt = JSON broken. expired = critical cookie dead. INCONCLUSIVE if the check itself could not run.
  6. 06
    Heal path — auto-login with a human ceiling local_auto_login.py: up to 3 tries with backoff (5s, 15s). Selectors live in agent_memory.json so a DOM change is a config edit, not a rewrite. 2FA → record requires_2fa and wait. CAPTCHA → record captcha_blocked and stop (passive_only). Success → save cookies, snapshot to DB, chmod 600.
  7. 07
    Quarantine — a bad file must not be retried into a ban checkpoint / account_locked / shadowban canary empty → move the jar aside, L3 halt 48h, no ban-loop. Incident map: 301→L1 reduce rate, 308→L2 re-export cookies, 310→L3 halt. Console and /agent/ must read the live vault, not a stale copy under /opt/manager-console/cookies/.
  8. 08
    refresh_silently every 45m on long engage (IG/TT + local_storage) Instagram and TikTok sessions die if you only keep HTTP cookies. The encrypted blob must also hold local_storage. During a long engage loop, refresh_silently() rewrites both before the 45-minute wall. Skip this and keep-alive looks healthy while the next publish hits a login wall.
What other apps consume

The vault + health matrix + auto-login are the functions OMNI exports. Console imports them on every job. /agent/ imports them for keep_alive/post. Automation templates tell an AI agent to call those imports — they do not reimplement Chromium.

Static contracts · no runner

media.addict.best/automation

Functions arrive as text. This page never opens Chromium. It ships eight copy-paste contracts (4 full merged + 4 compact) so an external AI agent knows which HTTP verb to fire, which gates to obey, and that EXECUTE is the ignition key.

full session/healfull publish full growthfull targeting compact ×4EXECUTE gate verification_engine protocol
How this app brings a function

You copy a box. The clipboard holds four pillars: methodology, pro tips, agent-ready code, full template. The code is usually curl to https://manager.addict.best/console/api/run with action=full_heal|publisher|pipeline|growth and header X-Console-Token. The agent must not call that URL until the user types EXECUTE. After the POST, the agent polls /console/api/jobs/{id} until status=done AND done_allowed=true. The page itself has no backend — Caddy serves HTML.

  1. 01
    Pick the box that already is the task Full 1/4 session = cookie heal + vault + quarantine. Full 2/4 publish = PrePublish + virality + first_60_minutes. Full 3/4 growth = RateGovernor + NSRE. Full 4/4 targeting = niche / lead filters. Compact boxes are the same verbs with less prose. One copy = complete task — do not stitch two boxes into a new pipeline.
  2. 02
    Paste into Claude / Grok / Cursor as the system of record The agent now holds the contract: boot before browser, Mode C sticky IP, Bezier only, three-state verdict, no unofficial APIs, no CAPTCHA bypass. If the agent invents a fifth path, it has left the box.
  3. 03
    EXECUTE is the function ignition — dry-run is the default Without the keyword EXECUTE, the agent must walk every gate and report what would have happened (degrees, blockers, media path) and stop. This is how a static page prevents accidental publish: by making the live call a speech act you type on purpose.
  4. 04
    The code block is the actuator pointer, not the actuator Typical body: {action, platform, label, account_age_days}. The function that actually clicks lives on Contabo inside Console. Some boxes also show Omni CLI (python3 local_auto_login.py --platform X --label Y) for heal when Console is the wrong tool.
  5. 05
    Poll until done_allowed — words are not proof The template forbids the agent from saying done because the curl returned 200. It must read the job JSON, require done_allowed=true, and keep evidence (job_start.json, screenshots, URLs). INCONCLUSIVE blocks done exactly like FAIL.
  6. 06
    verification_engine.py is embedded as law, not as a library import on this host The static site cannot run Python. It pastes the protocol so whichever machine the agent uses (usually Contabo via Console) must call verify_file / final_gate. Anti-mutation rules are in the prompt: do not weaken checks, do not hardcode PASS.
When the function fails

This app cannot fail at runtime because it does not run. Failure modes are operator-side: agent skips EXECUTE and still posts; agent treats INCONCLUSIVE as PASS; agent calls unofficial APIs; agent invents selectors instead of using the box. The page's only defense is the contract you pasted.

Live job runner · FastAPI :18795

manager.addict.best/console

Functions arrive as authenticated HTTP jobs. The browser UI is a form; the real switch is POST /console/api/run. Contabo is the worker. OMNI is the identity. verification_engine.py is the only mouth allowed to say done.

verifyauto_login full_healpipeline growthpublisher contentops
How this app brings a function

UI or agent sends JSON {action, platform, label, …} with header X-Console-Token. Caddy reverse-proxies to FastAPI api_server.py on :18795. The server writes /opt/manager-console/jobs/{id}.json and starts a worker. Credentials stay in server-side credentials.json — never in the browser. The worker injects cookies, heals via OMNI if stale, runs the named action, then auto-runs verification_engine.py + final_gate. The UI polls GET /jobs/{id}. done_allowed flips true only on PASS.

  1. 01
    Auth gate — no token, no function X-Console-Token is required. 401 → UI falls back to a stale embedded inventory and looks offline. Save the token in the Console UI (localStorage) or pass it on every curl. /accounts can be made public because it never returns passwords; run endpoints must not.
  2. 02
    Job file is the source of truth, not the chat Unlike /agent/ (in-memory, lost on restart), Console persists every job under /opt/manager-console/jobs/. Status, logs, evidence paths, done_allowed live there. If the process restarts, the function's record remains.
  3. 03
    Identity load — never let the stale copy win Worker reads credentials.json (passwords stay server-side) then scans cookie dirs. LIVE vault is /root/dashboard-social-media/*.js. /opt/manager-console/cookies/ is a copy that can be weeks stale and shadow the live files if it has priority. Correct wiring: symlink or delete the copy so MANAGER_COOKIE_DIRS falls through to the dashboard dir. Inject cookies BEFORE first navigate.
  4. 04
    Stale session → call OMNI, do not reimplement login If inject lands on a login wall, the worker runs action=auto_login / full_heal via local_auto_login.py. 2FA still needs a human. Console is not a session healer; it is a caller of the healer.
  5. 05
    Dispatch the named action verify = cookie matrix + optional home-feed proof. auto_login / full_heal = OMNI heal pipeline. publisher = one post. growth = capped likes/follows/comments. content / ops = supporting jobs. pipeline = the full Hybrid 4.7 chain below, not a synonym for publisher.
  6. 06
    pipeline — the long function, in order boot/self-check (secrets, IP risk, ethics) → ServerRouter (this account → this VPS IP) → warm_up (30–90s feed scroll + 2 in-niche likes) → PrePublishScorer (compliance / authenticity / operations / algorithm; any failed door rejects) → ViralityScorer ≥ 60 (capped at 100) → MediaPrepEngine 9:16 pad/blur-fill via ffmpeg → Bezier smart_click publish (absolute media paths + file-header check) → first_60_minutes early replies → Phoenix morph once on content error then halt. Skipping a step is a bug, not a shortcut.
  7. 07
    final_gate — the function is not done until PASS After every job the worker runs verification_engine.py. Three states only. INCONCLUSIVE (timeout, empty page, unmeasurable) is not PASS. done_allowed stays false. The UI and any coding agent must read that flag; a green HTTP 200 is not a verdict.
When the function fails

Login wall mid-job → FAIL + quarantine, do not retry into a ban. Stale cookie copy shadowing live vault → heal looks random until the copy is unlinked. Missing token → 401, functions never start. Per-job model: this is not a high-throughput fleet runner; queue one account at a time on one IP.

Proof the function actually ran

Read GET /console/api/jobs/{id} on a second call. Require status=done, done_allowed=true, and an evidence path (URL, screenshot, log). Then, if it was a publish, open the live post. The job file plus the live URL are the proof; the agent's paragraph is not.

Full function inventory — every verb this stack names

Nothing below is implied. If a verb is not in this table it is not a first-class function of these four apps.

Surface Every named function Where it is described
social CLI login · once · serve · replies · analytics §04 social steps 01–07
social /agent/ health · sessions · cookie-health · telemetry · login · keep_alive · check_session · engage · post §04 social step 08
omni daemons launcher :8080 · auto-responder :8081 · keep-alive cron · local_auto_login · master_fix · cookie-health · quarantine · refresh_silently 45m §04 omni steps 01–08
automation boxes Full+compact × session/heal · publish · growth · targeting (8 boxes). EXECUTE gate. verification protocol. §04 automation steps 01–06
console actions verify · auto_login · full_heal · pipeline · growth · publisher · content · ops §04 console steps 01–07
pipeline internals boot · ServerRouter · warm_up · PrePublishScorer · ViralityScorer · MediaPrepEngine · smart_click · first_60_minutes · Phoenix §04 console step 06
hybrid CLI (via Console/Omni) boot · publish · shadowban · grow · scrape · engage · comment · respond · group · syndicate · pulse · smart_dm · mine_tags · research · research_publish · media-hunt §05 matrix + §09 upgrades
gates / laws three-state · final_gate · EXECUTE · Mode C · PhasedGrowth · NSRE · CircuitBreaker · SameSite Titlecase · expires=-1 · Bezier · Poisson · Rescue Window · SelfHealingLocator · CLEAR ≥65 §04 + §05 + §09

One picture — how a function name becomes a click

Intent (publish | heal | grow | keep-alive | verify)
        │
        ├── social template:  run.py verb  →  files (yaml/json)  →  laptop Chromium  →  print/CSV
        ├── social live:      HTML fetch   →  /agent/engine :8900  →  social-engine  →  vault Chromium
        ├── omni:             cron/systemd →  vault inject         →  VPS Chromium   →  cookies + DB
        ├── automation:       copy box     →  AI agent + EXECUTE   →  points at Console/Omni (no click here)
        └── console:          POST + token →  jobs/{id}.json       →  Contabo worker →  OMNI identity → Bezier click → final_gate

05Capability matrix

What each app can and cannot do — at a glance.

Capability social omni media/automation manager/console
Multi-account routing No Yes (4 platforms) N/A (template) Yes (Mode C)
Publish posts Yes Via Console Template Yes
Draft replies (human-approved) Yes (default) Auto-responder Template Auto (cautious)
Follow / like automation No (intentional) Overgrowth suite Template Yes
Cookie health matrix Basic Yes N/A Yes (reads OMNI)
Auto-login + 2FA prompt Manual (headful) local_auto_login.py N/A Via OMNI
Keep-alive daemon (45m) No Yes N/A Via OMNI
Analytics pull Yes (CSV) Limited N/A Per-job log
AI agent templates (copy-paste) No No Yes (8 boxes) No
Live job runner CLI only Daemons No Yes (web UI)
EXECUTE keyword gate No No Yes Yes
Three-state verdict Implicit Yes Yes Yes (strict)
final_gate enforcement No No Protocol Yes (auto-run)
Bezier smart_click (not centroid) Often page.click Yes In contract Inherited
Mode C — 1 account = 1 IP forever Laptop IP Yes In contract Yes
PhasedGrowth (age windows 0–21d) Own-account pacing only Yes In contract Yes (needs age)
Virality ≥ 60 before live publish No No In contract pipeline
first_60_minutes after publish No Responder In contract pipeline
Shadowban canary (real chrono tab) No Yes → L3 48h In contract Via OMNI
NSRE skip parasitic_risk N/A (no grow) Yes In contract growth
SelfHealingLocator + CircuitBreaker browser-use fallback Yes In contract 3-fail abort
smart_dm / mine_tags / syndicate / pulse No Suite pieces Targeting box ops / content
research / media-hunt / CLEAR ≥65 No No Opt-in --factual If --factual
Job persistence + proof CSV / pending.json social_engine.db Agent must save jobs/{id}.json
Platforms X · IG · TT · FB · LI · YT Site-agnostic 1 URL 4 + LI/YT heal All in contract Per-job platform
Cost to run Free Free (VPS) Free Free (VPS)

06Decision matrix — which app for what

👤

I have ONE account and want to schedule my own posts

You own the account, you write the content, you want a queue + scheduler + draft replies with human approval. No follow/like automation needed.

→ social.addict.best
🔧

I need to keep 4-platform sessions alive

Multi-account across X · IG · TT · FB. You want cookie health monitoring, auto-login heal, keep-alive cycles, master_fix, and a dashboard to manage it all.

→ omni (manager.addict.best/omni)
📋

I'm coding an AI agent and want expert templates

You use Claude / Grok / Cursor / etc. and want ready-to-paste expert task contracts (session heal, publish, growth, targeting) with methodology + code blocks + anti-block + verification protocol.

→ media.addict.best/automation
⚡

I want to run a hybrid job LIVE right now

You have a specific account + platform + action (publish/grow/etc.) and you want a web UI to configure, run on Contabo, and get PASS/FAIL/INCONCLUSIVE with auto-verification.

→ manager.addict.best/console
🧠

I want to UNDERSTAND the whole hybrid system

You're learning the architecture, want the merged master spec, all 28 scattered boxes, the 9 unified boxes, and the full Part A-D documentation.

→ media.addict.best (main hub)
🤝

All four together

Production stack: media hub (docs) → automation templates (AI agent prompts) → Console (live runner) → OMNI (session/daemon plane). Social is standalone for single-account honest use.

→ All four (each its layer)

07How they interact

The four apps form layers. Here's the production call graph. For the step-by-step wiring of each function, see section 04.

Production call graph (Contabo VPS):

  📱 User (you)
        │
        ▼
  🌐 media.addict.best (docs hub)
        │
        ▼ (copy-paste expert templates)
  🤖 AI Agent (Claude / Grok / Cursor)
        │
        ▼ (calls Console API with X-Console-Token)
  🎛 manager.addict.best/console (live runner :18795)
        │
        ▼ (reads vault; heal if stale)
  🔑 omni (manager/omni · daemons :8080 :8081)
        │
        ▼ (Bezier smart_click · stealth Chromium)
   Platforms: X · IG · TT · FB · LI · YT

Side note: social.addict.best is a STANDALONE honest single-account template — it does NOT plug into this stack. Use it when you operate one account you personally own, on your own Mac, with full ToS compliance.

08Pros & cons per app

social.addict.best

  • Honest scope — no ban-evasion, no fake growth, no CAPTCHA bypass
  • Small codebase (~17 files), easy to read and audit
  • 3-layer stealth: browser-use on patchright on Playwright
  • Human approval step for replies (default safe)
  • Single account only — no fleet/multi-brand
  • No follow/like automation — pure publishing
  • No built-in cookie health matrix or heal daemons

omni (manager.addict.best/omni)

  • Full media-agent fleet with UI dashboards
  • Cookie health matrix: PASS/partial/missing per platform
  • master_fix.py — KEEP expires=-1 (the famous bug fix)
  • Auto-login with 2FA prompt; full heal pipeline
  • Keep-alive daemon (headless Poisson scroll refresh)
  • Localhost daemons — you must run them on a VPS
  • Not a publish/schedule UI itself (uses Console for that)
  • Cookie vault management is manual (corrupt JSON, dedupe)

media.addict.best/automation

  • 8 expert task contracts — zero fluff
  • Each box: Methodology + Pro tips + Code blocks + Full template
  • Embeds verification_engine.py protocol (3-state, anti-mutation)
  • EXECUTE keyword gate — prevents accidental publish
  • Pure HTML — works in any AI agent context
  • Static — does not run anything itself
  • Requires an external AI agent (Claude/Grok/Cursor) to act
  • Less granular than the 28-box main hub (intentional)

manager.addict.best/console

  • Interactive web UI — no CLI needed for ops
  • Credentials stay server-side (never in browser)
  • Auto-runs verification_engine.py + final_gate after every job
  • done_allowed only when verification PASS (no fake done)
  • API mode for coding agents (X-Console-Token)
  • Requires Contabo VPS access + token setup
  • Per-job model — not designed for high-throughput fleets
  • Depends on OMNI for cookie heal (not standalone)

09Upgrade path — unique, hard-to-copy power

Generic social tools copy each other's buttons (schedule, inbox, analytics). These four apps stay unique by shipping laws, not chrome: a function that cannot lie, an identity that cannot roam IPs, a template that cannot fire without EXECUTE, a cookie that is not allowed to commit suicide. The upgrades below deepen those laws. They do not add a fifth clone of Buffer.

The moat — six things a clone cannot screenshot

1. Refusal as a product

social.addict.best ships 'no follow/like, no ban-evasion, no CAPTCHA bypass' as features. Clones add more growth knobs. Uniqueness is the missing knob.

2. A function that cannot say done

done_allowed stays false until final_gate PASS. INCONCLUSIVE is not a soft yes. Most 'AI social' tools treat HTTP 200 as success. That lie is easy to copy. The refusal to lie is not.

3. Identity plane ≠ action plane

OMNI keeps cookies alive. Console spends them. Automation describes the spend. social stays off the fleet. Clones glue login+publish in one process and then wonder why accounts link.

4. Cookie physics, not cookie storage

KEEP expires=-1. SameSite Titlecase. Inject before navigate. Save after success. IG/TT local_storage in the blob. This is un-copied because it is a scar from production, not a landing-page bullet.

5. EXECUTE is a speech act

A static HTML page that cannot run still prevents accidental publish: the live call is a word the operator must type. Clones hide a red button. This stack makes ignition linguistic.

6. One account, one IP, forever

Mode C is an operational promise, not a proxy pool. ServerRouter pins the graph. A SaaS that rotates residential IPs is the opposite product — and the one every clone ships.

social.addict.best — upgrade the honest CLI without turning it into a growth bot

  1. NOWReplace page.click with Bezier smart_click in publisher.py deterministic path. The adaptive browser-use path already looks human; the 'fast' path currently clicks centroids — the cheapest bot tell. Same session, new mouse. This is the one-line upgrade that stops the honest app from looking like a script.
  2. NOWThree-state after once/serve/replies/analytics. Print PASS only with a URL or CSV row count; FAIL on login wall; INCONCLUSIVE on timeout. Do not import the full verification_engine if it is heavy — a 20-line CheckResult is enough. Uniqueness: the honest app stops lying in the terminal too.
  3. NEXTHuman-approval inbox, not only pending.json. A local HTML page that lists drafts, shows the original comment, and writes send/skip. Still no auto_send default. Unique vs ManyChat: the human is the send button, and the file stays auditable.
  4. NEXTStep library per site, still site-agnostic core. Keep publisher.py free of hardcoded Instagram selectors. Ship optional publishing.steps packs the operator pastes after they check ToS. Unique: the app never pretends it has official API rights.
  5. MOATLabel AI-assisted content in the caption by default. A one-line disclosure toggle in settings.yaml. No clone will copy this because it hurts vanity metrics. That is exactly why it is a moat for a ToS-aware product.

omni — make the identity plane a product, not a folder of .js files

  1. NOWKill the stale-copy shadow. Symlink /opt/manager-console/cookies/ → live vault. This is the known production scar. Until it is automatic on boot, heal looks random. Unique ops: one writer (/root/dashboard-social-media), many readers, zero copies.
  2. NOWPer-account jitter on keep-alive. Stop the 02/10/18 fingerprint. Cron at the same minute for 24 accounts is a graph. Offset each label by a hash of the account name ± Poisson 0–40 min. Same 3×/day budget, no choir.
  3. NEXTEncrypt the VPS vault at rest (.enc, chmod 600), not only the Mac export. Plaintext .js on disk is the cloneable part. EncryptedCookieManager on Contabo + decrypt only into the browser context makes the vault uninteresting to steal and unique to operate.
  4. NEXTCookie-change detection → automatic snapshot to social_engine.db. After every keep-alive, hash critical cookies (auth_token, ct0, sessionid). On change: snapshot, telemetry, do not wait for a human audit. Unique: the identity plane has a pulse, not a folder mtime.
  5. MOATHealth matrix as an API product: PASS/partial/missing/corrupt/expired + home-feed proof image. Other dashboards show a green dot. Ship the proof frame. Console, /agent/, and automation then consume one schema. Un-copied because the schema includes INCONCLUSIVE — clones hate a third color.

media/automation — make contracts un-mutable and bilingual, still static

  1. NOWHash each box. Print sha256 in the card. Agent must echo the hash before EXECUTE. Clones paste prompts that agents silently rewrite. A hash turns the template into a law: if the agent mutates the contract, the hash mismatches and live calls are forbidden. This is unique even among 'prompt libraries'.
  2. NOWJSON schema next to curl. action enum locked. The agent should not invent action=boost. Enum: verify|auto_login|full_heal|pipeline|growth|publisher|content|ops. Unique: the static page defines the Console type system.
  3. NEXTNinth box: identity-fingerprint contract (Mode C + SameSite + expires=-1 + vault writer). Today session/heal is mixed into box 1/4. A dedicated identity box is the un-copied product: nobody else documents cookie physics as a task contract.
  4. NEXTArabic operator column inside every box, not a separate site. Keep English terms (PASS, vault, EXECUTE) with Arabic gloss. Unique for this operator: the contract is usable at 2 a.m. in either language without a translation layer that drifts.
  5. MOATDry-run is the default HTTP: action=verify only, until EXECUTE. Even a careless agent that 'just curls' hits verify, not publisher. The static page cannot sandbox the agent — it can make the safe call the path of least resistance. That is smarter than another warning paragraph.

manager/console — turn the job runner into a verified function bus

  1. NOWSteal SSE from /agent/. Polling is the cloneable part. Keep jobs/{id}.json as source of truth (that persistence is the moat vs /agent/ memory). Stream log lines live. Unique combo: durable job + live tail + done_allowed.
  2. NOWRead account_age_days from social_engine.db, stop asking the form. PhasedGrowth is only a law if age cannot be typed as 99. Unique: the growth function refuses to trust the operator about birthday.
  3. NEXTJob DAG: verify → full_heal? → pipeline as one ticket. Today each action is a separate POST. A parent job that chains gates, stops on INCONCLUSIVE, and never starts publisher on a login wall is the un-copied runner. Idempotency-Key header so retries do not double-post.
  4. NEXTProof gallery in the UI: 25/50/75% frames or home-feed still + live URL. done_allowed=true without a picture is still a paragraph. Unique vs every 'success' toast: the operator sees the post, not a green badge.
  5. MOATShow AlgorithmMapper + Virality breakdown BEFORE the publish click. A score of 61 with the failed door named (hook / CTA / compliance) is a product. Clones show a sparkline after the fact. This stack already has the scorer — surface it and the Console stops being 'a form that runs Python'.

Cross-app function bus — the upgrade that makes all four one product

Today the operator is the router. The unique next step: one intent object, one router, four actuators. Not a fifth app — a bus.

  1. Intent schema — {verb, platform, label, payload, execute:false|true, proof:required}. verb ∈ the inventory in §04. Unknown verb = reject, do not 'helpfully' map it to grow.
  2. HAR-style route — Path C (social CLI) if one owned account on a laptop. Path A (Console+OMNI Mode C) if fleet. Path B (browser-use once) only on locator failure, then stop. The route is a law, not a dropdown.
  3. Single writer DB — Contabo /opt/social-engine/social_engine.db remains the only SQLite writer. Mac and agents read via https://social.addict.best/agent/engine/. That isolation is already unique — do not 'simplify' it with a local agent_monitor.db.
  4. Proof bus — Every actuator returns {status, evidence_url, job_id}. Console already has this shape. social CLI and omni keep-alive should emit the same JSON. Then the comparison page's three-state is not a slogan — it is the wire format.

Pro-tips that upgrade functions immediately (no new app required)

Tip What it upgrades Why it is not a clone feature
§3 SameSite Titlecase before every inject login, keep-alive, Console inject Playwright dies on 'lax'. Clones discover this in production and call it a mystery logout.
§3v2 IG/TT local_storage + refresh_silently 45m engage, keep-alive HTTP cookies alone are a fake session on those two platforms.
§8 Bezier smart_click — centroid = bot every click function page.click is the default of every tutorial. Not using it is the upgrade.
§8b Poisson burst-rest, not random.uniform keep-alive scroll, warm_up Uniform jitter is still a machine. Burst-rest looks like a thumb.
§9 Real shadowban canary on tag chrono tab — never RNG shadowban, grow, publish resume A random 'health score' is what clones sell. Empty chrono is evidence.
§10 PhasedGrowth: days 0–6 = 0 posts, 0 follows, 5 likes growth, pipeline, publisher Playbooks are ceilings, not floors. Unique: the function can return 'too young' as PASS-with-skip.
§12 first_60_minutes is part of publish, not a later job pipeline / publisher Clones 'post and pray'. This stack treats the first hour as the rest of the function.
§12b Phoenix morph once, then halt publisher on content error Retry loops are how accounts burn. One morph is intelligence; two is a ban-loop.
§17 Map ErrorCode 301/308/310 → L1/L2/L3 before any retry every live function Retries without a tier are the clone default. The map is the product.
§0b Search OFF unless --factual / needs_search publish, research, media-hunt Agents love to 'just search'. That mid-publish Google is a fingerprint and a hallucination source. CLEAR ≥65 / ≥2 domains when search is on.
§7 Rescue Window 5m, red border, NEED_HUMAN — no captcha solver auto-login, any checkpoint Bypass automation is the most copied 'feature' and the fastest ban. Uniqueness is waiting.
§7b SelfHealingLocator cache in cache/dom_healing.json click / fill after DOM change Hardcoded selectors are a tutorial. A cache that remembers yesterday's heal is an organism.
§11 Absolute media paths + file-header check + 9:16 pad (never bare scale) MediaPrepEngine / publisher Clones crop the center and call it a Reel. Pad+blur-fill keeps the whole frame. That is an editorial law, not a filter preset.
§1b Block publish when boot_warnings ≠ empty unless --force boot → publish Warnings that do not block are decoration. A function that refuses to start is smart.
One browser / one account / sequential. No sync SQLite on the Playwright loop. all live actuators Parallel tabs on one IP is how fleets get linked. Sequential is slower and un-copied on purpose.

10Final verdict — one-line summary each

Best for

Solo creators

One account you own, full transparency, ToS-aware. The only app that ships with explicit 'no ban-evasion' as a feature.
Best for

Session ops

Multi-brand operators who need 24/7 cookie health, heal pipelines, and a dashboard to manage the session layer of a 4-platform fleet.
Best for

AI agent devs

Engineers using Claude / Grok / Cursor who want battle-tested expert prompts instead of writing agent contracts from scratch.
Best for

Live operators

Anyone who needs to push a job right now and get verified PASS/FAIL — accounting, growth ops, on-call SRE for social.