moperator — bash — 80x24
         @@@                            @@@
        @@  @@                        @@  #
         @@   @@                    @@   @@
           @#   @@                @@   #@
             @=   @@            @@   =@
              @@.   @@        @@   -@@
                @@    @@    @@    @@
                  @@    @@@@    @@
                    @@   @    @@
                      @@    @@
                  @@@@    %#  @@@@
                @%...*  =@@.  =...@@
              @@=*#....@@  @@....#++@@
          @@@-.:=.*#=.@@    @%.=*+.==.=@@@
    @@*++=..+.+:*..:@@       @@@::.#:---..==++@@
 %:+..=..+--+.*+=*.@@          @%::#++.*-.+..=..=:#@
 @@@@@+..#+.@@.#...%@          @%...*.@@.*#..+@@@@@
 @=.....-..%..:*=*.#@          @#.+=*:..%..:.....=@
  @@@@%.*=:*.@.=.@*@@          @@*@:=.@.*:=+.@@@@@
    @..*.@.+.=-.@                  @.=..*.%.*..@
     @@@..=.@@@@@                  @@@@@.=..@@@
       @@@@@                            @@@@@
┌┬┐┌─┐┌─┐┬─┐┌─┐┌┬┐┌─┐┬─┐
││││ │├─┘├┤ ├┬┘├─┤ │ │ │├┬┘
┴ ┴└─┘┴  └─┘┴└─┴ ┴ ┴ └─┘┴└─

Marketing Operations AI Agent

Open Source · github.com/joe-reitz/oss-moperator

$ cat README.md

mOperator is an open-source AI agent that connects your marketing operations tools through a single Slack interface. Ask questions in plain English — mOperator figures out which tools to call, runs the queries, and responds in your thread.

Built on Next.js, Vercel AI SDK, and Vercel AI Gateway. Deploy to Vercel in minutes. Add your own integrations with a few prompts or lines of code.

SalesforceHubSpotMarketoProject ManagementGitHubSlack+ Your Own

$ ./quickstart.sh

# Clone the repo

git clone https://github.com/joe-reitz/oss-moperator.git

# Install dependencies

cd oss-moperator && npm install

# Copy environment template

cp .env.example .env.local

# Add your API keys to .env.local (see setup guides below)

open .env.local

# Start the dev server

npm run dev

# Or test via the CLI

npm run cli

$ cat .env.example

# ─── AI Model (required — pick one) ───────────────────────────
# Option A: Vercel AI Gateway (recommended — one key, any model)
AI_GATEWAY_API_KEY=          # Your Vercel AI Gateway key
# Option B: Direct API key (simpler, single provider)
# ANTHROPIC_API_KEY=         # From console.anthropic.com
# OPENAI_API_KEY=            # From platform.openai.com
AI_PROVIDER=anthropic        # "anthropic" or "openai"

# ─── Slack Bot (required) ────────────────────────────────────
SLACK_BOT_TOKEN=             # xoxb-your-bot-token
SLACK_BOT_USER_ID=           # The bot's Slack user ID

# ─── Authorized Users & Approvals ────────────────────────────
AUTHORIZED_USER_EMAILS=      # Comma-separated emails
# SLACK_APPROVER_GROUP_ID=   # Slack user group ID

# ─── Redis (required for approvals) ─────────────────────────
# UPSTASH_REDIS_REST_URL=
# UPSTASH_REDIS_REST_TOKEN=

# ─── Salesforce (optional) ───────────────────────────────────
SALESFORCE_CLIENT_ID=
SALESFORCE_CLIENT_SECRET=
SALESFORCE_ACCESS_TOKEN=
SALESFORCE_INSTANCE_URL=

# ─── HubSpot (optional) ─────────────────────────────────────
HUBSPOT_API_TOKEN=           # Private App access token

# ─── Marketo (optional) ─────────────────────────────────────
MARKETO_CLIENT_ID=
MARKETO_CLIENT_SECRET=
MARKETO_REST_ENDPOINT=       # e.g., https://123-ABC-456.mktorest.com

# ─── Project Management (optional) ──────────────────────────
LINEAR_API_KEY=
LINEAR_TEAM_NAME=ENG

# ─── GitHub (optional) ──────────────────────────────────────
GITHUB_TOKEN=                # Personal access token
GITHUB_REPO=owner/repo       # e.g., acme/marketing-site

$ ls docs/

$ ./extend.sh

mOperator is designed to be extended. The real power comes from building your own integrations — small modules that teach mOperator about your internal tools and APIs.

List Import Agent

Upload a CSV to Slack, have mOperator parse it, validate emails, and import contacts into your CRM or MAP automatically.

Data Dictionary

Connect mOperator to your internal docs so it understands your field mappings, lifecycle stages, and scoring models.

Campaign Ops Bot

Build a module that checks campaign naming conventions, UTM parameters, and audience sizing before launch.

Reporting Agent

Connect your BI tool and generate weekly marketing reports posted to Slack on a schedule.

$ moperator --examples

@mOperator What campaigns are active?
@mOperator Show me all contacts at Acme Corp
@mOperator Export all leads as CSV
@mOperator What shipped this week?
/moperator bug Dashboard spinner never stops
@mOperator File a feature request: add dark mode to reports

$ cat architecture.txt

CLI (npm run cli)     Slack (@mOperator)
    |                      |
    v                      v
POST /api/agent      POST /api/slack
    |                      |
    +----------+-----------+
               |
               v
    AI SDK (Claude / GPT-4o)
               |
               +-- Tools (auto-discovered from integrations):
                   +-- Salesforce (if configured)
                   +-- HubSpot (if configured)
                   +-- Marketo (if configured)
                   +-- Project Management (if configured)
                   +-- GitHub (if configured)
                   +-- Your custom tools

$ moperator --features

+ Natural language queries against Salesforce
+ Create, update, and delete records
+ Bulk update hundreds of records at once
+ CSV export as Slack file attachment
+ CSV upload — attach a file and process it
+ Thread context for follow-up questions
+ Permission controls for destructive actions
+ Auto-discovered integrations via env vars
+ HubSpot contacts, companies, deals, and lists
+ Marketo leads, campaigns, programs, and emails
+ File bugs and features to your PM tool from Slack
+ GitHub commit history and release notes