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.
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.
Last updated on