// the find
webiny/webiny-js
Open-source, self-hosted CMS platform on AWS serverless (Lambda, DynamoDB, S3). TypeScript framework with multi-tenancy, lifecycle hooks, GraphQL API, and AI-assisted development via MCP server. Built for developers at large organizations.
Webiny is a self-hosted headless CMS and page builder that runs entirely on AWS serverless infrastructure — Lambda, DynamoDB, S3, CloudFront — provisioned via Pulumi. It's aimed at teams that need multi-tenancy and developer-extensible content infrastructure without managing servers, and that are willing to go deep on AWS and TypeScript to get it.
Multi-tenancy is a first-class primitive, not bolted on: tenant isolation covers data, users, assets, and permissions from a single deployment, with hierarchical structures supported out of the box. The extension model is properly typed — lifecycle hooks, GraphQL schema extensions, and admin UI components all go through explicit TypeScript interfaces, so AI-generated code either fits or fails to compile rather than silently misbehaving. The MCP server is a genuinely clever move: giving AI coding agents structured knowledge of the framework's extension points means the AI produces idiomatic Webiny code instead of plausible-looking nonsense. Pulumi-based IaC is open and modifiable — you own the infrastructure definition and can add resources, change Lambda config, or restructure VPCs without waiting for the vendor.
Hard AWS lock-in with no abstraction layer means migrating off later is a full rewrite, not a config change — DynamoDB's data model in particular doesn't translate cleanly anywhere else. The monorepo is enormous (hundreds of packages under a single Yarn workspace) and the local development story requires running two separate watch processes; cold deploy times of 5–15 minutes make iteration on infrastructure changes painful. The licensing split is a real trap: multi-tenancy is listed as a Business Edition feature at $79/month, but the README leads with it as a headline capability — teams who read the feature list and then deploy the MIT Community Edition will hit this wall late. DynamoDB as the primary storage engine means you're also taking on DynamoDB's query limitations: no ad-hoc filtering without scan operations or maintaining secondary indexes manually, which becomes a maintenance burden as content models grow.