From a57214ea73d4b18f07a4ace370f2ac0f0922887b Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Tue, 21 Jul 2026 18:22:55 +0200 Subject: [PATCH 01/17] docs: note the AI steps on the automations canvas in the readme feature list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c4ec3901..f4258202 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Everything a sending team needs sits in one dashboard: - **The unified inbox** pulls every connected mailbox and its replies into one view. - **A built-in CRM** tracks contacts, pipelines, deals, tasks, and meetings. - **Deliverability** surfaces bounces, complaints, suppression, and inbox placement. -- **Automations** run branching reply playbooks on a visual canvas. +- **Automations** run branching reply playbooks on a visual canvas, with AI steps that read a reply and act on it. - **Integrations** sync the CRM and automations out to HubSpot, Slack, and more. - **Warmup** builds real sender reputation through our pool, covered next. From 8d4a966b365880ea86b88989121804976d5ca787 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 07:30:51 +0200 Subject: [PATCH 02/17] Cleanup README by removing dashboard images Removed images and descriptions of dashboard features from the README. --- README.md | 35 ++++------------------------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index f4258202..e755504f 100644 --- a/README.md +++ b/README.md @@ -26,44 +26,17 @@ Contributing

-

- Campaigns
- Campaigns · multi-step sequences with per-mailbox daily caps and spacing -

- -

- Unified inbox
- Unified inbox · every connected mailbox and reply in one place -

- -

- Mailboxes
- Mailboxes · warmup state and health for every account -

- ## What is Warmbly - Warmbly is a cold outreach platform. You connect your mailboxes, write sequenced campaigns, and it sends the mail, tracks the replies, and keeps your sender -reputation healthy. The difference from hosted tools is where it runs: your -sending IPs, your Postgres, your servers. Nothing is tied to a vendor's database. +reputation healthy. -Everything a sending team needs sits in one dashboard: +https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b -- **Campaigns** send multi-step sequences with per-mailbox daily caps and spacing. -- **The unified inbox** pulls every connected mailbox and its replies into one view. -- **A built-in CRM** tracks contacts, pipelines, deals, tasks, and meetings. -- **Deliverability** surfaces bounces, complaints, suppression, and inbox placement. -- **Automations** run branching reply playbooks on a visual canvas, with AI steps that read a reply and act on it. -- **Integrations** sync the CRM and automations out to HubSpot, Slack, and more. -- **Warmup** builds real sender reputation through our pool, covered next. +## Star the repository ⭐ -The dashboard is collaborative in real time: teammates see each other's live -cursors, presence, and edits across campaigns, the CRM, and the automation -canvas, with no refresh. +warmbly-star-ezgif com-optimize -The same code runs on a single VPS or across a fleet of cheap servers with many -IPs per box, so you add capacity by adding machines. ## Connect your mailboxes From 03e36fb018db6c75736ee6c7214897932622ac30 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 07:39:57 +0200 Subject: [PATCH 03/17] Replace star image in README Updated star image in README with a new source. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index e755504f..aa7cbfa7 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,7 @@ https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b ## Star the repository ⭐ -warmbly-star-ezgif com-optimize - +warmbly-star ## Connect your mailboxes From 2fb9121bee63e45c169af1855a88284289633f2a Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 07:48:33 +0200 Subject: [PATCH 04/17] docs: replace the readme banner with the Warmbly logo svg and trim the readme to a minimal logo-plus-docs-links layout --- README.md | 173 +++++++++++++---------------------------- docs/assets/README.md | 2 +- docs/assets/banner.jpg | Bin 108588 -> 0 bytes docs/assets/logo.svg | 9 +++ 4 files changed, 62 insertions(+), 122 deletions(-) delete mode 100644 docs/assets/banner.jpg create mode 100644 docs/assets/logo.svg diff --git a/README.md b/README.md index aa7cbfa7..709a6303 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- Warmbly + Warmbly

@@ -27,40 +27,45 @@

