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.