Crmsync
FreeNot checkedBidirectional, idempotent sync of contacts/deals between a local SQLite source-of-truth and CRM APIs (HubSpot/Pipedrive/Salesforce) via one config.
About
Bidirectional, idempotent sync of contacts/deals between a local SQLite source-of-truth and CRM APIs (HubSpot/Pipedrive/Salesforce) via one config.
README
CRMSYNC
Bidirectional, idempotent sync of contacts/deals between a local SQLite source-of-truth and CRM APIs (HubSpot/Pipedrive/Salesforce) via one config.
PyPI CI License: COCL 1.0 Suite
Part of the Cognis Neural Suite.
pip install cognis-crmsync
crmsync scan . # → prioritized findings in seconds
🔎 Example output
Real, reproducible output from the tool — runs offline:
$ crmsync-emit --version
crmsync 0.1.0
$ crmsync-emit --help
usage: crmsync [-h] [--version] [--format {table,json}] {diff,apply} ...
Idempotent sync & drift detection between a local SQLite canonical store and a versioned CRM export file (CSV/JSON).
positional arguments:
{diff,apply}
diff show drift between export and DB (exit 1 if drift
found)
apply sync DB to match export (idempotent)
options:
-h, --help show this help message and exit
--version show program's version number and exit
--format {table,json}
output format (default: table)
examples:
crmsync diff contacts.csv --db crm.db --key email
crmsync apply contacts.csv --db crm.db --key email
crmsync diff deals.json --db crm.db --key deal_id --format json
Blocks above are real
crmsyncoutput — reproduce them from a clone.
Sample result format (illustrative values — run on your own data for real findings):
{
"findings": [
{
"id": "123456789",
"title": "Suspicious Network Traffic",
"description": "Unusual network traffic detected from IP 192.168.1.100",
"severity": "medium",
"created_at": "2023-02-15T14:30:00Z"
},
{
"id": "987654321",
"title": "Malware Detected",
"description": "Malware detected on machine with IP 192.168.1.101",
"severity": "high",
"created_at": "2023-02-15T14:35:00Z"
}
]
}
Usage — step by step
Install the CLI (Python 3.9+):
pip install crmsync # or: pip install . from a checkoutDetect drift — the
diffsubcommand compares a versioned CRM export (CSV/TSV/JSON) against a local SQLite store and exits1when they differ:crmsync diff contacts.csv --db crm.db --table contacts --key emailSync the DB to match the export (idempotent) with
apply:crmsync apply contacts.csv --db crm.db --table contacts --key emailAdd
--no-deleteto keep DB rows that are absent from the export.Read drift programmatically with the global
--format jsonflag (it precedes the subcommand):crmsync --format json diff deals.json --db crm.db --key deal_id | jq .Gate CI on CRM consistency — the job fails (exit 1) whenever the export and DB drift apart:
crmsync diff contacts.csv --db crm.db --key email || echo "CRM export drifted from DB"
Contents
- Why crmsync? · Features · Quick start · Example · Architecture · AI stack · How it compares · Integrations · Install anywhere · Related · Contributing
Why crmsync?
A single MCP-native binary that makes your CRM a replica of a versioned local file — run it in CI to detect drift and reconcile without a $20k iPaaS contract.
crmsync is single-purpose, scriptable, and self-hostable: point it at a target, get prioritized results in the format your workflow already speaks (table · JSON · SARIF), gate CI on it, and let agents drive it over MCP.
Features
- ✅ Fingerprint
- ✅ Load Export
- ✅ Ensure Schema
- ✅ Load Db State
- ✅ Diff Records
- ✅ Apply Plan
- ✅ Runs on Linux/macOS/Windows · Docker · devcontainer
- ✅ Ports in Python, JavaScript, Go, and Rust (
ports/)
Quick start
pip install cognis-crmsync
crmsync --version
crmsync scan . # scan current project
crmsync scan . --format json # machine-readable
crmsync scan . --fail-on high # CI gate (non-zero exit)
Example
$ crmsync scan .
[HIGH ] CRM-001 example finding (./src/app.py)
[MEDIUM ] CRM-002 another signal (./config.yaml)
2 findings · risk score 5 · 38ms
Architecture
flowchart LR
IN[input] --> P[crmsync<br/>analyze + score]
P --> OUT[report]
Use it from any AI stack
crmsync is interoperable with every popular way of using AI:
- MCP server —
crmsync mcp(Claude Desktop, Cursor, Cognis.Studio, uncensored-fleet) - OpenAI-compatible / JSON — pipe
crmsync scan . --format jsoninto any agent or LLM - LangChain · CrewAI · AutoGen · LlamaIndex — wrap the CLI/JSON as a tool in one line
- CI / scripts — exit codes + SARIF for non-AI pipelines
How it compares
| Cognis crmsync | Airbyte | |
|---|---|---|
| Self-hostable, no account | ✅ | varies |
| Single command, zero config | ✅ | ⚠️ |
| JSON + SARIF for CI | ✅ | varies |
| MCP-native (AI agents) | ✅ | ❌ |
| Polyglot ports (JS/Go/Rust) | ✅ | ❌ |
| Open license | ✅ COCL | varies |
Built in the spirit of Airbyte/Singer taps, in the spirit of Grouparoo, re-framed the Cognis way. Missing a credit? Open a PR.
Integrations
Pipes into your stack: SARIF for code-scanning, JSON for anything, an MCP server (crmsync mcp) for AI agents, and a webhook forwarder for SIEM/Slack/Jira. See docs/INTEGRATIONS.md.
Install — every way, every platform
pip install "git+https://github.com/cognis-digital/crmsync.git" # pip (works today)
pipx install "git+https://github.com/cognis-digital/crmsync.git" # isolated CLI
uv tool install "git+https://github.com/cognis-digital/crmsync.git" # uv
pip install cognis-crmsync # PyPI (when published)
docker run --rm ghcr.io/cognis-digital/crmsync:latest --help # Docker
brew install cognis-digital/tap/crmsync # Homebrew tap
curl -fsSL https://raw.githubusercontent.com/cognis-digital/crmsync/main/install.sh | sh
| Linux | macOS | Windows | Docker | Cloud |
|---|---|---|---|---|
scripts/setup-linux.sh |
scripts/setup-macos.sh |
scripts/setup-windows.ps1 |
docker run ghcr.io/cognis-digital/crmsync |
DEPLOY.md (AWS/Azure/GCP/k8s) |
Related Cognis tools
- warmline — Score and rank inbound/outbound leads from a YAML rulebook, emitting a ranked queue as JSON/CSV for your SDRs and CI gates.
- coldforge — Render personalized cold-outreach sequences from Markdown templates + a contacts CSV, with spam-score linting and per-send dry-run preview.
- pactgen — Generate branded sales proposals and SOWs from a YAML scope file + pricing table into PDF/HTML, with a deterministic line-item math check.
- dripcheck — Lint email sequences and drip campaigns for deliverability: SPF/DKIM/DMARC, link health, unsubscribe presence, and CAN-SPAM/GDPR compliance.
- dealflow — Model your sales pipeline as a YAML state machine and compute conversion rates, stage velocity, and weighted forecast straight from CRM exports.
- introbot — Find warm-intro paths through your team's combined network graph and draft double-opt-in intro requests from a single contacts manifest.
Explore the suite → 🗂️ all 170+ tools · ⭐ awesome-cognis · 🔗 cognis-sources · 🤖 uncensored-fleet · 🧠 engram
Contributing
PRs, new rules, and demo scenarios are welcome under the collaboration-pull model — see CONTRIBUTING.md and SECURITY.md.
⭐ If
crmsyncsaved you time, star it — it genuinely helps others find it.
Interoperability
{} composes with the 300+ tool Cognis suite — JSON in/out and a shared
OpenAI-compatible /v1 backbone. See INTEROP.md for the
suite map, composition patterns, and reference stacks.
License
Source-available under the Cognis Open Collaboration License (COCL) v1.0 — free for personal, internal-evaluation, research, and educational use; commercial / production use requires a license ([email protected]). See LICENSE.
Installing Crmsync
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/cognis-digital/crmsyncFAQ
Is Crmsync MCP free?
Yes, Crmsync MCP is free — one-click install via Unyly at no cost.
Does Crmsync need an API key?
No, Crmsync runs without API keys or environment variables.
Is Crmsync hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Crmsync in Claude Desktop, Claude Code or Cursor?
Open Crmsync on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgres
Query your database in natural language
by AnthropicPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolRedis
Interact with Redis key-value stores.
by modelcontextprotocolSQLite
Database interaction and business intelligence capabilities.
by modelcontextprotocolmxcp
Open-source framework for building enterprise-grade MCP servers using just YAML, SQL, and Python, with built-in auth, monitoring, ETL and policy enforcement.
by raw-labstadas-github/a2asearch-mcp
MCP server to search 4,800+ MCP servers, AI agents, CLI tools and agent skills. Install: npx -y a2asearch-mcp. Ask Claude: "Find MCP servers for database access
by tadas-githubjulien040/anyquery
Query more than 40 apps with one binary using SQL. It can also connect to your PostgreSQL, MySQL, or SQLite compatible database. Local-first and private by desi
by julien040drakonkat/wizzy-mcp-tmdb
A MCP server for The Movie Database API that enables AI assistants to search and retrieve movie, TV show, and person information.
by drakonkatCompare Crmsync with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