## What is Warmbly -Warmbly is a cold outreach platform. You connect your mailboxes, write sequenced -campaigns, and it sends the mail, tracks the replies, and keeps your sender -reputation healthy. + +Warmbly is a cold outreach platform you run yourself: your sending IPs, your +Postgres, your servers, nothing tied to a vendor's database. Connect your +mailboxes, write sequenced campaigns, and it sends the mail, tracks the replies, +and keeps your sender reputation healthy. https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b +Everything a sending team needs sits in one dashboard, collaborative in real time +so teammates see each other's presence and edits with no refresh: + +- **Campaigns** send multi-step sequences with per-mailbox daily caps and spacing. +- **The unified inbox** pulls every connected mailbox and its replies into one view. +- **A built-in CRM** tracks contacts, pipelines, deals, tasks, and meetings. +- **Deliverability** surfaces bounces, complaints, suppression, and inbox placement. +- **Automations** run branching reply playbooks on a visual canvas, with AI steps that read a reply and act on it. +- **Integrations** sync the CRM and automations out to HubSpot, Slack, and more. +- **Warmup** builds real sender reputation through a pool of monitored mailboxes. + +The same code runs on a single VPS or across a fleet of cheap servers, so you add +capacity by adding machines. + ## Star the repository ⭐ warmbly-star ## Connect your mailboxes -Warmbly sends and receives through the mailboxes you already own. There are three -ways to connect one, and you can mix them freely across a workspace: - -- **Google / Gmail and Google Workspace.** Connect with one-click OAuth, no app - password to store or rotate. Sending goes through the Gmail API. -- **Microsoft 365 / Outlook.** Connect with one-click OAuth over authenticated - SMTP and IMAP. -- **Any other provider over SMTP + IMAP.** Zoho, Fastmail, a self-hosted mail - server, anything that speaks SMTP and IMAP. Add the host, port, and an app - password. - -Each mailbox warms, sends, and syncs on its own, with its own daily cap, minimum -spacing between sends, and reputation tracked per IP. Replies stream into the -unified inbox in near real time. Credentials and OAuth tokens are sealed with -per-organization envelope encryption and are only decrypted on the worker that -owns the mailbox, never stored in plaintext. +Connect Gmail and Google Workspace with one-click OAuth, Microsoft 365 over its +own OAuth, or any other provider (Zoho, Fastmail, a self-hosted server) over +SMTP + IMAP. Each mailbox warms, sends, and syncs on its own, with its own daily +cap and spacing, and credentials sealed with per-organization envelope +encryption. See [Mailboxes](https://docs.warmbly.com/guides/mailboxes/). ## Integrations Automations and the built-in CRM connect out to the tools you already run: ping -Slack on a positive reply, push a won deal to your CRM, book meetings straight -from replies, or fan events out to your own stack. +Slack on a positive reply, push a won deal to your CRM, or book meetings straight +from replies. | Category | Providers | |---------------|----------------------------------------| @@ -71,24 +76,15 @@ from replies, or fan events out to your own stack. | Data | Google Sheets | Everything is also reachable through a scoped REST API, HMAC-signed webhooks, and -a realtime WebSocket, so you can wire Warmbly into anything that is not on the -list. Open tracking, click tracking, and reply detection feed the same event -stream. See the [API reference](https://docs.warmbly.com/api/). +a realtime WebSocket. See the [API reference](https://docs.warmbly.com/api/). ## Warmup -Warmup only produces meaningful results with a pool of real mailboxes warming -against each other. Warmbly maintains that pool, so the practical path to real -reputation is to run warmup through Warmbly: your mailboxes hold genuine -conversations with monitored inboxes instead of throwaway accounts, even if you -only have a few. If you operate enough mailboxes of your own to sustain a healthy -pool, you can host warmup yourself instead. - -Either way the safeguards are the same. Volume starts low and ramps gradually per -mailbox, replies happen at a natural rate, and every warmup message carries a -verification token. Mailboxes that show spam patterns or forged tokens are scored -and auto-blocked from the pool, so it stays clean for everyone in it. Free and -premium pools are kept separate. +Warmup only produces real results with a pool of real mailboxes warming against +each other, and Warmbly maintains that pool. Volume starts low and ramps +gradually per mailbox, replies happen at a natural rate, and mailboxes that show +spam patterns or forged tokens are scored and auto-blocked so the pool stays +clean for everyone. See [Warmup](https://docs.warmbly.com/guides/warmup/). ## Quick start @@ -99,81 +95,36 @@ git clone https://github.com/warmbly/warmbly && cd warmbly make dev ``` -That one command brings up the backing services in Docker (Postgres, Redis, -NATS), waits for them, applies migrations, seeds demo data, and starts the -backend, consumer, worker, dashboard, and admin natively, with realtime and -tracking as containers (so you need no Elixir or Rust toolchain). Open +One command brings up the backing services in Docker, applies migrations, seeds +demo data, and starts the backend, worker, and dashboard natively. Open `http://localhost:5173` and log in with `dev@warmbly.com` / `password123`. -Ctrl-C stops the app; the Docker infra stays up so the next `make dev` is fast. - -The Go services run natively (recompiling in a second or two on save), so the -same command is also the day-to-day loop. If you prefer separate terminals, the -stack splits into `make infra` + `make run` + `make web`. To run the whole -no-cloud stack in Docker instead, use `make up` (see [Self-hosting](#self-hosting)). - -The first admin account cannot be created from the UI. Sign up through the -dashboard, then promote yourself from the host with -`make grant-admin EMAIL=you@example.com` and open the admin app with `make admin`. -Full local setup, seeding, and troubleshooting live in the +Full setup, seeding, and troubleshooting live in the [local development guide](https://docs.warmbly.com/development/local-development/). ## How it works -Warmbly is split into a control plane and an execution plane. - -The control plane is the backend API, the event consumer, Postgres, Redis, and -the event bus. It owns every piece of stateful data and decides what gets sent -and from where. - -The execution plane is the worker fleet: one Go binary per machine. Workers take -commands off the event bus, fetch their encryption keys over HTTPS, send and sync -mail, and report telemetry back. **Workers never connect to Postgres.** They are -interchangeable executors, so you add throughput by running more of them; outbound -mail leaves through each mailbox's own provider (Gmail API, Graph, or SMTP relay), -not the worker's IP. - -Secrets use envelope encryption: a per-organization data key, wrapped by a root -key, seals mailbox credentials and message content. The root key is a local AES -master key by default (no cloud), or AWS KMS if you prefer. The full write-up is -in the [architecture docs](https://docs.warmbly.com/development/architecture/). +Warmbly splits into a control plane (backend API, consumer, Postgres, Redis, and +the event bus) that owns every piece of state, and an execution plane of +interchangeable Go workers that send and sync mail. **Workers never connect to +Postgres**, and outbound mail leaves through each mailbox's own provider (Gmail +API, Microsoft Graph, or SMTP relay), not the worker's IP, so you add throughput +by running more workers. Secrets use envelope encryption, with a local AES master +key by default or AWS KMS if you prefer. Full write-up in the +[architecture docs](https://docs.warmbly.com/development/architecture/). ## Self-hosting -Warmbly runs with **no cloud account of any kind**: no AWS, no GCP, no Stripe, -no Kafka. One command brings up the whole platform on local, open-source pieces: +Warmbly runs with **no cloud account of any kind**: no AWS, no GCP, no Stripe, no +Kafka. One command brings up the whole platform on local, open-source pieces: ```bash git clone https://github.com/warmbly/warmbly && cd warmbly make up # or: docker compose up --build ``` -Dashboard on `:5173`, admin on `:5174`, API on `:8080`. The first build compiles -the images once (a couple of minutes; they are CGO-free), then it is up. Load -optional demo data with `make up` running via -`docker compose --profile seed run --rm seed`. - -Before exposing it, set your own secrets in a `.env` next to `docker-compose.yml`. -At minimum: `AUTH_SECRET`, `CREDENTIALS_ENCRYPTION_KEY`, `INTERNAL_API_TOKEN`, -and `KMS_LOCAL_MASTER_KEY` (run `make gen-key`). The full list is in -[`deploy/config/env.example`](deploy/config/env.example). - -**Reaching it from another machine.** Every service already binds to `0.0.0.0` -(the Docker port mappings), so it listens on all interfaces. To make the app -usable from a LAN IP or a domain instead of `localhost`, set one variable in -`.env`, and everything (API URL, CORS, websocket, tracking, blob URLs) derives -from it: - -```bash -PUBLIC_HOST=192.168.1.50 # your machine's LAN IP, or your domain -``` - -Then open `http://192.168.1.50:5173`. For a public domain over HTTPS, put a -reverse proxy (Caddy or nginx) in front terminating TLS, set `PUBLIC_HOST` to the -domain, and build the frontends as static bundles rather than serving the Vite -dev server. - -Every external dependency is picked by an environment variable, so you swap in a -cloud service only if you want one: +Dashboard on `:5173`, admin on `:5174`, API on `:8080`. Every external dependency +is picked by an environment variable, so you swap in a cloud service only if you +want one: | Concern | Self-host default | Optional / cloud | |----------------|----------------------------|------------------------------| @@ -187,28 +138,9 @@ cloud service only if you want one: | Captcha | Off | Cloudflare Turnstile | | Payments | **Off (everything unlocked)** | Stripe | -NATS is the default because it is one small binary versus Kafka's -JVM + Zookeeper + Schema Registry, and it keeps the image CGO-free so builds are -fast. Kafka is fully supported: build the images with `--build-arg GO_TAGS=kafka` -(and the tracking image with `CARGO_FEATURES=kafka`), set `EVENTBUS_PROVIDER=kafka`, -and point `KAFKA_BOOTSTRAP_SERVERS` at your cluster. - -**Scaling is by mailboxes and workers, not IPs.** Outbound mail goes through each -mailbox's own provider (Gmail API, Microsoft Graph, or the mailbox's SMTP relay), -so the source IP is the provider's, never the worker's. Add throughput by -connecting more mailboxes and running more workers: `docker compose up --scale -worker=3`, or attach a machine you already own through the admin panel's SSH -enrollment. Workers are interchangeable executors. - -**Connecting Gmail mailboxes** needs your own Google Cloud OAuth client: set -`BOX_GOOGLE_CLIENT_ID` / `BOX_GOOGLE_CLIENT_SECRET` (a Web application client with -the authorized redirect URI `/addresses/google/callback`) on the -backend and every worker. Without it you can still connect any mailbox over -SMTP/IMAP with an app password, and Microsoft 365 over its own OAuth client. - -Keep two secrets safe: `KMS_LOCAL_MASTER_KEY` (`make gen-key`) and -`CREDENTIALS_ENCRYPTION_KEY` seal every stored mailbox credential, and losing them -is unrecoverable. Full env reference and day-2 operations are in the +Scaling is by mailboxes and workers, not IPs: add throughput by connecting more +mailboxes and running more workers. Reaching it from another machine, connecting +Gmail mailboxes, the secrets you must set, and day-2 operations are all in the [deployment guide](https://docs.warmbly.com/development/deployment-guide/). ## Tech stack @@ -237,7 +169,6 @@ guides, the API reference, and the engineering docs. Start here: | [Sandbox](https://docs.warmbly.com/development/sandbox/) | One command spins up a full demo org that sends, replies, opens, clicks, and warms itself | | [Architecture](https://docs.warmbly.com/development/architecture/) | How the control plane and the workers split the job, plus the encryption model | | [Deployment guide](https://docs.warmbly.com/development/deployment-guide/) | Taking it to production and scaling the worker fleet | -| [Event system](https://docs.warmbly.com/development/events/) | The event bus and every topic that flows across it | | [API reference](https://docs.warmbly.com/api/) | Endpoints, auth, permissions, and webhooks | ## Contributing diff --git a/docs/assets/README.md b/docs/assets/README.md index 2909bcc2..6be94522 100644 --- a/docs/assets/README.md +++ b/docs/assets/README.md @@ -5,7 +5,7 @@ loads quickly on GitHub. | File | Where it shows up | |-----------------------------|--------------------------------------| -| `banner.jpg` | Hero banner at the top of the README | +| `logo.svg` | Logo + wordmark at the top of the README | | `dashboard-campaigns.png` | Gallery: campaigns list | | `dashboard-inbox.png` | Gallery: unified inbox | | `dashboard-mailboxes.png` | Gallery: mailboxes and warmup state | diff --git a/docs/assets/banner.jpg b/docs/assets/banner.jpg deleted file mode 100644 index 91a3d165e8da4eeefa5f07de480cdf0498a6ed87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108588 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�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 v5a}C0x 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 diff --git a/docs/assets/logo.svg b/docs/assets/logo.svg new file mode 100644 index 00000000..f24f9915 --- /dev/null +++ b/docs/assets/logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + From 8079124c621b490693c7ec0a38b518e5c3a4ae67 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:09:21 +0200 Subject: [PATCH 05/17] docs: restructure readme into an insforge-style layout with a background-free light/dark logo, clear product summary, features list, how-it-works diagram, and a community section linking the discord --- README.md | 210 +++++++++++------------- docs/assets/README.md | 9 +- docs/assets/{logo.svg => logo-dark.svg} | 1 - docs/assets/logo-light.svg | 8 + 4 files changed, 110 insertions(+), 118 deletions(-) rename docs/assets/{logo.svg => logo-dark.svg} (99%) create mode 100644 docs/assets/logo-light.svg diff --git a/README.md b/README.md index 709a6303..4fd29e35 100644 --- a/README.md +++ b/README.md @@ -1,90 +1,95 @@ -

