Skip to content
Matt Dula edited this page Apr 18, 2026 · 1 revision

FAQ

Why build another CRM in 2026?

Not another CRM — an agent-native one. Incumbents price per seat. Agents aren't seats. Nakatomi runs dozens of agents on a single $20–50/mo Postgres. Also: everything the user owns is in Postgres they control.

Why not just use HubSpot's API?

HubSpot assumes a human sitting in front of a browser. Its API wasn't designed for an agent that calls it 300 times a minute, doesn't remember what it wrote last, and wants to reason over a graph. Nakatomi's shape — cursor pagination, idempotency keys, relationship graph, MCP tools, describe_schema, soft delete, timeline — falls out of starting from the agent.

Can I migrate from HubSpot / Salesforce / Pipedrive?

Not built-in yet. See ROADMAP.md. For now: export from your current tool, transform to Nakatomi's /import shape (documented under Export-Import), and POST it. Agents can do the transform step.

Does it do email?

No. Email is a solved problem — Gmail MCP, Hostinger email, Outlook, etc. Agents already have those connectors. Nakatomi stores the structured residue (an activity with kind="email_log") after the agent sends the email elsewhere. See ETHOS §3.

Does it do calendar, marketing automation, SMS, ...?

Same answer. Agents bring those tools. Nakatomi is the spine.

Can I run it without Docker?

Yes — see the native install in Deployment. Requires Python 3.12 + a reachable Postgres 13+.

Why Postgres? Why not SQLite?

JSONB. The data field on every entity, the payload field on every timeline event, the default_value on custom fields — all JSONB. Also: SELECT ... FOR UPDATE SKIP LOCKED for the webhook worker. SQLite would force us to reinvent both.

How do I give an agent only read access?

Mint an API key with "role": "readonly". See Authentication.

How do I rotate an API key?

Revoke the old, mint a new, update the agent's config. There's no "rotate" primitive — a rotating key is a deleted key + a new key.

How do I back up a workspace?

GET /export on a schedule. Ship to S3. To restore: POST /import on the target. See Export-Import.

How do I add a custom field?

POST /custom-fields. Values live in the row's data JSONB — register the key so agents know it's expected. See Custom-Fields.

Does it support multi-tenant hosting?

Yes. Workspaces are first-class. One deployment can host N workspaces; API keys scope to their workspace; data is isolated by workspace_id on every query.

Does it do SSO?

Not in v1. JWT + API keys today. SSO (Google / GitHub OIDC) is on the v2 roadmap.

Can an agent accidentally delete all my data?

Soft-delete is the default on DELETE /.... Rows get deleted_at set but stay in the DB — pass ?hard=true to actually drop them. Agents that don't pass hard=true can't nuke the workspace. Don't give agents owner roles.

How fast is it?

One uvicorn on a small Railway plan handles ~200 write/sec sustained against a Railway Postgres. Budget 1-3 row-writes per CRM mutation (entity

  • timeline event + sometimes an audit row). Plenty for most agent deployments. Scale horizontally when you cross 500 writes/sec.

Is there a Python / TypeScript SDK?

Not yet. The OpenAPI spec at /openapi.json works with every code generator out there. And MCP clients get typed tools for free through describe_schema.

Can I contribute?

Please do. PRs, issues, and AgentLab patterns all welcome. See CONTRIBUTORS.md.

Who builds this?

Matt Dula (matt@mrdula.solutions) and contributors. See AUTHORS.md.

License?

MIT. See LICENSE.

Clone this wiki locally