Open-source project
Multiwoven/multiwoven avatar
Multiwoven/multiwoven

Multiwoven: a self-hosted Reverse ETL control plane in Ruby, AGPL-3.0

🔥🔥🔥 Open source Reverse ETL - alternative to hightouch and census.

1,673 stars96 forksRubyAGPL-3.0

At a glance

What is it?
Multiwoven is an open source Reverse ETL platform that keeps warehouse-to-tool syncs inside your own infrastructure. The repository shows a three-service monorepo (server, ui, integrations) and a Docker Compose path to a running instance on port 8000, but the README also lists several deployment targets as not yet available.
Who is it for?
Adopt Multiwoven if you already run a warehouse (BigQuery, Redshift, Databricks or Snowflake are the named sources) and you need syncs into CRM, marketing, support or advertising tools without sending customer rows through a vendor's cloud. Do not adopt it if you need a managed service with a support contract, or if your target platform is AWS ECS or EKS, which the README lists as coming soon.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Ruby, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem Multiwoven targets: activation without a third-party data processor

Reverse ETL moves data the opposite way from a normal pipeline. Instead of pulling events from SaaS tools into a warehouse, it reads modelled tables from the warehouse and writes rows into operational systems: a CRM, a marketing automation platform, a support desk. Commercial products in this space are hosted, which means customer records leave your cloud and pass through someone else's. Multiwoven's pitch is that the whole thing runs on your own infrastructure, described in the README as simplifying "self-hosting a secure, scalable Reverse ETL platform on your cloud infrastructure like AWS, Azure, or GCP." The audience is data engineers at companies that have already built a warehouse layer and now need to push segments or attributes back out. That constraint, keeping the data path inside your own account, is the reason to pick this over a hosted alternative. It is not a reason to pick it over a lighter script if your only sync is one table into one tool.

Three services, one monorepo: server, ui, integrations

The README describes the repository as a monorepo with three components. The server is the backend and acts as a control plane: it manages data sources, models, and syncs. The ui is a React application that gives operators a screen for configuring sources, destinations and syncs. The integrations layer is a Ruby gem, and the README calls it "a framework to build connectors to support a wide range of data sources and destinations." That split matters when you evaluate the project. The control plane and the connector framework are separate deliverables, so a connector you need can be added without touching the server. The CI workflows named in the README badges confirm the boundary: server-ci.yml, integrations-ci.yml and ui-ci.yml are three separate pipelines, which implies three independently buildable artifacts. The data flow implied by the UI screenshots is source to model to destination: you connect a warehouse, define a model that transforms and prepares the data, then configure a sync that writes it to a business tool. What the README does not describe is the scheduling model, retry behaviour, or how sync state is tracked between runs. Those are the questions to answer from the docs before a production rollout.

Getting a local instance up with Docker Compose

The README gives an explicit local setup sequence. Clone the repository, change into the directory, then rename the environment template: `mv .env.example .env`. The UI needs its own copy of the same file, so the next step is `cp .env ui/.env`. Git hooks are installed with `./git-hooks/setup-hooks.sh`, which is a development convenience rather than a runtime requirement. The stack itself comes up with `docker-compose build && docker-compose up`, and the README states the UI is then reachable at `http://localhost:8000`. That is the whole documented path for a local evaluation. Note what is missing from it: there is no instruction to seed a database, create an admin user, or generate an encryption key, and the README does not say which services the Compose file starts. If you are evaluating Multiwoven, treat the Compose file itself as the source of truth for the service list and the environment variables the server expects, because the README only points at the deployment guide for details.

Self-hosting targets: Docker and Helm now, ECS and EKS later

The deployment table in the README is the most useful honesty in the document. Docker and Helm Charts both have deployment guides. AWS EC2 has one. AWS ECS is marked "Coming soon" and AWS EKS (Kubernetes) is marked the same way. So the practical self-hosted options today are a Compose deployment on a single host, a Helm release on a cluster you already operate, or an EC2 instance. If your platform standard is ECS, you are either waiting or writing the task definitions and service wiring yourself. That is a real constraint, not a footnote, because the value proposition is running this inside your own cloud account. A team that standardises on EKS and finds the official path missing has to own the Kubernetes manifests, the ingress, the secrets handling and the upgrade mechanics. The Helm guide existing is a partial answer, since Helm charts generally target any conformant cluster, but the README does not claim the chart is tested on EKS. Verify that against the chart itself.