- Warmbly -

+
+ + + + Warmbly + -

- Open-source cold email and mailbox warmup you can self-host.
- Your sending IPs, your database, your servers. -

+

+ Open-source cold email and mailbox warmup you can self-host.
+ Connect your mailboxes, run sequenced campaigns, and warm your sender reputation, all on your own IPs and database. +

-

- CI status - Latest release - Go version - License - Documentation -

+

+ CI status + Latest release + Go version + License +

-

- Mailboxes · - Integrations · - Quick start · - Warmup · - How it works · - Self-hosting · - Docs · - Contributing -

+

+ Join our Discord + Documentation + Star on GitHub +

-## What is Warmbly - -Warmbly is a cold outreach platform you run yourself: your sending IPs, your -Postgres, your servers, nothing tied to a vendor's database. Connect your -mailboxes, write sequenced campaigns, and it sends the mail, tracks the replies, -and keeps your sender reputation healthy. +

+ Features · + How it works · + Quick start · + Self-hosting · + Docs · + Community +

+
https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b -Everything a sending team needs sits in one dashboard, collaborative in real time -so teammates see each other's presence and edits with no refresh: +## What is Warmbly + +Warmbly is a cold outreach platform you run on your own infrastructure. Connect +the mailboxes you already own, write multi-step campaigns, and Warmbly sends the +mail, tracks every open, click, and reply, and warms your sender reputation so +more of it lands in the inbox. + +The difference from hosted tools is where it runs: your sending IPs, your +Postgres, your servers. Nothing is tied to a vendor's database, and the same code +runs on a single VPS or a fleet of cheap machines. + +## Features - **Campaigns** send multi-step sequences with per-mailbox daily caps and spacing. -- **The unified inbox** pulls every connected mailbox and its replies into one view. -- **A built-in CRM** tracks contacts, pipelines, deals, tasks, and meetings. +- **Unified inbox** pulls every connected mailbox and its replies into one view. +- **Built-in CRM** tracks contacts, pipelines, deals, tasks, and meetings. +- **Warmup** builds real sender reputation through a pool of monitored mailboxes. - **Deliverability** surfaces bounces, complaints, suppression, and inbox placement. - **Automations** run branching reply playbooks on a visual canvas, with AI steps that read a reply and act on it. -- **Integrations** sync the CRM and automations out to HubSpot, Slack, and more. -- **Warmup** builds real sender reputation through a pool of monitored mailboxes. +- **Integrations** sync out to HubSpot, Slack, Zapier, and more, plus a REST API, webhooks, and a realtime WebSocket. +- **Real-time and collaborative** so teammates see each other's presence and edits with no refresh. -The same code runs on a single VPS or across a fleet of cheap servers, so you add -capacity by adding machines. +

