Webiny is a free, open source frameworks & platforms project written in TypeScript and released under a custom open-source licence. It has 8,038 GitHub stars, 676 forks and 352 open issues, and was last pushed 5 hours ago. On this registry it ranks #17 of 28 tracked projects in Frameworks & Platforms, with 5 head-to-head comparisons available. It gained 3 stars over the last 6 tracked days.

What is Webiny?

Webiny is an open-source, self-hosted content platform that runs entirely on AWS serverless infrastructure inside your own account, and it is built for developers at large organizations who want to extend a CMS in TypeScript code rather than configure a closed product through a user interface.

What it is

Webiny is a content platform and TypeScript framework that runs on AWS serverless services: Lambda for API and business logic, DynamoDB for content storage, S3 for assets, and CloudFront for CDN delivery. The platform ships as a headless CMS, a Website Builder with a drag-and-drop page editor and a Next.js SDK, a File Manager for digital asset management, publishing workflows, and native multi-tenancy. All AWS infrastructure is provisioned through Pulumi infrastructure-as-code templates that are themselves open-source, so Lambda memory settings, CloudWatch alarms, VPC configuration, and additional AWS resources can all be modified directly. Optional extras include OpenSearch for full-text search at scale and VPC deployment with multi-AZ configuration.

The concrete problem it solves is that teams needing enterprise content management have generally had to choose between a closed CMS they configure through a UI and cannot extend at the framework level, or a bespoke build they must maintain themselves. Webiny replaces the closed, UI-configured product with a programmable framework, while keeping the operational burden low by running serverless: there are no servers to patch, no scaling to plan, and no capacity to provision. Content models can be defined in the admin UI or declared in code, the framework exposes lifecycle hooks, dependency injection, GraphQL schema extensions, admin UI extension points, and infrastructure extensions, and multi-tenancy provides isolated data, users, assets, and permissions for thousands of tenants from a single deployment.

Key capabilities

  • Headless CMS with custom content models, a GraphQL API, field-level permissions, localization, and versioning, with models defined through the admin UI or in code via the framework.
  • Website Builder with a visual drag-and-drop page editor and a Next.js SDK, rendering pages through a frontend of your choosing such as Vercel or CloudFront, with custom page elements written as React components.
  • File Manager providing digital asset management with CDN delivery, folder structure, tagging, and search, integrated into both the CMS and the Website Builder.
  • Publishing workflows with multi-step content approval, draft states, reviewer assignments, scheduled publishing, and audit trails.
  • Native multi-tenancy with tenant isolation of data, users, assets, and permissions from one deployment; tenants are created and managed programmatically through the GraphQL API and support hierarchical structures such as Root to Brand to Market.
  • Webiny Framework: a TypeScript framework with lifecycle hooks, dependency injection, GraphQL schema extensions, admin UI extension points, and infrastructure extensions.
  • MCP server and AI skills that connect AI coding agents to the project for AI-assisted development.
  • Infrastructure provisioned via Pulumi IaC in a single deploy command.

Who uses it and how

  • Large organizations running it in production at scale, including teams managing hundreds of millions of content records, petabytes of assets, and thousands of editors.
  • SaaS platforms that white-label Webiny inside their own products, using multi-tenancy to host thousands of tenants from one instance.
  • Frontend teams on Next.js and React that render Website Builder pages through their own frontend deployment while keeping content in their own AWS account.
  • Platform and operations teams that keep infrastructure in their own AWS account and modify the open IaC templates, adjusting Lambda memory, adding CloudWatch alarms, or changing VPC configuration.
  • Developers onboarding to an existing project, where cloning the repository and running yarn is enough to be ready to develop; local work runs through yarn webiny watch admin on localhost:3001 and yarn webiny watch api for a local Lambda execution environment.

Getting started

Scaffold a project with npx create-webiny-project my-project, then move into the directory and run yarn webiny deploy. Prerequisites are Node.js 22 or later, Yarn, and an AWS account with programmatic access; the first deploy takes five to fifteen minutes because AWS resources are being provisioned, after which an admin panel URL is available.

