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 examplepackages/contracts,packages/serializers,packages/cli). - Backend services live under
apps/server/*and frontends underapps/*. These are applications, not published packages. - The repository default license 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/contracts@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.
Cloud boundary
Organization billing lives in the API at apps/server/api/src/collections/{subscriptions,user-subscriptions,subscription-attributions}/
and ships in every image. Whether it is live is decided at runtime by
hasOrganizationBilling() — see
Billing: one build, a runtime gate .
Cloud-only product surfaces (managed credits, multi-tenant organization
management) are gated by deployment mode and configuration, not by a separate
licensed package tree.
Release ordering
Because everything ships from one repo, releases are coordinated as a single workspace:
- Build and version shared packages in
packages/*. - Build and deploy the consuming apps in
apps/*andapps/server/*. - Publish
@genfeedai/clifrompackages/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; useworkspace:*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.