+ Campaigns + Unified inbox +

-## Star the repository ⭐ +## How it works -warmbly-star +Warmbly splits into a **control plane** (backend API, consumer, Postgres, Redis, +and the event bus) that owns all state, and an **execution plane** of +interchangeable Go workers that send and sync mail. Workers never touch Postgres, +and outbound mail leaves through each mailbox's own provider, not the worker's IP, +so you add throughput by running more workers. -## Connect your mailboxes +```mermaid +flowchart LR + MB["Your mailboxes"] --> API + subgraph CP["Control plane"] + direction TB + API["Backend API"] --> DB[("Postgres")] + API --> BUS{{"Event bus"}} + end + BUS --> W1["Worker"] + BUS --> W2["Worker"] + BUS --> W3["Worker"] + W1 --> P["Gmail · Microsoft · SMTP"] + W2 --> P + W3 --> P + P --> R["Recipients"] +``` -Connect Gmail and Google Workspace with one-click OAuth, Microsoft 365 over its -own OAuth, or any other provider (Zoho, Fastmail, a self-hosted server) over -SMTP + IMAP. Each mailbox warms, sends, and syncs on its own, with its own daily -cap and spacing, and credentials sealed with per-organization envelope -encryption. See [Mailboxes](https://docs.warmbly.com/guides/mailboxes/). - -## Integrations - -Automations and the built-in CRM connect out to the tools you already run: ping -Slack on a positive reply, push a won deal to your CRM, or book meetings straight -from replies. - -| Category | Providers | -|---------------|----------------------------------------| -| CRM | HubSpot, Salesforce, Pipedrive, Close | -| Automation | Zapier, Make, n8n | -| Notifications | Slack, Discord | -| Meetings | Calendly, Cal.com | -| Data | Google Sheets | - -Everything is also reachable through a scoped REST API, HMAC-signed webhooks, and -a realtime WebSocket. See the [API reference](https://docs.warmbly.com/api/). - -## Warmup - -Warmup only produces real results with a pool of real mailboxes warming against -each other, and Warmbly maintains that pool. Volume starts low and ramps -gradually per mailbox, replies happen at a natural rate, and mailboxes that show -spam patterns or forged tokens are scored and auto-blocked so the pool stays -clean for everyone. See [Warmup](https://docs.warmbly.com/guides/warmup/). +Secrets use envelope encryption, with a local AES master key by default or AWS KMS +if you prefer. Full write-up in the +[architecture docs](https://docs.warmbly.com/development/architecture/). ## Quick start @@ -97,21 +102,10 @@ make dev One command brings up the backing services in Docker, applies migrations, seeds demo data, and starts the backend, worker, and dashboard natively. Open -`http://localhost:5173` and log in with `dev@warmbly.com` / `password123`. -Full setup, seeding, and troubleshooting live in the +`http://localhost:5173` and log in with `dev@warmbly.com` / `password123`. Full +setup lives in the [local development guide](https://docs.warmbly.com/development/local-development/). -## How it works - -Warmbly splits into a control plane (backend API, consumer, Postgres, Redis, and -the event bus) that owns every piece of state, and an execution plane of -interchangeable Go workers that send and sync mail. **Workers never connect to -Postgres**, and outbound mail leaves through each mailbox's own provider (Gmail -API, Microsoft Graph, or SMTP relay), not the worker's IP, so you add throughput -by running more workers. Secrets use envelope encryption, with a local AES master -key by default or AWS KMS if you prefer. Full write-up in the -[architecture docs](https://docs.warmbly.com/development/architecture/). - ## Self-hosting Warmbly runs with **no cloud account of any kind**: no AWS, no GCP, no Stripe, no @@ -122,55 +116,45 @@ git clone https://github.com/warmbly/warmbly && cd warmbly make up # or: docker compose up --build ``` -Dashboard on `:5173`, admin on `:5174`, API on `:8080`. Every external dependency -is picked by an environment variable, so you swap in a cloud service only if you -want one: +Every external dependency is picked by an environment variable, so you swap in a +cloud service only if you want one: | Concern | Self-host default | Optional / cloud | |----------------|----------------------------|------------------------------| | Database | PostgreSQL 16 | RDS / Cloud SQL, any Postgres | | Cache | Redis (or Valkey) | ElastiCache | -| Event bus | **NATS JetStream** (~15 MB, one binary) | Kafka (`-tags kafka`) | +| Event bus | **NATS JetStream** | Kafka (`-tags kafka`) | | Blob storage | **Filesystem** | S3, MinIO, R2, B2 | | KMS / root key | **Local AES master key** | AWS KMS | -| Task scheduler | **In-process Postgres poller** | GCP Cloud Tasks | -| Codec | JSON | Avro + Schema Registry | -| Captcha | Off | Cloudflare Turnstile | | Payments | **Off (everything unlocked)** | Stripe | -Scaling is by mailboxes and workers, not IPs: add throughput by connecting more -mailboxes and running more workers. Reaching it from another machine, connecting -Gmail mailboxes, the secrets you must set, and day-2 operations are all in the +Scaling is by mailboxes and workers, not IPs. Reaching it from another machine, +connecting Gmail, and day-2 operations are all in the [deployment guide](https://docs.warmbly.com/development/deployment-guide/). -## Tech stack - -| Component | Tech | -|-------------|-----------------------------------| -| Backend API | Go 1.25 + Gin | -| Consumer | Go (event-bus driven) | -| Worker | Go (Kafka / NATS subscriber) | -| Tracking | Rust + Axum | -| Realtime | Elixir + Phoenix Channels | -| Dashboard | React 19 + Vite + Tailwind v4 | -| Admin UI | React 19 + Vite + Tailwind v4 | -| Database | PostgreSQL 16 | -| Cache | Redis 7 (or Valkey / KeyDB) | -| Event bus | NATS JetStream (default) or Kafka | - ## Documentation -The full docs live at **[docs.warmbly.com](https://docs.warmbly.com)**: product -guides, the API reference, and the engineering docs. Start here: +The full docs live at **[docs.warmbly.com](https://docs.warmbly.com)**. | Read this | To learn | |-----------|----------| | [Local development](https://docs.warmbly.com/development/local-development/) | Every make target, the native services, and how seeding works | -| [Sandbox](https://docs.warmbly.com/development/sandbox/) | One command spins up a full demo org that sends, replies, opens, clicks, and warms itself | -| [Architecture](https://docs.warmbly.com/development/architecture/) | How the control plane and the workers split the job, plus the encryption model | +| [Architecture](https://docs.warmbly.com/development/architecture/) | How the control plane and workers split the job, plus the encryption model | | [Deployment guide](https://docs.warmbly.com/development/deployment-guide/) | Taking it to production and scaling the worker fleet | | [API reference](https://docs.warmbly.com/api/) | Endpoints, auth, permissions, and webhooks | +## Community + +Have a question, found a bug, or want to shape where Warmbly goes next? + +- **[Discord](https://dc.warmbly.com)** - chat with the team and other senders +- **[GitHub Issues](https://github.com/warmbly/warmbly/issues)** - report bugs and request features +- **Email** - reach us at `team@warmbly.com` + +## Star the repository ⭐ + +warmbly-star + ## Contributing Pull requests are welcome. Keep each one to a single logical change, and open an diff --git a/docs/assets/README.md b/docs/assets/README.md index 6be94522..351f0ebf 100644 --- a/docs/assets/README.md +++ b/docs/assets/README.md @@ -5,10 +5,11 @@ loads quickly on GitHub. | File | Where it shows up | |-----------------------------|--------------------------------------| -| `logo.svg` | Logo + wordmark at the top of the README | -| `dashboard-campaigns.png` | Gallery: campaigns list | -| `dashboard-inbox.png` | Gallery: unified inbox | -| `dashboard-mailboxes.png` | Gallery: mailboxes and warmup state | +| `logo-dark.svg` | Logo + wordmark, white, for dark GitHub theme | +| `logo-light.svg` | Logo + wordmark, dark ink, for light GitHub theme | +| `dashboard-campaigns.png` | Features: campaigns list | +| `dashboard-inbox.png` | Features: unified inbox | +| `dashboard-mailboxes.png` | Spare product screenshot (mailboxes) | The dashboard images are exports of the product design. When real, anonymized screenshots of the running app are available, swap them in at the same paths and diff --git a/docs/assets/logo.svg b/docs/assets/logo-dark.svg similarity index 99% rename from docs/assets/logo.svg rename to docs/assets/logo-dark.svg index f24f9915..c61d9dec 100644 --- a/docs/assets/logo.svg +++ b/docs/assets/logo-dark.svg @@ -1,5 +1,4 @@ - diff --git a/docs/assets/logo-light.svg b/docs/assets/logo-light.svg new file mode 100644 index 00000000..70e61a1e --- /dev/null +++ b/docs/assets/logo-light.svg @@ -0,0 +1,8 @@ + + + + + + + + From f8a69de71c6ea3f52664e1f0c89a674441d328d2 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:12:40 +0200 Subject: [PATCH 06/17] docs: tighten the readme headline to 'cold email and mailbox warmup, self-hosted', add vertical breathing room around the logo, and cut the intro and feature lines to compact non-marketing phrasing --- README.md | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 4fd29e35..2a6cea06 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,16 @@
+
+
- Warmbly + Warmbly +
+
+
-

