Skip to Content
Guides & TutorialsPackage Ownership

Package Ownership and Publish Boundaries

This document defines where @genfeedai/* packages live and how publishing is scoped within the Genfeed monorepo.

Canonical ownership

Genfeed.ai is a single TypeScript monorepo at genfeedai/genfeed.ai. All @genfeedai/* packages are owned there — there are no separate per-package repositories.

  • Shared packages live under packages/* (for example packages/types, packages/serializers, packages/cli).
  • Backend services live under apps/server/* and frontends under apps/*. These are applications, not published packages.
  • Enterprise packages live under ee/packages/* and are licensed under the commercial ee/ license, separate from the AGPL-3.0 core.

Public package source of truth

The packages/ workspace is the canonical source for the shared @genfeedai/* packages, including:

  • @genfeedai/types
  • @genfeedai/core
  • @genfeedai/workflows
  • @genfeedai/prompts
  • @genfeedai/workflow-ui
  • @genfeedai/serializers
  • @genfeedai/cli

Each package name maps to exactly one directory under packages/. There is no second home for any package name.

Enterprise boundary

Enterprise modules under ee/packages/* (for example multi-tenancy, billing, analytics, and teams) may consume public packages from packages/*, but the reverse is not allowed: AGPL-3.0 core packages must never import from ee/.

Enterprise packages extend public contracts (for example workflow extension layers built on @genfeedai/workflows) rather than forking them.

Release ordering

Because everything ships from one repo, releases are coordinated as a single workspace:

  1. Build and version shared packages in packages/*.
  2. Build and deploy the consuming apps in apps/* and apps/server/*.
  3. Publish @genfeedai/cli from packages/cli.

Rules to avoid ownership drift

  • One package name maps to exactly one directory under packages/ — never duplicate a package name elsewhere.
  • Avoid file: dependencies for shared packages; use workspace:* within the monorepo.
  • Treat workspace:* as internal only and rewrite to published versions before any external publish.
  • Keep package metadata (exports, files, repository, license) publish-safe.
  • Core (AGPL-3.0) packages must not depend on enterprise (ee/) packages.