{"id":15060678,"url":"https://github.com/multiwoven/multiwoven","last_synced_at":"2025-05-13T19:11:41.510Z","repository":{"id":221081627,"uuid":"707752626","full_name":"Multiwoven/multiwoven","owner":"Multiwoven","description":"🔥🔥🔥 Open source composable CDP -  alternative to hightouch and census. ","archived":false,"fork":false,"pushed_at":"2025-05-13T07:39:31.000Z","size":6564,"stargazers_count":1605,"open_issues_count":50,"forks_count":71,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-05-13T08:25:01.685Z","etag":null,"topics":["bigquery","cdp","customer-data-platform","data-activation","data-engineering","data-pipeline","data-warehouse","databricks","dbt","etl","hacktoberfest","open-source","postresql","react","redshift","reverse-etl","ruby","self-hosted","snowflake","typescript"],"latest_commit_sha":null,"homepage":"https://squared.ai/multiwoven-reverse-etl","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Multiwoven.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-10-20T15:21:26.000Z","updated_at":"2025-05-13T07:39:33.000Z","dependencies_parsed_at":"2024-03-18T09:58:03.111Z","dependency_job_id":"4b5f546f-11b6-446c-97e1-734799cf686b","html_url":"https://github.com/Multiwoven/multiwoven","commit_stats":{"total_commits":1240,"total_committers":28,"mean_commits":"44.285714285714285","dds":0.8129032258064516,"last_synced_commit":"90977a398f2346b1f29b4c84a18d6a0181799d7d"},"previous_names":["multiwoven/multiwoven"],"tags_count":95,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multiwoven%2Fmultiwoven","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multiwoven%2Fmultiwoven/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multiwoven%2Fmultiwoven/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Multiwoven%2Fmultiwoven/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Multiwoven","download_url":"https://codeload.github.com/Multiwoven/multiwoven/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254010825,"owners_count":21998993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bigquery","cdp","customer-data-platform","data-activation","data-engineering","data-pipeline","data-warehouse","databricks","dbt","etl","hacktoberfest","open-source","postresql","react","redshift","reverse-etl","ruby","self-hosted","snowflake","typescript"],"created_at":"2024-09-24T23:02:37.726Z","updated_at":"2025-05-13T19:11:41.490Z","avatar_url":"https://github.com/Multiwoven.png","language":"Ruby","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://res.cloudinary.com/dspflukeu/image/upload/v1714997618/AIS/multiwoven_-_logo_-_light_eewnz3.svg\" alt=\"Multiwoven\" width=\"228\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eOpen Source Reverse ETL \u0026 Data Activation Platform\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\nMultiwoven is an open-source alternative to \u003cb\u003eHighTouch\u003c/b\u003e, \u003cb\u003eCensus\u003c/b\u003e, and \u003cb\u003eRudderStack\u003c/b\u003e. It lets you easily sync data from your warehouse to any business tool, unlocking the full potential of your data.\n\u003c/p\u003e\n\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/Multiwoven/multiwoven/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/Multiwoven/multiwoven?style=for-the-badge\" alt=\"GitHub stars\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/Multiwoven/multiwoven/releases\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/release/Multiwoven/multiwoven?display_name=release\u0026style=for-the-badge\" alt=\"GitHub release (latest)\"\u003e\n\u003c/a\u003e\n  \u003ca href=\"https://github.com/Multiwoven/multiwoven/graphs/commit-activity\"\u003e\u003cimg alt=\"GitHub commit activity\" src=\"https://img.shields.io/github/commit-activity/m/Multiwoven/multiwoven/main?style=for-the-badge\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Multiwoven/multiwoven/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/Multiwoven/multiwoven?style=for-the-badge\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://github.com/Multiwoven/multiwoven/actions/workflows/server-ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/Multiwoven/multiwoven/server-ci.yml?branch=main\u0026style=for-the-badge\u0026label=server-build\" alt=\"server-ci\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Multiwoven/multiwoven/actions/workflows/integrations-ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/Multiwoven/multiwoven/integrations-ci.yml?branch=main\u0026style=for-the-badge\u0026label=integrations-build\" alt=\"integrations-ci\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Multiwoven/multiwoven/actions/workflows/ui-ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/Multiwoven/multiwoven/ui-ci.yml?branch=main\u0026style=for-the-badge\u0026label=ui-build\" alt=\"ui-ci\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ctable align=\"center\"\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003emultiwoven-integrations\u003c/td\u003e\n      \u003ctd\u003e\n        \u003ca href=\"https://codeclimate.com/repos/657d0a2a60265a2f2155ffca/maintainability\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/d841270f1f7a966043c1/maintainability\" /\u003e\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003ca href=\"https://codeclimate.com/repos/657d0a2a60265a2f2155ffca/test_coverage\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/d841270f1f7a966043c1/test_coverage\" /\u003e\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003emultiwoven-server\u003c/td\u003e\n      \u003ctd\u003e\n        \u003ca href=\"https://codeclimate.com/repos/657bb07835753500df74ff6a/maintainability\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/5f5a5f94f8c86a1fb02b/maintainability\" /\u003e\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003ca href=\"https://codeclimate.com/repos/657bb07835753500df74ff6a/test_coverage\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/5f5a5f94f8c86a1fb02b/test_coverage\" /\u003e\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003emultiwoven-ui\u003c/td\u003e\n      \u003ctd\u003e\n        \u003ca href=\"https://codeclimate.com/repos/658845e86ce9037ff3f7115b/maintainability\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/ac28cea2714ae9868d9e/maintainability\" /\u003e\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd\u003e\n        \u003ca href=\"https://codeclimate.com/repos/658845e86ce9037ff3f7115b/test_coverage\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/ac28cea2714ae9868d9e/test_coverage\" /\u003e\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://docs.squared.ai/open-source/introduction\" rel=\"\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n  \u003cbr/\u003e\n  \u003ca href=\"https://join.slack.com/t/multiwoven/shared_invite/zt-2bnjye26u-~lu_FFOMLpChOYxvovep7g\"\u003eSlack\u003c/a\u003e\n   •\n    \u003ca href=\"https://squared.ai/multiwoven-reverse-etl\"\u003eWebsite\u003c/a\u003e\n    •\n    \u003ca href=\"https://blog.squared.ai\"\u003eBlog\u003c/a\u003e\n   •\n    \u003ca href=\"https://github.com/orgs/Multiwoven/projects/4\"\u003eRoadmap\u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003chr /\u003e\n\n## Why Multiwoven?\n\nMultiwoven simplifies self-hosting a secure, scalable Reverse ETL platform on your cloud infrastructure like AWS, Azure, or GCP. With one-click deployment and customizable connectors, you can easily sync data from your warehouse to business tools.\n\n⭐ *Consider giving us a star! Your support helps us continue innovating and adding new, exciting features.*\n\n### Connect to sources\n\nConnect to your data sources like Databricks, Redshift, BigQuery, and more.\n\n![Example Image](https://res.cloudinary.com/dspflukeu/image/upload/v1716464797/AIS/Sources_ttijzv.png \"Sources\")\n\n### Prepare your data\n\nCreate models to transform and prepare your data for syncing.\n\n![Example Image](https://res.cloudinary.com/dspflukeu/image/upload/v1716464797/AIS/Models_ee7as8.png \"Example Title\")\n\n### Sync with destinations\n\nSync your data with destinations like Salesforce, HubSpot, Slack, and more.\n\n![Example Image](https://res.cloudinary.com/dspflukeu/image/upload/v1716464797/AIS/Destinations_ebpt0n.png \"Example Title\")\n\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n  - [Local Setup](#local-setup)\n  - [Self-hosted Options](#self-hosted-options)\n- [Connectors](#connectors)\n  - [Sources](#sources)\n  - [Destinations](#destinations)\n    - [CRM](#crm)\n    - [Marketing Automation](#marketing-automation)\n    - [Customer Support](#customer-support)\n    - [Advertising](#advertising)\n    - [Collaboration](#collaboration)\n    - [Analytics](#analytics)\n    - [Others](#others)\n- [Contributing](#contributing)\n- [Need Help?](#need-help)\n  - [Development Status: Under Active Development](#️-development-status-under-active-development)\n- [License](#license)\n- [Contributors](#contributors)\n\n## Getting Started\n\nMultiwoven is a monorepo that consists of three main services:\n\n- \u003cb\u003eserver\u003c/b\u003e - The backend service that acts as a control plane for managing data sources, models, and syncs.\n\n- \u003cb\u003eui\u003c/b\u003e - The frontend react application that provides a user interface to manage data sources, destinations, and confgure syncs.\n\n- \u003cb\u003eintegrations\u003c/b\u003e - A Ruby Gem that provides a framework to build connectors to support a wide range of data sources and destinations.\n\n### Local Setup\n\nTo get started with Multiwoven, you can deploy the entire stack using Docker Compose.\n\n1. **Clone the repository:**\n\n```bash\ngit clone git@github.com:Multiwoven/multiwoven.git\n```\n\n2. **Go inside multiwoven folder:**\n\n```bash\ncd multiwoven\n```\n\n3. **Initialize .env file:**\n\n```bash\nmv .env.example .env\n```\n\n4. **Copy .env file to ui folder:**\n\n```bash\ncp .env ui/.env\n```\n\n5. **Setup git hooks:**\n\n```bash\n./git-hooks/setup-hooks.sh \n```\n\n6. **Start the services:**\n\n```bash\ndocker-compose build \u0026\u0026 docker-compose up\n```\n\nUI can be accessed at the PORT 8000 :\n\n```bash\nhttp://localhost:8000\n```\n\nFor more details, check out the local [deployment guide](https://docs.squared.ai/open-source/guides/setup/docker-compose-dev) in the documentation.\n\n### Self-hosted Options\n\nMultiwoven can be deployed in a variety of environments, from fully managed cloud services to self-hosted solutions. Refer to the deployment guides below to deploy Multiwoven on your preferred cloud provider.\n\n| Provider                          | Documentation                                                               |\n| :-------------------------------- | :-------------------------------------------------------------------------- |\n| **Docker**                        | [Deployment Guide](https://docs.squared.ai/open-source/guides/setup/docker-compose) |\n| **Helm Charts**                   | [Deployment Guide](https://docs.squared.ai/open-source/guides/setup/helm)           |\n| **AWS EC2**                       | [Deployment Guide](https://docs.squared.ai/open-source/guides/setup/ec2)            |\n| **AWS ECS**                       | Coming soon.                                                       |\n| **AWS EKS (Kubernetes)**          | Coming soon.                                                      |\n| **Azure VMs**                     | [Deployment Guide](https://docs.squared.ai/open-source/guides/setup/avm)                                                       |\n| **Azure AKS (Kubernetes)**        | [Deployment Guide](https://docs.squared.ai/open-source/guides/setup/aks)            |\n| **Google Cloud GKE (Kubernetes)** | Coming soon.                                                             |\n| **Google Cloud Compute Engine**   | [Deployment Guide](https://docs.squared.ai/open-source/guides/setup/gce)            |\n| **Digital Ocean Droplets**        | Coming soon.                                                        |\n| **Digital Ocean Kubernetes**      | Coming soon.                                                             |\n| **OpenShift**                     | Coming soon.                                                             |\n\n## Connectors\n\n🔥 Multiwoven is rapidly expanding its list of connectors to support a wide range of data sources and destinations. Head over to the [Integrations](https://github.com/Multiwoven/multiwoven/tree/main/integrations) directory to explore the available connectors. If you don't see the connector you need, please [open an issue](https://github.com/Multiwoven/multiwoven/issues) to request it.\n\n### Sources\n\n- [x] [Amazon Redshift](https://docs.squared.ai/guides/data-integration/sources/redshift)\n- [x] [Google BigQuery](https://docs.squared.ai/guides/data-integration/sources/bquery)\n- [x] [Snowflake](https://docs.squared.ai/guides/data-integration/sources/snowflake)\n- [x] [Databricks](https://docs.squared.ai/guides/data-integration/sources/databricks)\n- [x] [PostgreSQL](https://docs.squared.ai/guides/data-integration/sources/postgresql)\n\n### Destinations\n\n#### CRM\n\n- [x] [Salesforce](https://docs.squared.ai/guides/data-integration/destinations/crm/salesforce)\n- [ ] Zoho CRM\n- [x] [HubSpot](https://docs.squared.ai/guides/data-integration/destinations/crm/hubspot)\n\n#### Marketing Automation\n\n- [x] [Klaviyo](https://docs.squared.ai/guides/data-integration/destinations/marketing-automation/klaviyo)\n- [ ] Braze\n- [ ] Salesforce Marketing Cloud\n\n#### Customer Support\n\n- [x] [Zendesk](https://docs.squared.ai/guides/data-integration/destinations/customer-support/zendesk)\n- [ ] Freshdesk\n- [ ] Intercom\n\n#### Advertising\n\n- [ ] Google Ads\n- [x] [Facebook Ads](https://docs.squared.ai/guides/data-integration/destinations/adtech/facebook-ads)\n\n#### Collaboration\n\n- [x] [Slack](https://docs.squared.ai/guides/data-integration/destinations/team-collaboration/slack)\n- [x] [Google Sheets](https://docs.squared.ai/guides/data-integration/destinations/productivity-tools/google-sheets)\n- [x] [Airtable](https://docs.squared.ai/guides/data-integration/destinations/productivity-tools/airtable)\n\n#### Analytics\n\n- [x] Google Analytics\n- [ ] Mixpanel\n- [ ] Amplitude\n\n#### Others\n\n🧵...Weaving in more connectors to support a wide range of destinations.\n\n## Contributing\n\nWe ❤️ contributions and feedback! Help make Multiwoven better for everyone!\n\nBefore contributing to Multiwoven, please read our [Code of Conduct](https://github.com/Multiwoven/multiwoven/blob/main/CODE_OF_CONDUCT.md) and [Contributing Guidelines](https://github.com/Multiwoven/multiwoven/blob/main/CONTRIBUTING.md). As a contributor, you are expected to adhere to these guidelines and follow the best practices.\n\n## Need Help?\n\nIf you have any questions or need help with Multiwoven, please feel free to reach out to us on [Slack](https://join.slack.com/t/multiwoven/shared_invite/zt-2bnjye26u-~lu_FFOMLpChOYxvovep7g). We are open to discuss new ideas, features, and improvements.\n\n### ⚠️ Development Status: Under Active Development\n\nThis project is under active development, As we work towards stabilizing the project, you might encounter some bugs or incomplete features. We greatly value your contributions and patience during this phase. Thank you for your support!\n\n## Contributors\n\n\u003ca href=\"https://github.com/Multiwoven/multiwoven/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=Multiwoven/multiwoven\u0026max=400\u0026columns=20\" /\u003e\n\u003c/a\u003e\n\n## License\n\nMultiwoven is licensed under the AGPLv3 License. See the [LICENSE](https://github.com/Multiwoven/multiwoven/blob/main/LICENSE) file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmultiwoven%2Fmultiwoven","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmultiwoven%2Fmultiwoven","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmultiwoven%2Fmultiwoven/lists"}