How it compares

No comparable tools are named in the facts supplied for this entry, so Webiny stands alone in this registry on the axes of AWS serverless CMS frameworks. Readers comparing it against other content platforms will need to evaluate those products separately.

When to use it — and when not to

A self-hoster must operate an AWS account and the serverless resources provisioned into it, including Lambda, DynamoDB, S3, and CloudFront, with Pulumi driving the infrastructure; optional OpenSearch, VPC, and multi-AZ setups add further operational surface. Teams that do not want to run workloads in their own cloud account, or that want a CMS configured purely through a UI with no code-level extension, should not pick it, and the repository's licence is marked NOASSERTION, so licensing terms should be confirmed before adoption. The project is actively developed with a recent push and a substantial open issue count of 352, which is worth weighing against the maturity implied by production use at large organizations.

project readme (upstream, from github) — read inline

AI-programmable CMS for enterprises hosting on AWS

Build Status Total Downloads Latest Release License

About Webiny

Open-source content platform. Self-hosted on AWS serverless. Built as a TypeScript framework you extend with code, not a closed product you configure through a UI.

Runs on Lambda, DynamoDB, S3, and CloudFront inside your own AWS account. Scales automatically. No servers to manage. Infrastructure provisioned via IaC (Pulumi) in a single deploy command.

Used in production by teams managing hundreds of millions of content records, petabytes of assets, and thousands of editors — including Amazon, Emirates, Fortune 500 companies, government agencies, and SaaS platforms that white-label Webiny inside their own products.

Documentation · Learn Webiny Course · Community Slack


What's Inside

Webiny Headless CMS

Headless CMS — Custom content models, GraphQL API, field-level permissions, localization, versioning. Models can be defined through the admin UI or in code via the framework.

Webiny Website Builder

Website Builder — Visual drag-and-drop page editor with a Next.js SDK. Render pages through your own frontend (Vercel, CloudFront, wherever). Create custom page elements with React components.

Webiny Website Builder File Manager — Digital asset management with CDN delivery, folder structure, tagging, search. Integrated into CMS and Website Builder.

Publishing Workflows — Multi-step content approval with draft states, reviewer assignments, scheduled publishing, and audit trails.

Multi-Tenancy — Native tenant isolation (data, users, assets, permissions) from a single deployment. One instance can host thousands of tenants. Tenants are created and managed programmatically via GraphQL API. Supports hierarchical tenant structures (Root → Brand → Market, Root → Client → Site, etc.).

Webiny Framework — TypeScript framework with lifecycle hooks, dependency injection, GraphQL schema extensions, admin UI extension points, and infrastructure extensions. This is the core — it's what makes Webiny programmable rather than just configurable.


Architecture

┌─────────────────────────────────────────────────────┐
│                    Your AWS Account                  │
│                                                      │
│  ┌──────────┐  ┌──────────┐  ┌─────┐  ┌──────────┐ │
│  │  Lambda   │  │ DynamoDB │  │ S3  │  │CloudFront│ │
│  │ (API +   │  │ (Content │  │(Assets)│ │  (CDN)  │ │
│  │  business │  │  storage) │  │     │  │          │ │
│  │  logic)   │  │          │  │     │  │          │ │
│  └──────────┘  └──────────┘  └─────┘  └──────────┘ │
│                                                      │
│  Optional: OpenSearch (full-text search at scale)    │
│  Optional: VPC deployment, multi-AZ, custom config   │
│                                                      │
│  All provisioned automatically via Pulumi IaC         │
└─────────────────────────────────────────────────────┘

Stack: TypeScript, React, GraphQL, Node.js, Pulumi, AWS serverless services.

What you control: Everything. The IaC templates are open-source. Modify Lambda memory, add CloudWatch alarms, change VPC configuration, add custom AWS resources — it's your infrastructure.

What you don't manage: Servers. Patching. Scaling. Capacity planning. That's the point of serverless.


