
Kontor is an open-source ERP, CRM and business-operations suite built natively for ProcessWire. Its 35 components share one audited core and one permission-aware admin workspace while remaining independently installable.
Author: Maxim Semenov
Website: smnv.org
Support development: GitHub Sponsors · smnv.org/sponsor
What Kontor Does
- Customers and revenue: contacts, companies, CRM intake, leads, pipelines, catalog, quotations, orders, invoices, payments and allocations.
- Operations: inventory, purchasing, expenses, projects, tasks, collaboration, files, documents, mail and customer portal.
- Finance and localization: double-entry ledger foundations and German business-document support.
- Platform: queue, cache, search, reports, dashboards, workflows, automation, custom entities and settings migration.
- Integration: authenticated REST resources, OpenAPI, webhooks, GraphQL and a scoped MCP provider for agent workflows.
- Optional intelligence: provider-neutral AI summaries, drafting and extraction with approval boundaries.
The root Kontor module owns the service container, migrations, audit, backups, import/export and component registries. ProcessKontor composes the admin experience from domain traits under src/ProcessKontor/Traits/; business rules remain in their owning packages.
Admin Area
After installation, Admin → Kontor provides a single responsive workspace. Navigation only exposes installed components for which the current user has permission. Administrators can inspect component health, audit activity, backups, data exchange and settings migration without bypassing package ownership or organization boundaries.
Public and Integration Surfaces
Kontor does not take over a site's frontend. A site profile composes public pages with documented module services. Optional integration surfaces are:
- REST:
/api/kontor/v1/* - GraphQL:
/graphql - customer portal routes supplied by
KontorPortal - 13 scoped MCP tools supplied by
KontorMCP
Exact PHP calls, stability rules and examples are documented in API.md. Agent and site-building boundaries are documented in AGENTS.md.
Requirements
- ProcessWire 3.0.240 or newer
- PHP 8.2 or newer
- required PHP extensions: DOM, JSON and ZIP
- a ProcessWire-supported database; the automated suite covers SQLite plus database-gated contracts
Installation
- Copy the repository to
site/modules/Kontor/. - Run
composer install --no-dev in that directory. - In ProcessWire Admin, choose Modules → Refresh and install Kontor.
- Install only the component modules required by the approved site Blueprint; ProcessWire enforces declared module dependencies.
- Assign the smallest required
kontor-* permissions to each role and verify anonymous, member, editor and administrator paths.
Upgrades are migration-driven. Ordinary uninstall removes module wiring but deliberately preserves business tables and stored data. Back up and explicitly plan any later data removal.
Development and Testing
composer install
composer validate --strict
vendor/bin/phpunit
The release-candidate procedure, package matrix, persistent local ProcessWire environment and evidence are in TESTING.md and E2E_STATUS.md. External mail, payment, webhook, AI and storage services must be replaced by deterministic local fakes during tests.
Components
Kontor 1.0.0 contains 35 packages: AI, API, automation, cache, catalog, collaboration, contacts, CRM intake, CRM, dashboard, demo, documents, custom entities, expenses, files, Germany, GraphQL, inventory, invoices, ledger, mail, marketplace, MCP, payments, portal, projects, purchasing, queue, reports, sales, SDK, search, settings, tasks and workflow.
See docs/PACKAGES.md for responsibilities and dependency relationships, and docs/KONTOR-SPECIFICATION.md for the architecture.
Documentation
License
Kontor is released under the MIT License. © 2026 Maxim Semenov.