The agent connects via a skill file generated from the CRM's OpenAPI spec. Go to Settings, generate the file, drop it into your agent config, and the agent can create contacts, update deals, log notes, search records, and manage tasks.
The data model is a typed EAV: a `record_values` table with type-specific columns (text\_value, number\_value, date\_value, timestamp\_value, boolean\_value, json\_value, referenced\_record\_id). 17 attribute types, each stored natively.
When an agent queries "deals over $50k closing this month," it hits actual numeric and date columns. No string coercion.
Underneath is a real CRM: People, Companies, Deals (Kanban pipeline), Tasks, Notes, custom objects, compound filters, CSV import/export. There is also a built-in AI chat assistant (OpenRouter for model selection) for when you are inside the CRM yourself.
This is an experiment, not a finished product. There are rough edges and missing features (email sync, workflow automations, calendar integration are not built yet). But the core CRM loop and the agent integration both work today.
Tech stack: Next.js 15 (App Router), PostgreSQL 16, TypeScript, Drizzle ORM, Better Auth, Tailwind CSS v4. Deploys via Docker Compose on a single VPS.
Try the hosted version at https://openclaw-crm.402box.io (no setup) or self-host it.
GitHub: https://github.com/giorgosn/openclaw-crm Docs: https://openclaw-crm.402box.io/docs