Comp AI CRM Free and open source Runs on your own server

Your CRM fills itself in. With proof.

An agent looks up every new contact and company, then writes down only what it can back up. Free to run. You cover your own AI usage.

Get the free setup guide

By Raj Singh · October 2026 · 7 min read

FREE SETUP GUIDE

Get it running tonight.

  • The local setup, with the two steps the quick start skips
  • The one key the app insists on before it lets you in
  • Why the agent sits idle on a laptop, and the line that wakes it
  • The settings I change first, and why
  • Turning off the daily usage report

One email opens every guide in the library.

One email. No follow-up unless I ship something that fits.

WHAT YOU NEED
  • Bun. The repo pins Bun 1.3.12. I ran it on 1.4.2 without trouble.
  • Node 24 for the agent. The repo says Node 22 or newer, but the agent's framework refuses to start below 24. The app and API run on less.
  • Postgres 17. The repo's docker compose file starts it for you. A local Postgres with user and password postgres works too.
  • A way to sign in. A Google OAuth client, a Microsoft Entra app, or both. There is no email and password login.
  • An AI Gateway key if you run it anywhere other than Vercel. This is the model the agent thinks with, and the only thing you pay for.
  • A Context API key. The docs call outside sources optional. The app still stops you at a screen asking for this one. More on that below.
INSTALL

Six commands, then two terminals

Clone the default branch, release. It is the last tagged version. main is unreleased work.

terminalfirst run
git clone https://github.com/trycompai/crm.git && cd crm cp .env.example .env bun install docker compose up -d bun run db:deploy bun run db:seed Seeded 15 companies, 45 contacts, 23 deals, 159 activities, 5 exchange rates, 7 company fields.

Fill in .env before the next step (the table in Configure). Then the quick start says bun run dev. In any terminal that cannot draw Turbo's interface (a server, an SSH session, an AI agent's shell) it exits at once:

what I got19 Oct 2026
x Cannot run interactive task "agent#dev" without Terminal UI.

Run the app and API in one terminal and the agent headless in a second. The second command is the one the project's own setup notes give.

terminal 1app :3000, API :3001
bun run dev --filter=api --filter=app
terminal 2agent :2000, Node 24
bunx turbo run dev:headless --filter=agent [agent] off Web research (PERPLEXITY_API_KEY) [agent] off Company brand data (Settings → General) [agent] off LinkedIn (Settings → General) [agent] off Picture storage (BLOB_READ_WRITE_TOKEN)
Prove itOpen localhost:3000 and sign in. That startup list is the agent telling you which places it can look. Each "off" line is one key you have not added yet. It still runs with all of them off.
CONFIGURE

One file, and why each line matters

There is one .env at the repo root, read by all three processes. Real environment variables win over it.

settingwhat to putwhy
BETTER_AUTH_SECREToutput of openssl rand -base64 32Signs every login session. Empty means no sign in.
ALLOWED_SIGN_INyourcompany.com or you@gmail.comThe whole permission model. It has no default, so empty means nobody gets in.
GOOGLE_CLIENT_ID and _SECRETboth, or neitherRedirect URI http://localhost:3001/api/auth/callback/google. Enable the Gmail and Calendar APIs. Half a pair is a button that fails.
AGENT_URLhttp://127.0.0.1:2000Not localhost. The agent's dev server listens on IPv4 only.
AGENT_BRIDGE_SECREToutput of openssl rand -base64 32Turns on the Agent tab, and lets the API wake the agent when you add a company. Same value for every process.
AI_GATEWAY_API_KEYyour Vercel AI Gateway keyThe model. Not needed on Vercel itself. Without it nothing gets researched.
CRM_TELEMETRY_DISABLED"1"Telemetry is on by default: one anonymous event of counts a day. The project says no names or amounts are sent. I still turn it off.

The model is a setting, not a variable. The default is zai/glm-5.2-fast, chosen on purpose: the project relies on its evidence rules, not a frontier model, to refuse wrong answers. Change it on the settings page.

DAILY USE

Add people, then read what it found

Adda company or contactThe agent queues a look at them. With a Context key the logo, industry and real company name arrive first.
Watchthe Agent tabEvery record has one: the steps as it takes them, the leads it threw away and why.
SettlesuggestionsStrong evidence is written to the record. Weak evidence becomes a suggestion for you to accept or reject.
Askany recordType a question on the record. When it cannot choose between two people, it asks you in place.
Returnfollow upsIt books its own recheck dates and shows you the reason for each one.
The habitConnect your mailbox first. Your own email threads and signature blocks are free, and the project calls them the best evidence there is. Mail access is read only and starts from the day you connect.
THE TRAPS

What goes wrong, and the fix

Stuck on "Level up your CRM data"
Every page sends you back to the Context key screen. The docs say it plainly: the gate cannot be dismissed. Add a Context key. Without AGENT_BRIDGE_SECRET the key is saved without being checked, which is how I got past it with a placeholder to look around. Company research stays off until the key is real.
"eve requires Node.js >=24"
The agent will not start on Node 20 or 22. Install Node 24 and run the agent terminal with it on your path.
The queue grows and nothing is researched
The local agent never runs its schedule on a timer. Set AGENT_BRIDGE_SECRET so new rows wake it, or run bun run --filter=agent dispatch by hand. That one uses real credits.
Your laptop is writing to production
vercel env pull writes .env.local, which wins over .env. Pull somewhere harmless instead: vercel env pull .env.vercel.
Agent tab shows 503, 401 or 502
503: the secret is missing in the app. 401: the processes hold different secrets. 502: the agent is not running, or AGENT_URL says localhost.
Nobody can sign in
ALLOWED_SIGN_IN is empty, or you set only half of the Google or Microsoft pair.
THE SHAPE OF IT

What's in the repo

apps/agent/the research agent: 18 tools, 4 skills, 1 schedule apps/app/the web app you use, on port 3000 apps/api/sign in, mail sync and data, on port 3001 packages/db/the database schema and migrations docs/setup.mdthe project's own notes on local runs

Your data lives in your Postgres. Single company by design: one install, one team, no accounts for other organisations.

That is the whole thing

Six commands, two terminals, one key the app insists on, and a mailbox connected first. After that, new contacts arrive researched, with the proof on the record.

Open on GitHub →

↑ Unlocks the moment you submit the form above.

RS
WRITTEN BY

Raj Singh

I'm Raj Singh. I've led ecommerce at two Fortune 100 companies, and at one of them I ran about $8M a year in ads for four years. I've worked with AI since 2019. Now my engineering team and I ship AI products, including debtops.ai. Each guide here is written from a real install, with the output dated.

2
Fortune 100 companies
~$8M
A year in ads, at one
2019
Working with AI
37
Guides shipped
More guides

Now give the agent a cheaper brain.

The FreeLLMAPI guide cuts what the research costs you, and the OpenBot guide is the same idea for the rest of your work: an AI coworker you can watch.