- Open-source cold email and mailbox warmup you can self-host.
- Connect your mailboxes, run sequenced campaigns, and warm your sender reputation, all on your own IPs and database. -

+

Cold email and mailbox warmup, self-hosted.

CI status @@ -37,25 +39,19 @@ https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b ## What is Warmbly -Warmbly is a cold outreach platform you run on your own infrastructure. Connect -the mailboxes you already own, write multi-step campaigns, and Warmbly sends the -mail, tracks every open, click, and reply, and warms your sender reputation so -more of it lands in the inbox. - -The difference from hosted tools is where it runs: your sending IPs, your -Postgres, your servers. Nothing is tied to a vendor's database, and the same code -runs on a single VPS or a fleet of cheap machines. +Self-hosted cold email and mailbox warmup. Connect the mailboxes you own, send +sequenced campaigns, and warm your reputation, all on your own IPs and Postgres. ## Features -- **Campaigns** send multi-step sequences with per-mailbox daily caps and spacing. -- **Unified inbox** pulls every connected mailbox and its replies into one view. -- **Built-in CRM** tracks contacts, pipelines, deals, tasks, and meetings. -- **Warmup** builds real sender reputation through a pool of monitored mailboxes. -- **Deliverability** surfaces bounces, complaints, suppression, and inbox placement. -- **Automations** run branching reply playbooks on a visual canvas, with AI steps that read a reply and act on it. -- **Integrations** sync out to HubSpot, Slack, Zapier, and more, plus a REST API, webhooks, and a realtime WebSocket. -- **Real-time and collaborative** so teammates see each other's presence and edits with no refresh. +- **Campaigns** - multi-step sequences with per-mailbox caps and spacing +- **Unified inbox** - every mailbox and reply in one place +- **CRM** - contacts, pipelines, deals, tasks, meetings +- **Warmup** - a pool of monitored mailboxes, not throwaway accounts +- **Deliverability** - bounces, complaints, suppression, inbox placement +- **Automations** - visual reply playbooks with AI steps +- **Integrations** - HubSpot, Slack, Zapier, REST API, webhooks +- **Realtime** - live presence and edits across your team

