free & open source · AGPL-3.0

A CRM that's just
JSON files in git.

Built for AI agents and the humans who review them. No accounts, no cloud, no lock-in — your pipeline is plain files you can read, diff, and roll back, and your agents get a first-class MCP toolset.

uvx --from "jsoncrm[web,mcp]" jsoncrm serve

No install — uv runs it from PyPI · or pip install "jsoncrm[web,mcp]" · Python 3.10+ · 60-second quick start

$0, no seats, no credits data stays in your repo git history = audit log first-party MCP server

The state is the interface

Spreadsheets proved a CRM doesn't need an app. JSONCRM goes one step further: the structured state itself is the product, shared by humans and agents. Read the full philosophy →

🗂️

Files are the database

Leads, prospects, customers — one JSON array per stage. Open them in any editor, script them with anything, grep them. No hidden database, no export step.

📜

Git is the audit log

Every change is a diff you can review and a commit you can revert. Who touched a record, when, and why — solved by the tool you already trust.

🤖

Agents are first-class users

JSON is what LLMs read and write without friction. Instead of clicking a UI, the agent gets the actual state of the business — via CLI, MCP tools, or plain file I/O.

Everything a pipeline needs, nothing it doesn't

A single pip package. No containers, no database server, no signup.

🔀

Enforced pipeline

Stages and legal transitions live in .crm.json. promote and demote move records; invalid moves simply don't exist.

🖥️

Local web UI

jsoncrm serve gives humans a spreadsheet-like UI: inline editing, search, sort, pagination, dark mode — bound to the same files.

🔌

First-party MCP server

jsoncrm mcp exposes every CLI command as an MCP tool with matching schemas, so Claude, Cursor, or Codex can drive the CRM natively.

🧪

Dry-run by default available

Every write command takes --dry-run / --apply. Let an agent preview a change, review the JSON, then commit it explicitly.

🔍

Search & stats CLI

search, list, top, recent, and stats answer "who's in the pipe and what needs attention" in one line.

✅

Validation & hygiene

validate checks structural integrity. deduplicate, filter-competitors, and merge keep large intakes clean.

🗃️

Out-of-git backups

Git history won't save you from damage to .git itself. jsoncrm backup writes atomic ZIP snapshots outside the repo.

🔃

GitHub PR workflow

Run serve with a token and the "Open PR" button commits your pipeline and opens a pull request — review CRM changes like code.

One substrate, two kinds of user

Humans and agents operating on the same files — that's the whole idea.

👤

Humans

Browse and edit in the web UI (jsoncrm serve). Use the CLI for one-offs. Review changes as git diffs or GitHub PRs. No prompt engineering required.

🤖

AI agents

Read the JSON directly, or call the CLI / MCP tools. Score leads with external data, draft follow-ups, promote qualified records — every change auditable in git, every write previewable with --dry-run.

Try it in about a minute

No account, no cloud, no configuration service. A directory, three files, and a config.

1

Get it running

# zero install — web UI + MCP server, straight from PyPI uvx --from "jsoncrm[web,mcp]" jsoncrm serve

Or install: pip install "jsoncrm[web,mcp]" · core CLI only: uvx jsoncrm stats / pip install jsoncrm. Requires Python 3.10+ · on PyPI.

2

Create the CRM

mkdir my-crm && cd my-crm echo '[]' > leads.json echo '[]' > prospects.json echo '[]' > customers.json git init

Then save this as .crm.json — it defines the pipeline, identity field, and score scale:

{ "pipeline": { "stages": [ {"name": "leads", "file": "leads.json"}, {"name": "prospects", "file": "prospects.json"}, {"name": "customers", "file": "customers.json"} ], "transitions": {"leads": ["prospects"], "prospects": ["customers"]} }, "identity": {"primary": "linkedin_url", "fallback": ["id", "email"]}, "scores": { "order": ["⭐", "⭐⭐", "⭐⭐⭐", "⭐⭐⭐⭐", "⭐⭐⭐⭐⭐"], "disqualified": "❌" } }
3

Use it

jsoncrm add --database_file leads.json --item_json '{"name":"Alice Testerson","company":"TestPharma","linkedin_url":"https://linkedin.com/in/alice-testerson","score":"⭐⭐⭐⭐"}' jsoncrm search Alice jsoncrm stats jsoncrm serve # → http://127.0.0.1:7341

