Open sourceApache 2.0Self-hosted

CRM memory where every fact shows its source.

OpenCRM is an open-source system of record for AI agents. Each claim links to the email or transcript behind it, and disagreements stay flagged instead of overwritten.

Explore the demoSample data, no sign-up

The explorer is part of a deployment Attri runs for you. The REST API and MCP server are the open-source repo.

Ask any CRM where a fact came from.

Most CRMs keep the latest value in a field. OpenCRM keeps the claim, the sentence it came from, and every claim it replaced.

Where did this number come from?

Each observation names the field it covers and quotes the sentence it came from.

What changed, and why?

Old claims are superseded, not deleted, so the history stays readable.

Which facts disagree?

A conflict stays open, with both sources attached, until someone resolves it.

How it works

Your agent reads the evidence. OpenCRM keeps the chain.

Evidence

OpenCRM

Artifacts → observations → briefs

Every claim cites a source

ingest_artifact · email

Read by

  • Claude, via MCP 27 tools over stdio
  • Your app, via REST JSON over HTTP
  • Event log Entity changes, append-only
  • Export All data as JSON

Your agent reads the evidence and writes the claims. OpenCRM stores them, links them to their sources and keeps the history.

  1. 01

    Ingest

    Your agent saves the raw email, call or note as an artifact, fingerprinted with SHA-256.

  2. 02

    Claim

    Each fact becomes an observation that cites its artifact. A newer claim supersedes the old one instead of overwriting it.

  3. 03

    Answer

    Briefs cite the observations they use, and claims that disagree open a conflict a person resolves.

Compared with a CRM field

A field keeps the latest value. OpenCRM keeps the evidence.

CRMs were designed for people typing into forms. Agents write from emails and calls, so the record has to say where each fact came from.

A typical CRM field

One value, edited in place

Stores the valueWhere the value came from isn't part of the record.
Edits overwriteField history, where it exists, shows who changed it, not why.
The last write winsWhen two sources disagree, one value is left standing.
Notes without citationsA summary doesn't say which facts it relies on.
OpenCRMClaims linked to their sources
Stores the claim and its sourceEach observation cites the artifact it was taken from.
Changes supersedeThe old claim stays, marked superseded, with its own source.
Disagreements open a conflictBoth claims stay visible until a person resolves them.
Briefs cite observationsEvery brief lists the claims it was built from.

See the data model in the OpenCRM README

Use cases

For anyone whose agents keep customer records. Wherever a fact might be questioned later.

Sample: a deal in progress

Deal facts that cite the call.

Budget, decision maker and close date, each linked to the call or email where the buyer said it.

  • Every deal field cites its source
  • Slipped dates superseded, not overwritten
  • Conflicting signals flagged before the forecast

Enterprise

Run it yourself, or let Attri run it. Either way, it lives in your environment.

Self-hosted

Free and open source

Run OpenCRM on your own server and connect your agents to it today.

Hosted by you

  • Full source code under Apache 2.0
  • One SQLite file on your own server
  • Community support on GitHub
View on GitHub

Managed by Attri

Built into your environment

The evidence model is open source. Attri runs it inside your infrastructure and builds what production needs around it.

In your environment, run by Attri

  • Authentication and access control added for your team
  • Connectors to your email, calendar and existing CRM
  • Support from the team that builds OpenCRM
Talk to AttriSOC 2 Type II, stated by AttriHIPAA BAA available
  • Evidence chain

    Artifacts, observations, briefs and conflicts, linked end to end.

  • Append-only event log

    Entity changes can record the agent, the tool call and a prompt hash.

  • A source for each field

    List a record's observations to see which email or call each value came from.

  • Import and export

    Every record, in and out, as plain JSON.

Open source

Read the code. Run it today. Apache 2.0, running in minutes.

$ git clone https://github.com/Attri-Inc/open-crm.git
$ cd open-crm
$ npm install
$ cp .env.example .env
$ npm run seed
$ npm run dev
# REST API on http://localhost:8787
  • 27MCP tools for Claude
  • RESTAPI on port 8787
  • Apache 2.0License

Seeds sample CRM data with one command. Your own data, sign-in and connectors come with an Attri deployment.

Read the README on GitHub

Open source by Attri

Part of Open Tooling. Standalone projects, all Apache 2.0.

See every tool at opentooling.ai
  • CRM memoryTypeScript

    OpenCRM

    CRM memory for AI agents where every fact links to the email or transcript behind it.

    MCP tools
    27
    self-hosted
    SQLite
    You're hereGitHub
  • AI observabilityPython

    OpenWatch

    Traces every AI session, tool call and dollar to the person behind it.

    MCP tools
    14
    REST endpoints
    23
  • AccountingPython

    OpenLedger

    Books your agents can write to, and can't break. Every posting balances; corrections are reversals.

    MCP tools
    15
    local-first
    SQLite
  • PeoplePython

    OpenHR

    HR records your agents can update, and can't bend. Leave can't be overdrawn, and every asset has one holder.

    MCP tools
    31
    local-first
    SQLite
  • OperationsPython

    OpenERP

    Purchasing, stock and sales on a double-entry ledger. A bill that doesn't match its order and receipt is blocked.

    MCP tools
    47
    local-first
    SQLite

Every fact should show its source. Start with the agents you already run.

Run OpenCRM on sample data in minutes, or have Attri deploy it inside your environment with sign-in and connectors.