Campaigns From 6d2845086785f7becdcfb981c3b658c1704ab5c3 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:34:14 +0200 Subject: [PATCH 07/17] docs: collapse the readme badges to one row, cut the logo padding, and add an insforge-style positioning-plus-detail description above the demo video instead of a separate what-is section --- README.md | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 2a6cea06..c7f9fcf8 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,21 @@

-
-
- Warmbly + Warmbly -
-
-
- -

Cold email and mailbox warmup, self-hosted.

- CI status - Latest release - Go version - License + The open-source cold email and warmup platform you host yourself.
+ Warmbly runs campaigns from your own mailboxes and warms them so they keep landing in the inbox, with every open, click, and reply synced to one dashboard.

- Join our Discord - Documentation - Star on GitHub + Discord + Docs + CI status + Latest release + License

@@ -37,11 +30,6 @@ https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b -## What is Warmbly - -Self-hosted cold email and mailbox warmup. Connect the mailboxes you own, send -sequenced campaigns, and warm your reputation, all on your own IPs and Postgres. - ## Features - **Campaigns** - multi-step sequences with per-mailbox caps and spacing From 7f055829dee788d5499f1c8a9cb64edc1a952f32 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:36:25 +0200 Subject: [PATCH 08/17] docs: move the product explanation into a titled Warmbly section between the header and the demo video, leaving just the tagline in the header --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c7f9fcf8..23e8fa3e 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,7 @@ Warmbly -