Open http://127.0.0.1:7341 and you have a pipeline with inline editing, search, and promote buttons — backed entirely by the files next to you.

Connect your agent

The MCP server speaks the same language as the CLI — same commands, same schemas, plus dry_run support on writes.

Claude Code

claude mcp add --transport stdio jsoncrm -- jsoncrm --config /absolute/path/to/.crm.json mcp

Claude Desktop

{ "mcpServers": { "jsoncrm": { "command": "jsoncrm", "args": ["--config", "/absolute/path/to/.crm.json", "mcp"] } } }

No MCP? Install the agent skill

mkdir -p .claude/skills/jsoncrm curl -fsSL https://raw.githubusercontent.com/pauling-ai/jsoncrm/main/skills/jsoncrm/SKILL.md \ -o .claude/skills/jsoncrm/SKILL.md

Workflow knowledge without a server — dry-run discipline, identity rules, intake flow. Codex/Cursor: append skills/AGENTS-snippet.md to your AGENTS.md.

Any stdio MCP client works (Cursor, Codex, …). Then ask your agent things like "score the unscored leads in my CRM" or "promote everyone at ⭐⭐⭐⭐ or above and show me a dry run first." Full walkthrough: the MCP setup guide · recipes: the agent cookbook.

How it compares

The AI-native CRM category is being built in the cloud, priced in seats and credits. Here, it's a git repo.

JSONCRM Hermit CRM Twenty Attio Spreadsheet
Price Free, OSS Free, OSS $0 self-host · $9–19/user/mo cloud 3 free seats · $35–79/seat/mo + AI credits ~free
Your data lives in JSON files in your git repo Markdown in your git repo A Postgres DB you run, or their cloud Their cloud An .xlsx attachment near you
History & audit git log / git revert git log DB backups, audit logs (paid tier) Vendor's internal log "pipeline_FINAL_v3.xlsx"
AI agent access CLI + MCP + dry-run, unmetered MCP server API (rate-limited) + MCP Credits-metered AI CSV-mangling roulette
Infrastructure pip install pip install Docker + Postgres None (it's their cloud) None
Web UI Local (serve) Local Full hosted app Full hosted app The spreadsheet is the UI
License AGPL-3.0 Apache-2.0 AGPL-3.0 (core) Proprietary —

Competitor pricing as of Oct 2026 — verify before buying. We're aiming to be the "just works and it's yours" column, not the cheapest column.

FAQ

The questions everyone asks about a CRM made of files.

Why JSON instead of Markdown or a database?

JSON is the structure language models read and write natively — no parsing prose, no ORM, no connection string. And unlike a database, files stay human-inspectable, diffable, and portable. If you want a CRM that's mostly notes about conversations, a Markdown-native tool like Hermit CRM is a great fit; if you want structured records an agent can compute over (scores, stages, bulk updates), JSON is the better substrate.

Where does my data live, really?

In JSON files inside a git repository on your machine (or your GitHub org). There is no JSONCRM account, no cloud, no telemetry. Because git history doesn't protect against damage to .git itself, jsoncrm backup also writes atomic ZIP snapshots outside the repository.

I don't use AI agents. Is this still for me?

Yes — start with jsoncrm serve. You get a local spreadsheet-style UI with inline editing, search, sorting, and promote/demote buttons, plus a CLI for quick lookups. The agent story is additive: it becomes valuable the day you ask an assistant to help with your pipeline.

How do multiple people collaborate?

The same way developers collaborate on code: branches, commits, and pull requests. The web UI's "Open PR" button (run serve with --github-token and --repo) commits pipeline changes to a branch and opens a PR for review.

Is it production-ready?

It's 1.0 and dogfooded daily — Pauling.AI runs its own outbound pipeline on JSONCRM. Guardrails you'd want before trusting it with real data are in: structural validation, dry-run previews on every write, atomic file writes, and out-of-git backups. As with any young tool, keep the repo backed up.

What does it cost? Can I use it at my company?

It's free under AGPL-3.0. Companies that want to embed it without AGPL obligations can get a commercial license from info@pauling.ai.

Your CRM is a git repo.

Clone it, diff it, script it, let an agent run it. Star the repo while you're here.