Every person, conversation, and touchpoint across your GTM tool stack, in one place.
Everything happening inside your GTM, visible to your agents.
Your GTM stack is fragmented. Apollo for prospecting, HubSpot for CRM, Smartlead for sequences, Gmail for email, LinkedIn for social. Each tool holds part of the picture, and none of them are queryable by an agent.
Nous resolves the fragmentation into one customer graph your agents can query.
- Identity resolution. Every contact across every tool, merged into one clean record. No duplicates, no gaps.
- Complete timeline. Every email, call, LinkedIn message, and CRM event in one place. Know exactly where a prospect stands before you act.
- Live sync. Outbound tools, communication tools, and CRM stay in sync.
- Agent-ready. Your agents query the full account in a single MCP call. No data wrangling.
- Revenue attribution. Tie campaigns, channels, and actions directly to pipeline and closed deals.
| Feature | What it does |
|---|---|
| Account record | Full context and activity history per person across every channel |
| MCP connector | One call returns the complete account record to any MCP-compatible agent |
| ICP scoring | Scores contacts against your ICP as new signals arrive |
| Inbound enrichment | Cleans and enriches inbound leads before they hit your CRM |
| Pattern analysis | Reports on wins, losses, and the campaigns actually driving pipeline |
| CRM sync | Enriches Salesforce, HubSpot, and Pipedrive while keeping them in sync |
| Layer | Stack |
|---|---|
| API | Node.js (ESM), Express |
| Frontend | Vite, React, shadcn/ui |
| Database | Supabase (PostgreSQL + pgvector) |
| MCP | @modelcontextprotocol/sdk |
| AI | Anthropic Claude |
| Package manager | pnpm workspaces |
Run the whole stack — API, worker, MCP server, frontend, Redis, and Caddy (automatic HTTPS) — with Docker Compose. You bring an external Supabase project (Postgres + auth) and an Anthropic API key; everything else runs in containers.
Prerequisites
- A Linux server with Docker + Docker Compose
- A Supabase project (free tier is fine)
- An Anthropic API key
- Three DNS records —
app,api,mcp— pointing at your server
# 1. Clone
git clone https://github.com/NousC/nous.git
cd nous
# 2. Configure
cp nous.env.example nous.env
# Fill in: APP_DOMAIN / API_DOMAIN / MCP_DOMAIN, your Supabase URL + keys,
# and ANTHROPIC_API_KEY. Generate the encryption key:
openssl rand -hex 32 # paste the output into ENCRYPTION_KEY=
# SELF_HOSTED=true is already set — it unlocks every feature, unmetered.
# 3. Create the database
# Open supabase/schema.sql in your Supabase SQL editor and run it once.
# 4. Launch (Caddy provisions TLS automatically once your DNS resolves)
docker compose --env-file nous.env up -d --buildOpen https://app.yourdomain.com and create the first account — it becomes the owner. To close public registration afterward, set DISABLE_SIGNUPS=true in nous.env (and turn off signups in Supabase → Authentication), then re-run ./update.sh. Invite teammates from Settings → Team.
Updating
./update.sh # pulls latest, rebuilds the containers, flags any new DB migrationsCRM Sync and Lead Lists are the only features reserved for Nous Cloud — everything else (the customer graph, MCP server, ICP scoring, enrichment, integrations) is fully open on self-host.
For contributing to Nous — runs the apps directly against your Supabase project, no Docker:
git clone https://github.com/NousC/nous.git
cd nous
cp .env.example .env # fill in Supabase + Anthropic keys
pnpm install
pnpm devAdd to your mcp.json (Claude Desktop, Cursor, or any MCP host):
{
"mcpServers": {
"nous": {
"command": "npx",
"args": ["-y", "@opennous/mcp"],
"env": {
"NOUS_API_KEY": "your-api-key",
"NOUS_API_URL": "https://api.yourdomain.com"
}
}
}
}Set NOUS_API_URL to your own API domain when self-hosting, or https://api.opennous.cloud on Nous Cloud. Grab your NOUS_API_KEY from Settings → API Keys (the in-app Install page generates this exact snippet for you).
- We do not scrape LinkedIn or any third-party platform
- Signal ingestion uses only official OAuth flows and approved webhooks
- No customer data is sent to third parties without explicit configuration