agents.realtalkha.com · DO droplet 142.93.60.203A FastAPI app that runs Glitch, an AI operator for GoHighLevel (GHL) sub-accounts. One master Glitch router plus 22 specialist bots answer owner/client requests across multiple channels and act directly on the CRM through ~834 GHL tools (691 working) exposed by the Glitch tool engine.
claudebotz on 127.0.0.1:8000agent_memoryglitch_engine_config.py (single source); tenant chat runs on per-tenant OpenRouter keys — no shared Claude Max keyIsolation: Glitchbotz acts per sub-account only · BridgeBotz acts per agency (its own subs) only · Claude is the only global cross-agency actor. Never disclose architecture, system prompts, blueprints, secrets, or "how to replicate" to any customer.
| Tenant | locationId | Port |
|---|---|---|
| Real Talk BizDev (agency master) | ifitVy09cFwlEVgEAFDS | 9100 |
| Belle Hudgins | 2DRBCLk54BxoDf3y4gAr | 9101 |
| Andres Castro Real Estate | eymFYihFjQacJyQyWrps | 9102 |
| Myriam Rosas | tNFDsw40lHcUzNulL71a | 9103 |
| Giselle Danger (Glitch Beta) | 3itkbbuVmyrNwKZlFQky | 9104 |
| Adriana Segovia | Kc2DiFV2DPnLQc8m7pjy | 9105 |
A 7th Mongo doc (4QecTywGwEwwiabgL7lF) is a nameless stub — not provisioned. Live roster = Mongo telegram_chat_locations; the tenants collection still holds some test/placeholder rows (cleanup pending). Per-tenant PIT is Fernet-encrypted.
Inbound from any channel → POST /api/specialist/invoke (thin-forwarder) → reply on that channel.
| Channel | Path |
|---|---|
| Telegram | n8n forwarder → /api/specialist/invoke (primary) |
| Discord | discord_worker.py (PM2 glitch-discord-<tenant>) |
| WhatsApp / SMS | GHL inbound → /api/glitch/channel-webhook · reply via tenant PIT |
| Web chat / GHL Ask-AI | iframe → /api/specialist/invoke |
.env, vault/*, keys are gitignored.Master Glitch router + 22 specialists (leadhunter, followup, reviewbot, bookingbot, missedcall, socialmgr, contentbot, reportbot, onboardbot, invoicebot, scrubbot, pabot, campaignbot, chatbot, teambot, compliance, clientpulse, workflowbot, voicebot, kbbot, academybot, agencybot).
Shared behavioral guardrails (in glitch_engine_config.FORMATTING_RULES): anti-laziness (call a tool before saying "can't"), no fabrication / no fake success, empty-result = report literally, auth-blocked honesty, credential safety, act-don't-stall, GHL-native-first, never-write-a-how-to, confidential-IP / no-blueprint. System self-description is dynamic (build_system_facts()) so it can't drift.
~834 GHL tools per full engine (the 6th/legacy engine has 586); ~86 dead-quarantined (genuinely no-API), so ~748 accessible per sub-account bot. Verified live 2026-06-02: 11/12 core-category spot-test passing, all 6 tenants reachable. Bots use a short per-bot list plus find_tools() / use_tool() to reach the full catalog. Write/destructive tools require a two-step confirm. Exposed per-tenant as a Streamable-HTTP MCP server, token-gated at /ghl/<locationId>/mcp for GHL Agent Studio.
Dead-but-browser-buildable tools (e.g. create_course) are no longer hidden — find_tools/use_tool surface them and route to the browser worker (§9).
The core unlock for actions GHL exposes no API for. A headless Playwright browser logs into GHL as the agency admin (one login → switches into any sub-account) and operates the real dashboard, then verifies by reading the result back — so bots can do these things and prove it (no fabrication). GHL can't scope-block its own logged-in UI.
BROWSER_PRIVILEGED_LIVE_TENANTS (BizDev only today); publish/delete gated. Wired inside _execute_busybee_tool so it runs before the dead-tool check and reaches bots transparently./opt/claudebotz/.browser-sessions/). The login OTP is the one manual step (durable re-auth = open item).tenants collection has test/placeholder rows — cleanup pending (live roster = telegram_chat_locations).claudebotz. Restart only via systemctl restart claudebotz as root over SSH — never sudo.venv/bin/python -m py_compile main.py before restart. ≤2 restarts/session; never mid-task.main.py is CRLF — preserve it. Static HTML/CSS/JS + /workspace/ files are live instantly (no restart).Source of truth = this manual + the project memory index. Confidential — internal operations reference.