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.