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 use the commercial ee/ license. The repository default outside ee/ is AGPL-3.0-or-later, but package-specific license notices can apply instead.

Public package source of truth

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

  • @genfeedai/types
  • @genfeedai/pricing
  • @genfeedai/workflows
  • @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

The current ee/packages/* tree contains billing and harness packages. Those packages may consume public packages from packages/*, but the Community build must not import commercial runtime code 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.
  • Community packages must not depend on enterprise (ee/) runtime packages.
Last updated on