mothermachine

Browse / SMB ops and CRM

EspoCRM

AGPL PHP CRM with a documented REST API, OpenAPI spec and official SDKs in seven languages.

AdaptableOperable Business appWeb app Deterministic PHPJavaScriptTypeScript API License: AGPL-3.0

Leads, contacts, opportunities, campaigns and support cases in a fast single-page app on a PHP REST backend. Configure through data/config.php and the admin UI; extend through the custom/ metadata layer without touching core. The REST API (API key or HMAC) covers CRUD, relationships, search, attachments, metadata and mass actions; workflows and reports are paid extensions.

Use it when
  • I need a mature CRM on a cheap PHP host with a REST API our agent can use today
  • I want to add our own entities and fields without maintaining a fork
Gotchas
  • Workflows, BPM and reports are paid extensions
  • AGPL-3.0 and a CLA for contributions
  • Cron must run for email, workflows and scheduled jobs

Last activity Sep 3, 2026. Fit: adaptable 2, operable 3.

Editions

Self-hosted · Free open source

Cloud · Free closed source

Paid extensions (Advanced Pack, Sales Pack, Google, Outlook) · Free closed source

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only4 things to edit

Runtime settings are data/config.php and data/config-internal.php (database, site URL, mail, cron). Entities, fields, layouts and labels are metadata JSON edited in the admin UI or dropped into custom/Espo/Custom/Resources; the docs describe a JSON Schema for every parameter. Core code stays untouched, which keeps upgrades clean.

Env vars
none
Config files
data/config.php data/config-internal.php custom/Espo/Custom/Resources/metadata/ custom/Espo/Custom/Resources/layouts/
Prompt files
none
Accounts you need
SMTP providerEspoCRM account (cloud or paid extensions)

Source

Operable: what an agent can drive

Interface

OfficialAPIpublished by the builderremote or local

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
docs.espocrm.com/development/api/

Reach

Partial coverage. 7 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
CRUD on leads, contacts, accounts, opportunities, casesReachabledocs.espocrm.com API: CRUD on entities at api/v1/
Link and unlink related recordsReachableAPI: relationships
Search and filterReachableAPI: search with where clauses
Attach filesReachableAPI: attachments
Mass update, delete, assignReachableAPI: mass actions
Read the data modelReachableAPI: metadata; OpenAPI at /api/v1/OpenApi from v9.3
Post to the activity streamReachableAPI: stream
Send email and run campaignsUndeterminedEmail entity is CRUD-able; sending endpoint not confirmed on the API index
Workflows and BPMNot reachableAdvanced Pack is a paid extension; not in the free edition
ReportsNot reachableReports are a paid extension

Code stack

Languages
PHPJavaScriptTypeScript
Frameworks
custom SPA frameworkComposer
Package manager
composer + npm
Database
MySQLMariaDBPostgreSQL
Hosting target
Apache/NGINXDockerTraefik
Built
Human-written (recorded, never ranked)

Evidence and confidence

FieldWhere it was seenConfidence
formFactorREADME Architecture: SPA front end with PHP REST backend95%
executionModelNo model dependency in README85%
operabilitydocs.espocrm.com/development/api: api/v1, API key or HMAC, OpenAPI, SDKs in PHP, JS, Python, Rust, Java, Go, Zig95%
effortREADME: metadata described by JSON Schema; docs administration/server-configuration75%
editionsREADME: free open source; espocrm.com cloud and extensions70%
activeGitHub pushedAt 2026-09-03–
reach80%

Open questions

  • Cloud and extension prices
  • Does the API expose email sending and campaign execution?

Sources