- The open-source cold email and warmup platform you host yourself.
- Warmbly runs campaigns from your own mailboxes and warms them so they keep landing in the inbox, with every open, click, and reply synced to one dashboard. -

+

The open-source cold email and warmup platform you host yourself.

Discord @@ -28,6 +25,13 @@

+## Warmbly + +Warmbly runs cold email campaigns from the mailboxes you already own and warms +them so they keep landing in the inbox. Opens, clicks, replies, and deliverability +sync back to one dashboard, and because you host it, your sending IPs and your +data stay yours. + https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b ## Features From 44fe5e2450b43ef4ef793466f4f44278b6b01b9c Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:41:28 +0200 Subject: [PATCH 09/17] docs: reword the tagline to 'the open-source agentic cold email and warmup platform' and rewrite the Warmbly section around realtime tracking, live collaboration, and AI agents --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 23e8fa3e..2184e530 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Warmbly -

The open-source cold email and warmup platform you host yourself.

+

The open-source agentic cold email and warmup platform.

Discord @@ -29,8 +29,9 @@ Warmbly runs cold email campaigns from the mailboxes you already own and warms them so they keep landing in the inbox. Opens, clicks, replies, and deliverability -sync back to one dashboard, and because you host it, your sending IPs and your -data stay yours. +land in a shared dashboard the moment they happen, your team works in it together +with live presence and cursors, and AI agents draft replies, research contacts, +and run the steps inside your automations. https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b From f02c00109a81fb355860ff3a81007bd1b9e961ea Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:44:09 +0200 Subject: [PATCH 10/17] docs: add a little vertical padding around the header tagline and shorten the Warmbly blurb to call it AI-native instead of listing agent tasks --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2184e530..7af68dde 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,10 @@ Warmbly +

The open-source agentic cold email and warmup platform.

+

Discord @@ -28,10 +30,9 @@ ## Warmbly Warmbly runs cold email campaigns from the mailboxes you already own and warms -them so they keep landing in the inbox. Opens, clicks, replies, and deliverability -land in a shared dashboard the moment they happen, your team works in it together -with live presence and cursors, and AI agents draft replies, research contacts, -and run the steps inside your automations. +them so they keep landing in the inbox. Opens, clicks, and replies land in a +shared dashboard the moment they happen, and it's AI-native, so your team and its +agents work in it together, live. https://github.com/user-attachments/assets/378a510a-bb99-425f-925e-04300184938b From d878ae227d23418245d36d842252ef9bd1b70f09 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:48:27 +0200 Subject: [PATCH 11/17] docs: add a centered star-this-repo headline call to action at the bottom of the readme with the star image, replacing the mid-page star section --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7af68dde..0708f027 100644 --- a/README.md +++ b/README.md @@ -141,10 +141,6 @@ Have a question, found a bug, or want to shape where Warmbly goes next? - **[GitHub Issues](https://github.com/warmbly/warmbly/issues)** - report bugs and request features - **Email** - reach us at `team@warmbly.com` -## Star the repository ⭐ - -warmbly-star - ## Contributing Pull requests are welcome. Keep each one to a single logical change, and open an @@ -160,3 +156,11 @@ We prefer responsible disclosure and credit reporters in the release notes. ## License Apache License 2.0. Copyright 2026 Mindroot Ltd. See [LICENSE](./LICENSE). + +--- + +

+

⭐ Help us reach more senders and grow the Warmbly community. Star this repo!

+
+ warmbly-star +
From 89fb68ca77297ae1e40866c6686e7711a46798ea Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:51:33 +0200 Subject: [PATCH 12/17] docs: unbold the header tagline, balance its vertical padding, and move the star-this-repo headline and image up into the header instead of the bottom of the readme --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0708f027..28719377 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,9 @@ Warmbly
+
-

The open-source agentic cold email and warmup platform.

+

The open-source agentic cold email and warmup platform.


@@ -25,6 +26,10 @@ Docs · Community

+
+

⭐ Help us reach more senders and grow the Warmbly community. Star this repo!

+
+ Star Warmbly on GitHub
## Warmbly @@ -156,11 +161,3 @@ We prefer responsible disclosure and credit reporters in the release notes. ## License Apache License 2.0. Copyright 2026 Mindroot Ltd. See [LICENSE](./LICENSE). - ---- - -
-

⭐ Help us reach more senders and grow the Warmbly community. Star this repo!

-
- warmbly-star -
From b494d27a80ecfef89f96820473fd62d8bc354bcf Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:53:51 +0200 Subject: [PATCH 13/17] docs: restore the Star the repository section with the star image in place, add the help-us-reach line to it, and reduce the header tagline padding --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 28719377..1d63a6b3 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,8 @@ Warmbly
-

The open-source agentic cold email and warmup platform.

-

Discord @@ -26,10 +24,6 @@ Docs · Community

-
-

⭐ Help us reach more senders and grow the Warmbly community. Star this repo!

-
- Star Warmbly on GitHub ## Warmbly @@ -146,6 +140,12 @@ Have a question, found a bug, or want to shape where Warmbly goes next? - **[GitHub Issues](https://github.com/warmbly/warmbly/issues)** - report bugs and request features - **Email** - reach us at `team@warmbly.com` +## Star the repository ⭐ + +⭐ Help us reach more senders and grow the Warmbly community. Star this repo! + +warmbly-star + ## Contributing Pull requests are welcome. Keep each one to a single logical change, and open an From 0f1ede8f3c18ae4fd908317a33dbbb2a4d549ce4 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 08:56:26 +0200 Subject: [PATCH 14/17] docs: drop the duplicate star CTA line, add top and bottom padding inside the logo svg via its viewbox, and render the logo 1.5x bigger in the readme --- README.md | 5 +---- docs/assets/logo-dark.svg | 2 +- docs/assets/logo-light.svg | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1d63a6b3..d63469ab 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,8 @@ - Warmbly + Warmbly -

The open-source agentic cold email and warmup platform.

@@ -142,8 +141,6 @@ Have a question, found a bug, or want to shape where Warmbly goes next? ## Star the repository ⭐ -⭐ Help us reach more senders and grow the Warmbly community. Star this repo! - warmbly-star ## Contributing diff --git a/docs/assets/logo-dark.svg b/docs/assets/logo-dark.svg index c61d9dec..28b1e14a 100644 --- a/docs/assets/logo-dark.svg +++ b/docs/assets/logo-dark.svg @@ -1,4 +1,4 @@ - + diff --git a/docs/assets/logo-light.svg b/docs/assets/logo-light.svg index 70e61a1e..89428626 100644 --- a/docs/assets/logo-light.svg +++ b/docs/assets/logo-light.svg @@ -1,4 +1,4 @@ - + From dbd34ab6e47e5abc0e195f494f19a8ee9de25776 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 09:00:45 +0200 Subject: [PATCH 15/17] docs: put the star-this-repo call to action line back in the header headline block under the nav --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d63469ab..1a10bcbe 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ Docs · Community

+ +

⭐ Help us reach more senders and grow the Warmbly community. Star this repo!

## Warmbly From 87f792fbdc0c1fa5bd43ed5b5a5c84d1e2cbcd58 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 09:01:53 +0200 Subject: [PATCH 16/17] docs: make the header star call to action italic and not bold instead of a heading --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a10bcbe..d1ccec05 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Community

-

⭐ Help us reach more senders and grow the Warmbly community. Star this repo!

+

⭐ Help us reach more senders and grow the Warmbly community. Star this repo!

## Warmbly From 514d5d635a94c1ab31560736ee26b97b7dcb9539 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Wed, 22 Jul 2026 09:03:12 +0200 Subject: [PATCH 17/17] docs: reduce the top and bottom padding inside the logo svg from 40px to 16px each side --- docs/assets/logo-dark.svg | 2 +- docs/assets/logo-light.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/assets/logo-dark.svg b/docs/assets/logo-dark.svg index 28b1e14a..4f65a9ed 100644 --- a/docs/assets/logo-dark.svg +++ b/docs/assets/logo-dark.svg @@ -1,4 +1,4 @@ - + diff --git a/docs/assets/logo-light.svg b/docs/assets/logo-light.svg index 89428626..a354cd0a 100644 --- a/docs/assets/logo-light.svg +++ b/docs/assets/logo-light.svg @@ -1,4 +1,4 @@ - +