Open-Source Cold Email & Warmup Platform
Warmbly is the open-source platform for cold email: warm your mailboxes, send campaigns, and triage every reply. Run it on our cloud or self-host the whole thing.
The open source AI SDR. Build your own, in your voice. MIT, free, built in public.
MarketingJavaScriptGitHub @nottgodOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The open source AI SDR. Build your own, in your voice — you are the one who sends.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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.Read the full 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.