Open source · Apache 2.0 · Runs on your machine

Open CRM

Relationship management for people and their agents. Every fact shows its source, and nothing an agent proposes lands until you approve it.

The demo is the real browser edition with synthetic records. No sign-up, and whatever you type stays in your own browser storage.

Accounts · Northstar Robotics

An Open CRM account: the brief before a conversation, what we know with the note behind each claim, and who decides.

We built this for ourselves. Open CRM carries the way we run our own accounts at Zentrik, the same operating model we depend on every day, published as its own product rather than described in a blog post.

What an ARM is

A CRM assumes a person keeps the file

An ARM, Agent Relationship Management, assumes a person and their agents keep it together, which changes what the records have to guarantee. Four properties make a system one, and Open CRM is the first open implementation.

01One write path
The app, the crm command, and the MCP server submit the same validated operations. No agent-only side channel, no import that skips the checks.
02Everything shows its source
What you know is recorded as claims that cite the notes behind them. A claim without evidence is drawn as a hunch wherever it appears.
03Nothing lands unapproved
An agent change is validated, then held as a proposal with its evidence until a person decides. Direct mode is deliberate, and it is logged.
04The records are yours
One folder, readable formats, no hosted account. The model is small enough to read in an afternoon, so you can shape it to your own work.

Why this exists

Click any line and read where it came from

What you know about an account is recorded as claims: needs, risks, goals, objections, commitments, facts. Each cites the notes that say so.

Open the trace and the chain is there: the source, the person who said it, what was taken from it, and the action it now supports. That is the bargain that makes an agent safe to let near your records.

Trace · Why this exists

The trace panel: the note and person a claim rests on, and the action it supports.

The weekly pass

Every account by stage, and what several are saying at once

Each tile carries the one thing worth noticing, and you can filter for what is thin: overdue commitments, unsourced claims, no one who signs off, stale evidence.

Below the lanes, the Book shows what several accounts are saying at once. That is where account work starts becoming product work.

Book · every account by stage

The Book: every account in its stage lane, with patterns across accounts below.

The review gate

An agent proposes. You decide

Every change an agent makes is validated, then held with the evidence behind it until you approve or reject it. Proposals that build on each other are approved in order.

Switch a workspace to direct mode when you trust the loop. Every direct change is still logged with the name of whoever made it.

Review · changes waiting for approval

The Review screen, where an agent's proposed changes wait with their evidence.

Start

Two commands, then open the folder in your agent

Needs Node 22.18 or newer. No database, no account, no API key. The workspace folder is the product: your agent reads its contract, runs the same command you do, and proposes work you review in the app.

Create a workspace and open the app

git clone https://github.com/Zentrik-AI/zentrik-open-crm.git
cd zentrik-open-crm && npm install
npm run crm -- init ~/crm --demo
cd ~/crm && ./crm ui

Point an agent at the same folder

cd ~/crm
claude        # or codex, or open the folder in Cursor

Ask it to run the daily review. Its proposals appear under Review as it works, each carrying the notes behind it.

The same app runs without any of this: the browser edition keeps records in your own browser storage, and a workspace folder is what adds the agent loop.

Where Zentrik fits

Account work stays in Open CRM. Product decisions happen in Zentrik

Open CRM notices when several accounts say the same thing and stops there. Deciding what to build from that evidence is product work.

When a pattern is worth acting on, it hands over the sources behind it: the notes, the accounts they came from, and the identity that keeps a retry from duplicating anything. An agent connected to the Zentrik MCP server can ingest the same bundle directly. The handoff carries sources, never conclusions, and only when someone asks for it.

Questions

Before you clone it

Is Open CRM really open source?

Yes. It is Apache 2.0 on GitHub, and it runs on your machine. Fork it, change it, or run it for your team without asking us.

Does it send my CRM data to Zentrik?

No. Records stay in your browser storage or in your workspace folder. The app makes no outbound request at all unless you add your own Anthropic key for the optional in-app AI.

Do I need Zentrik to use it?

No. Open CRM is a complete CRM on its own. Zentrik matters when account evidence turns into a product decision: the CRM notices when several accounts say the same thing and hands over the sources behind it, and you decide what to build in Zentrik.

Do you use this yourselves?

Yes. Open CRM is the way we run our own accounts at Zentrik, published as its own product. That is also why the boundary with Zentrik is drawn where it is: we wanted account work and product decisions to stay separate in our own work before we asked anyone else to adopt it.

Which agents can work it?

Claude Code, Codex, and Cursor read the contract in the workspace folder and run the crm command directly. Anything that can run a shell command or speak MCP can work the same records.

Can an agent change a record without me?

Not in review mode, which is the default. Proposals wait under Review with the evidence behind them until you approve or reject. You can switch a workspace to direct mode when you trust the loop, and every change still carries the name of whoever made it.

Start with one relationship worth remembering

Clone it, give your agent a workspace it can actually work, and tell us where the first five minutes were confusing.