Open-Source Cold Email & Warmup Platform
Warmbly는 메일함을 예열하고 캠페인 전송·답변 triage를 지원하는 오픈소스 콜드 이메일 플랫폼입니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.