Modern CRM for AI-powered Sales Development Representatives (SDR)
Hermes is a lightweight, self-hosted CRM designed for solo developers and small teams who want to automate their outreach workflow using AI agents.
- π Lead Pipeline β Track leads from scrape to close with customizable stages
- π€ AI-First API β Endpoints designed for agent automation (OpenClaw, LangChain, etc.)
- π§ Template System β Reusable outreach templates with variable substitution
- π Analytics β Conversion funnel, response rates, and daily stats
- β Task Management β Follow-ups, calls, and action items with due dates
- π SQLite β Zero-config database, portable, easy backups
| Layer | Technology |
|---|---|
| API | Hono + Zod |
| Database | Prisma + SQLite |
| Frontend | React 19 + TanStack Query |
| Styling | Tailwind CSS v4 |
| Build | Turborepo + pnpm |
# Clone
git clone https://github.com/nicodlz/hermes.git
cd hermes
# Install
pnpm install
# Setup database
pnpm db:generate
pnpm db:push
pnpm db:seed
# Start development
pnpm dev- API: http://localhost:3001
- Web: http://localhost:5173
| Endpoint | Method | Description |
|---|---|---|
/api/ai/digest |
GET | Daily summary with action items |
/api/ai/next-actions |
GET | Pending tasks and leads needing attention |
/api/ai/qualify/:id |
POST | Score a lead with AI analysis |
/api/ai/outreach/:id |
POST | Generate outreach from template |
| Endpoint | Method | Description |
|---|---|---|
/api/leads |
GET | List with filters (status, score, search) |
/api/leads/:id |
GET | Full details with notes and messages |
/api/leads |
POST | Create lead |
/api/leads/:id |
PATCH | Update status, contact info |
/api/leads/bulk |
POST | Batch create from scraper |
/api/tasksβ Task management/api/templatesβ Message templates/api/statsβ Analytics and metrics/api/sourcesβ Scraping source config
See full documentation in skills/hermes/SKILL.md.
NEW β QUALIFIED β CONTACTED β RESPONDED β CALL β PROPOSAL β WON
β β β
ARCHIVED ARCHIVED FOLLOWUP_1 β FOLLOWUP_2 β LOST
Default Ideal Customer Profile (ICP):
- Budget: $1k-10k
- Stack: React, TypeScript, Node.js, Next.js, Web3
- Timeline: 2-6 weeks
- Work style: Remote, async
Scoring rules:
+10Has [Hiring] tag+10Budget mentioned+5Remote position+5Per matching technology-20Red flag (equity only, unpaid test, etc.)
Qualify threshold: 15+
Hermes uses Magic Link authentication β no passwords required!
- User enters email β receives magic link
- Click link β session created (30-day cookie)
- API keys for agents/integrations
For agents like Atlas/OpenClaw, use API keys:
# Create via UI (Settings β API Keys) or admin endpoint
curl -X POST https://hermes.ndlz.net/api/admin/api-keys \
-H "X-Admin-Secret: $ADMIN_SECRET" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","name":"Atlas Agent"}'
# Use the key
curl https://hermes.ndlz.net/api/leads \
-H "X-API-Key: hms_xxxxxxxxxxxx"| Variable | Required | Description |
|---|---|---|
DATABASE_URL |
Yes | SQLite path: file:/app/data/hermes.db |
PORT |
No | API port (default: 3001) |
RESEND_API_KEY |
Yes | Resend API key for emails |
FROM_EMAIL |
No | Sender email (default: hermes@ndlz.net) |
APP_URL |
No | App URL for magic links (default: https://hermes.ndlz.net) |
ADMIN_SECRET |
No | Secret for admin API (generate with openssl rand -hex 32) |
docker build -t hermes .
docker run -p 3001:3001 -v hermes-data:/app/data hermesdocker-compose up -d- Connect repository
- Build:
pnpm install && pnpm db:generate && pnpm build - Start:
node apps/api/dist/server.js - Add volume for
/app/data(SQLite persistence)
Add the Hermes skill to your workspace:
cp -r skills/hermes ~/.openclaw/workspace/skills/Example cron job for daily digest:
schedule:
kind: cron
expr: "0 9 * * *"
tz: "Europe/Lisbon"
payload:
kind: agentTurn
message: "Check Hermes daily digest: GET /api/ai/digest"
sessionTarget: isolatedAny agent that can make HTTP requests works. Example with curl:
# Get what needs attention
curl http://localhost:3001/api/ai/next-actions
# Qualify a lead
curl -X POST http://localhost:3001/api/ai/qualify/abc123 \
-H "Content-Type: application/json" \
-d '{"score": 35, "reasons": ["+budget", "+remote"]}'hermes/
βββ apps/
β βββ api/ # Hono API server
β βββ web/ # React frontend
βββ packages/
β βββ db/ # Prisma schema & client
βββ skills/
β βββ hermes/ # OpenClaw skill
βββ docker-compose.yml
MIT Β© Nicolas Timon