Quick Start

Prerequisites: Node.js 22+, Yarn, AWS account with programmatic access.

npx create-webiny-project my-project
cd my-project
yarn webiny deploy

First deploy takes 5–15 minutes (AWS provisioning). After that, you get an admin panel URL. Create your first admin account, and you're in.

Local development:

yarn webiny watch admin  # React dev server on localhost:3001
yarn webiny watch api    # Local Lambda execution environment

New team member onboarding:

git clone <your-repo>
yarn
# Ready to develop

AI-Assisted Development

Webiny - MCP AI Assisted Development

Webiny ships with an MCP server and AI skills that give AI coding agents (Claude Code, Cursor, Kiro, etc.) deep context about the platform's architecture, extension points, and patterns.

This means you can ask an AI agent to:

  • Create content models with specific field types and validation
  • Build lifecycle hooks that trigger on content events
  • Extend the GraphQL API with custom queries and business logic
  • Scaffold admin UI extensions with React components
  • Wire integrations with external systems via lifecycle events
  • Set up multi-tenant configurations programmatically

The AI produces code that follows Webiny's actual patterns because the MCP server gives it real knowledge of the framework — not generic guesses.

Why this works better on Webiny than most platforms: The framework is strongly typed with explicit extension points. AI-generated code either fits the type system or it doesn't compile. There's no ambiguous plugin API where the AI has to guess. Types enforce correctness.

Getting started with the MCP server:

# The MCP server runs locally inside your Webiny project
# Connect it to your AI coding tool of choice
# See docs for tool-specific setup instructions

AI-Assisted Development Guide


Extending Webiny

All customization happens in the extensions/ folder and is registered in webiny.config.tsx. Four extension types:

API Extensions — Custom GraphQL schemas, resolvers, lifecycle hooks, business logic.

// extensions/NotifyOnPublish.ts — Example: send Slack notification when content is published
class NotifyOnPublish implements CmsLifecycleHook.Interface {
  constructor(private slackService: SlackService.Interface) {}

  async afterPublish(params: AfterPublishParams): Promise<void> {
    await this.slackService.notify(`Content published: ${params.entry.title}`);
  }
}

Admin Extensions — Custom UI components, white-label branding, new views, tenant-specific themes. Standard React — use any patterns and libraries you already know.

Infrastructure Extensions — Modify AWS resources via Pulumi. Add Lambda functions, S3 buckets, CloudWatch alarms, or change existing resource configuration.

CLI Extensions — Custom commands for deployment workflows, data migrations, code generators.

Extensions Guide


When to Use Webiny

  • You need a self-hosted CMS and don't want to run servers
  • You need multi-tenancy as a first-class primitive, not a workaround
  • You want to extend the CMS with real code (TypeScript), not just configuration
  • You need to embed a CMS inside your own product (white-label)
  • Data ownership and compliance requirements rule out SaaS CMS
  • You want AI agents to be able to build on your content platform effectively
  • You're on AWS (or planning to be)

When Not to Use Webiny

Be honest with yourself about these:

  • Simple sites or blogs. Webiny is built for complex projects. If you need a blog with 10 pages, use something simpler.
  • Not on AWS. Webiny only runs on AWS. No GCP, no Azure, no on-prem. If that's a dealbreaker, it's a dealbreaker.
  • No TypeScript/React skills on the team. The entire extension model is TypeScript and React. If your team works in a different stack and doesn't want to adopt these, Webiny won't be a good fit.
  • You want a no-code, plug-and-play SaaS CMS. Webiny is a platform for developers to build on. If you want zero development involvement, this isn't it.

Licensing

Community Edition — MIT

readme truncated — read the full docs on github

Frequently asked questions

Is Webiny free to use?

Webiny is open source. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Webiny do?

Open-source serverless CMS for modern web projects

What is Webiny written in?

Webiny is primarily written in TypeScript. Its source is publicly available at https://github.com/webiny/webiny-js, and it has 8,038 GitHub stars.