Connector coverage is the deciding variable, and the README only names examples

The README lists categories rather than a definitive connector inventory: CRM, Marketing Automation, Customer Support, Advertising, Collaboration, Analytics, and Others. The named examples are Salesforce, HubSpot and Slack on the destination side, and Databricks, Redshift, BigQuery and Snowflake on the source side. Those are illustrations, not a complete list, and the topics field on the repository adds dbt, PostgreSQL and Databricks to the picture without saying in what role. This is the single most important thing to check before adopting Multiwoven, because a Reverse ETL tool is only as useful as the pair of endpoints you need. If your destination is a niche vertical SaaS product, the odds that a connector exists in the integrations gem are unknown from the README alone. The integrations repository is a Ruby gem, so writing a connector is theoretically an option for a team with Ruby experience, but the README does not document the connector authoring interface beyond calling it a framework. Budget for reading the gem's source if you go that route.

AGPL-3.0 changes who can comfortably embed this

Multiwoven is licensed under AGPL-3.0, and the repository links the LICENSE file directly. The AGPL is the network-copyleft variant: the commonly cited obligation is that if you run modified versions of the software and let users interact with it over a network, you are expected to offer those users the corresponding source. For an internal deployment where you sync your own warehouse into your own CRM, that obligation is usually not triggered in any interesting way, but the analysis is fact-specific. Where it gets sharper is if you plan to fork the server or the integrations gem into a product you sell, or to link the gem into a closed-source service. The README itself does not discuss licensing beyond the badge, and the project's homepage points to an enterprise offering, which is a common pattern for AGPL-backed open source. If your legal position depends on the answer, get it from counsel rather than from this article.

Where Multiwoven is the wrong tool

Three cases stand out. First, if you have no warehouse. The entire model assumes a source like BigQuery, Redshift, Databricks or Snowflake already holds the modelled data. Without that layer there is nothing for the sync to read. Second, if you want someone else to run it. Multiwoven's stated advantage is self-hosting, and that is also its operating cost: you own the uptime, the upgrades and the credential storage for every destination you connect. A team without anyone who wants to operate a Ruby service and a Postgres-backed control plane will find the hosted alternatives cheaper in practice, whatever the licence fee says. Third, if you need the deployment target the README marks as coming soon. A release cadence of roughly weekly minor versions, visible in the release list, is a sign of active development, but it also means you are tracking a moving target. The README carries a section titled "Development Status: Under Active Development", which is the project telling you the same thing.

Maintenance and upgrade cost

The release history shows versions v0.127.0, v0.128.0 and v0.129.0 landing on consecutive weeks in August and September 2026, and the repository's last push timestamp is within days of the newest release. A weekly minor-version cadence on a pre-1.0 project means upgrades are a recurring task rather than an annual one, and the README does not describe a migration or upgrade procedure. Self-hosting therefore includes owning the upgrade path for the server, the ui and the integrations gem together, since they are separate artifacts with separate CI pipelines. The Compose deployment is the simplest to keep current; a Helm deployment adds chart versioning on top. The practical check before you commit is whether the release notes for a given version describe schema or configuration changes that require action, and whether the docs site publishes an upgrade guide. Neither is visible in the material here, so treat it as an open question to answer from the docs.

Editorial conclusion

Adopt Multiwoven if you already run a warehouse (BigQuery, Redshift, Databricks or Snowflake are the named sources) and you need syncs into CRM, marketing, support or advertising tools without sending customer rows through a vendor's cloud. Do not adopt it if you need a managed service with a support contract, or if your target platform is AWS ECS or EKS, which the README lists as coming soon. Before committing, read the integrations CI workflow and the connector list on the docs site to confirm your specific source and destination pair exists, and check what AGPL-3.0 means for any code you plan to link against the integrations gem.

Official sources

  1. License: AGPL-3.0
  2. Multiwoven/multiwoven on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes