Open-Source Cold Email & Warmup Platform
Warmbly 是開源的冷郵件平台:溫暖您的收件箱、發送活動、並對每個回覆進行分流。可在我們的雲端運行或自行託管整個系統。
AI 翻譯
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證The open source AI SDR. Build your own, in your voice — you are the one who sends.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
An open source AI SDR you build yourself. It researches the lead, writes in your
voice, and you are the one who sends.
Nobody is selling you a product here. The hard part of outbound was never the software —
it is your voice, your context and your judgment. Those live in plain files that belong
to you. This repo is the structure around them.
That interview is the whole idea: ~25 minutes of questions about how you actually write,
and it produces the two files that drive everything — your voice and your market.檢視完整 README ↗An open source AI SDR you build yourself. It researches the lead, writes in your voice, and you are the one who sends.
Nobody is selling you a product here. The hard part of outbound was never the software — it is your voice, your context and your judgment. Those live in plain files that belong to you. This repo is the structure around them.
git clone https://github.com/nottgod/roger.git && cd roger
npm run onboarding
That interview is the whole idea: ~25 minutes of questions about how you actually write, and it produces the two files that drive everything — your voice and your market.
Status: public beta. 231 tests, zero dependencies, and a handful of people who already found the first eighteen rough edges. One thing you should know before you count on it: the sending arm has never typed a message into the real LinkedIn. Everything around it is tested against a fake browser. If you go there, you go first — and I want to hear what happened. The rest is yours to break: see FEEDBACK.md and CONTRIBUTING.md.
I hope you fork me.
Roger is not a tool you configure once. It is a handful of plain files that belong to you, and it gets better because you feed it: every time a message lands or falls flat, you learn something about how you sell — put it in the files. Nobody else is editing them, which is why no two Rogers write alike.
The loop: you point it at a lead → it decides whether the lead is worth writing to → it researches what it can → it builds a briefing → your model writes the message → your voice guard checks it → you approve it → it gets sent.
rapport/operators/<you>/voice.json, which configures a hard filter that blocks any
message that does not sound like you.rapport/contexts/<you>/icp.md.| Node 22 or newer | The core itself has zero dependencies. |
| A Claude or a ChatGPT | Required. Roger does not write the message: it decides who is worth writing to, researches them, and builds the briefing. Your model writes from it. There is no model key in this repo and there will not be — yours is already paid for, and you should not have to buy a second one. |
| Research keys | Required in practice. Exa and Firecrawl, paid by you. Without them Roger writes from whatever is in your spreadsheet, and tells you so. The hook is the difference between a message that gets answered and one that does not. |
| Your leads | A CSV works (name,company,country,... — English or Portuguese headers). A Kommo CRM also works. |
| To send | Two ways. By hand: the panel has a copy button, and you paste it into LinkedIn yourself — nothing to install. Or the arm: npm i playwright && npx playwright install chromium, plus one manual LinkedIn login in a window Roger opens. The arm is what keeps the books (what went out, to whom, when) — by hand, that part is on you. |
npm run doctor # tells you exactly what is missing
npm test # 231 tests, no network
npm run onboarding # the interview
npm run draft # the briefing, ready to paste into your model
npm run panel # read, edit, approve
npm run arm # send what you approved
A human approves every message. The approval is a state, not a gesture: the queue the sender reads only contains what you approved, and editing a message after approving it reopens the approval, because what you read changed.
Your leads only. If you connect a CRM, you declare your own user id, and Roger refuses to read or write anything that belongs to a teammate. It never moves a deal stage and never marks anything lost.
scripts/roger/ the engine (Node, no dependencies)
lib/voice.mjs your voice, as data
lib/send-gates.mjs every reason to refuse a send, as pure functions
lib/journal.mjs what it is about to do, written down before it does it
rapport/
operators/<you>/ your voice ← the interview writes this
contexts/<you>/ your market ← the interview writes this
cadencia-funil.md your cadence, editable
Change those markdown files and the behaviour changes. No code involved — that is the point of the whole design.
MIT. Take it, break it, adapt it to your company, build one better than this.
Roger that.