AgentSDR is an open-source, self-hosted AI SDR workspace that runs outbound across email, LinkedIn and WhatsApp from a single place, and pairs that outreach with an AI CRM. Teams use it to build sequences, import and enrich lead lists, contact prospects on the channel that fits, and let AI read and classify every reply before an answer is drafted from their own knowledge base. Rather than renting several separate outbound subscriptions, they keep leads, campaigns and conversations in one workspace that they run on their own server with their own model key.
The Product Hunt listing positions AgentSDR as the open-source AI SDR workspace that replaces Clay, Smartlead, HubSpot "and many more." The landing page makes the same point visually with a wall of familiar tools — Smartlead, Clay, Instantly, HubSpot, HeyReach, Attio, lemlist, Salesforce, Apollo.io, Pipedrive, Expandi, Close, Outreach, Lusha, Salesloft, Hunter, Waalaxy and folk. Outbound work is normally scattered across sending tools, enrichment tools and a CRM, and each one needs its own subscription, its own data import and its own login. AgentSDR's answer is to put reach, triage and measurement in one workspace: sequences on email, LinkedIn and WhatsApp inside each channel's limits, every reply classified by AI with the answer already drafted, and replies, meetings and customers measured by channel in a single view.
Email is the first channel. Sequences run from your own Google Workspace mailboxes, connected through a service account with domain-wide delegation, and they can be multi-step. Any CSV or XLSX column can be used as a {{merge field}}, and {A|B} spin text lets one step read differently per lead. Each mailbox carries its own daily cap (30 by default), sending window and signature, and several campaigns can share the same pool of mailboxes, which are assigned round-robin. List hygiene is handled at send time with one-click unsubscribe and automatic bounce suppression. AgentSDR deliberately does not record opens or clicks, so reply rate is the engagement metric to watch rather than open or click rates.
LinkedIn runs through Unipile and can spread sending across several accounts. A typical sequence is an invite, an accept message and three follow-ups. Pacing stays inside LinkedIn's limits: 30 invites a day on premium accounts and 5 on free, with a randomised 30–60 second gap between invites and sending only inside each account's working hours; an account that hits LinkedIn's own limit pauses for the day. Search batches can pull up to 400 leads a day per account into campaigns. Every LinkedIn reply lands in one thread view with an AI draft already prepared, so nothing depends on remembering to check a separate LinkedIn inbox.
WhatsApp is the third channel, and it is built around calling. Linking your number through Unipile and installing the AgentSDR Call Recorder Chrome extension lets you dial a lead from AgentSDR; the extension places the call inside WhatsApp Web and records both sides. The recording goes to your own storage bucket and your chosen model transcribes it. Unanswered leads can be called again after 1, 2 and 4 days, and messages sync as well, with a 24-hour warm-up for new numbers and a limit of 25 new chats a day per number. WhatsApp calling relies on WhatsApp Web's English interface.
The AI CRM and inbox is where the three channels converge. Every reply is classified as Interested, Customer, Not interested or Other — or into stages you define yourself — and the answer is drafted from your knowledge base and held for approval. Every follow-up step in a reply sequence is drafted for review too. The inbox is keyboard-first: J and K move, Enter opens, and ⌘K jumps anywhere. Autonomy is deliberately narrow. The AI can move a lead forward in the pipeline on its own when it is confident, but a backward move, a low-confidence classification and every new Customer are held for a person. Drafts wait in "Action required" until someone sends them, as written or edited, and analytics track how many drafts went out as-is, edited or discarded, along with the override rate for labels a person changed.
Underneath the channels sits one database of people and companies, shared by every channel. You import CSV or XLSX, add your own columns (text, number, date, select) and match duplicates on email or LinkedIn. Enrichment tables go further: a column can call an API, run a formula, ask your model or pull from Apollo, and the finished table can be turned into a campaign directly. Every AI call — classification, reply drafts, transcription and AI table columns — runs on your own OpenRouter key, pinned to the provider you chose, with fallbacks turned off so data only goes where you decided. Leads, conversations and call recordings live in your Postgres and your own storage bucket; recordings are reached only through short-lived signed links, and provider keys are encrypted at rest with AES-256-GCM. There is no hosted AgentSDR service in the middle.
Deployment is the other half of the design. AgentSDR is free and open source, and you run it yourself. The quick start is a clone, a copy of the example environment file (database URL, auth secret, encryption key), and docker compose up — after which the app answers on localhost:3000 with Postgres, schema, app and scheduler in place. It needs a machine that runs Docker and PostgreSQL 16 or newer, though the Compose file brings its own database. Because it is a TypeScript Next.js app on Postgres, adding a column type, an enrichment provider or your own channel is ordinary application work, and issues and pull requests are welcome on GitHub. One deployment can also hold several organizations, each with its own leads, inboxes and connected accounts, fully separate from the others; teammates sign in with their own accounts and are invited as owners, admins or members.
The benefits follow from that combination. Replies, meetings and customers are measured by channel in one analytics view, so you can see which channel actually brings conversations in, alongside counts of interested, customer, not interested, other and unclassified replies, funnel stages, drafts sent and the override rate. Guardrails run on every channel — daily caps, sending windows, warm-up for new numbers and Do Not Contact honoured everywhere — which keeps sending behaviour inside the limits the channels themselves enforce. Because the AI proposes rather than sends, the human stays in the loop: low-confidence classifications wait for review, and drafts sit in a queue until someone approves them. And because leads, conversations, recordings and model keys stay on your infrastructure, your data is not handed to a third-party SaaS vendor.
Concrete workflows follow the channels. A sales team imports a CSV of leads, enriches company data in a table with an AI column, and creates an email campaign from that table, letting the mailbox pool pace itself under daily caps. A founder runs LinkedIn outreach across two accounts with an invite, accept message and three follow-ups, and answers replies from the unified thread view. A rep places WhatsApp calls from AgentSDR, gets a transcript written by their own model, and queues retries for the leads who did not pick up. An agency runs several organizations in one deployment, each with separate leads, inboxes and connected accounts. Throughout, the AI CRM keeps a priority queue of conversations waiting on a person, follow-ups that are due, and drafts to review.
AgentSDR targets sales and go-to-market teams, founders doing their own outbound, and agencies running campaigns for multiple clients — anyone who wants multi-channel outreach and an AI-assisted CRM without per-seat or per-contact fees. The integrations it connects are your own accounts: Google Workspace for email mailboxes, Unipile for LinkedIn and WhatsApp accounts, OpenRouter for every AI step, and Cloudflare R2 for call recordings, plus optional lead enrichment integrations for emails, phones and company data in Tables (Hunter, Lusha, RocketReach, Snov, FullEnrich, LeadMagic, Findymail, ZeroBounce, Apollo and others). The stack is Next.js 16, React 19, TypeScript, Postgres, Drizzle, Tailwind 4, Bun and Docker. Pricing is simply free and open source: no seats, tiers or per-contact fees — you pay for your server, the accounts you connect, and your own AI usage.
The takeaway is that AgentSDR turns outbound into one owned system: reach on email, LinkedIn and WhatsApp inside each channel's limits, triage where every reply is classified and every answer drafted, and measurement that shows replies, meetings and customers by channel. Because it is open source and self-hosted, your leads, conversations, recordings and model key never leave your infrastructure, and you can change how it works.