Skip to content

Epic: Open-core architecture — OSS core + hosted paid layer #1

Description

@OkiriGabriel

Summary

Track the work to adopt an open-core model for Marketing Agent:

  • Open (MIT, this repo): agents, tools, prompts, CLI, local JSON storage, BYOK credentials, local scheduler
  • Closed (separate repo): web UI, auth, credential vault, managed scheduler, billing, teams/RBAC, analytics

Principles

  1. Open the brain (LangGraph agents + tools); charge for the platform (hosting, teams, vault, reliability).
  2. Do not gate core agent capabilities (complaints, posting, funnel, content generation) behind a paywall.
  3. Paid layer should import/call the OSS core — not fork agent logic.

Proposed OSS boundary refactor

marketing-agent/                 # MIT (public)
├── storage/
│   ├── base.py                  # StorageProtocol
│   └── json_storage.py
├── credentials/
│   ├── base.py                  # CredentialsProtocol
│   └── env_credentials.py
├── core/
│   └── run.py                   # run_agent(message) → response
├── agents/, tools/, prompts/    # unchanged logic
├── main.py                      # CLI → core.run
└── scheduler.py                 # local cron → abstractions

marketing-agent-cloud/           # proprietary (private repo, future)
├── api/, web/, billing/
├── storage/postgres_storage.py
├── credentials/vault.py
└── workers/scheduler_worker.py

OSS prep issues (this repo)

  • Extract StorageProtocol + JSON implementation
  • Extract CredentialsProtocol + env implementation
  • Add shared core/run.py entry point
  • Refactor scheduler.py to use abstractions
  • Document OSS vs hosted boundary in README

Paid layer roadmap (separate repo)

  • Hosted web UI + chat API
  • Credential vault + OAuth connect flows
  • Managed scheduler worker (queue, retries, alerts)
  • Stripe billing + usage metering
  • Orgs, seats, RBAC, approval workflows
  • Audit log + dashboards

Success criteria

  • OSS users can still: clone → .envpython main.py with zero platform dependency
  • Hosted product can swap Postgres + vault without duplicating agents/ or tools/

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions