The open alternative to Clay, Apollo, and Outreach — run it on your own keys.
🌐 Website · 📚 Docs · 🏗️ Architecture · ⚡ Quick start · 💬 Discussions
Signal watches the web for buying signals (hiring changes, funding news, product launches, review shifts), enriches the companies and contacts behind them, drafts personalized outreach, and runs multi-step email sequences — all from a single chat-first workspace.
It's built for teams that want a CRM-adjacent tool they can read, fork, self-host, and extend. Instead of paying per seat for a black-box SaaS, run Signal on your own Supabase + Anthropic keys and own the pipeline end to end.
🧪 Signal is designed for single-tenant self-hosting — one Supabase project per team. See architecture.md before deploying for multiple independent teams.
⚠️ Upgrading from a pre-Clerk version? Auth has migrated from Supabase Auth to Clerk (Supabase remains the data layer). Take apg_dumpfirst — this migration is destructive and not reversible. It wipes all user-owned data (campaigns,chats,user_profile,api_usage,user_settings,email_drafts,sent_emails,sequences, plus user-authoredemail_skills) — old Supabase user UUIDs don't map to Clerk IDs. Built-in seed data and shared pools (organizations,people,signals) survive. Sign up for a free Clerk account (10k MAU free) and runpnpm setupto wire it up. See docs/setup.md § Clerk andsupabase/migrations/20260427000000_clerk_auth_migration.sqlif you need a custom backfill.
- 🛰️ Signals engine — authorable "recipes" that watch companies and surface buying triggers.
- 💬 Campaign workspace — chat-driven interface backed by Claude to research, shortlist, and draft.
- 🔎 Contact enrichment — pulls LinkedIn, GitHub, and company pages into a single profile.
- ✉️ Outreach sequences — multi-step emails via AgentMail with open / reply tracking.
- 🤖 Browser automation — Browserbase + Stagehand for the long tail of sites without APIs.
- 🔐 Own your data — Postgres + RLS on your Supabase; bring your own LLM keys.
- Framework — Next.js 16 (App Router) + React 19 + TypeScript
- Database — Supabase (Postgres + Auth + RLS)
- AI — Anthropic Claude via
@ai-sdk/anthropicand the Vercel AI SDK - Automation — Browserbase + Stagehand for browser tasks
- Email — AgentMail for send / reply / open tracking
- Jobs — QStash (Upstash) for scheduled signal runs
- UI — Tailwind CSS 4, shadcn/ui
- Testing — Vitest, Playwright
You'll need Node 20+, Docker, the Supabase CLI, a Supabase project (hosted or local), and an Anthropic API key.
git clone https://github.com/jay-sahnan/signal.git
cd signal
corepack enable # activates the pinned pnpm version
pnpm install
pnpm setup # interactive: prompts for required keys, runs migrations
pnpm dev # http://localhost:3000Prefer to configure by hand? Follow docs/setup.md.
cp .env.example .env
# fill in SUPABASE_URL + ANTHROPIC_API_KEY at minimum
docker compose up -dSignal does not bundle Supabase in the compose file — bring your own (hosted Supabase project or local supabase start). See docs/setup.md for the full walkthrough.
Issues and PRs welcome. Start with .github/CONTRIBUTING.md. AI-assisted PRs are fine — we build with Claude ourselves.
Looking for somewhere to start? Filter issues by good first issue.
- 🐛 Issues — bug reports and feature requests
- 💡 Discussions — questions, ideas, show & tell
- 🔒 Security — vulnerability disclosure
AGPL-3.0 with an optional enterprise carve-out for files explicitly tagged. See the license file for details.