Modular open-source ERP/CRM platform - Go backend, PostgreSQL, installable apps, and a TypeScript workspace client for enterprise operations.
Sumeru is a modular ERP and CRM engine for teams that want a single deployable stack: PostgreSQL for data, XML views for screens and menus, Go models for business logic, and a SWC web workspace for list, form, kanban, and analysis work. Install apps (addons) from disk; extend behavior through manifests and the sumeru/core/sdk surface instead of forking core.
This repository (module sumeru) is the kernel: ORM, HTTP/RPC, rendering shell, and base apps (base, mail, …). Standard CRM/ERP apps ship in sumeru_addons. Most integrators run the server from sumeru_custom_addons (paths, config, generated imports).
Caution
Pre-alpha software — not for production or regulated workloads.
- APIs, schemas, and UX may change without notice.
- Use for local development, evaluation, and feedback only.
| Area | Capabilities |
|---|---|
| Apps & modules | Manifests, dependency order, install/update from addons_path; XML data and views |
| Data layer | PostgreSQL ORM, model sync on startup, record rules, multi-company |
| Workspace | List, form, kanban, graph, pivot, calendar, gantt, map, cohort |
| Collection UX | Search, filters, group-by, custom domains, saved-search favorites |
| Integrations | POST /api/rpc (session or API key); mail/chatter; export/import hooks |
| Client | TypeScript SWC in core/swc/; server-rendered shell + SPA workspace |
| Extensibility | Prefer sumeru/core/sdk for addons; sum-* design tokens in CSS |
User flow: sign in → apps catalog → settings and workspace.
Sign-in — enterprise login shell with optional company logo and tagline on the left panel.
Apps — browse, install, and open CRM/ERP modules from the catalog.
Settings & workspace — configure the organization and work in list, form, and analysis views.
Sumeru runs as a Go monolith: HTTP handlers and JSON-RPC call into the ORM; addons register models and actions; the SWC client loads inside an HTML shell from core/engine/render.
| Layer | Location |
|---|---|
| UI shell & routes | core/server/web, core/engine/render |
| Workspace client | core/swc |
| Business logic & RPC | core/server/api, core/orm, core/sdk |
| Modules | core/module, addons/, external addon repos |
| Security | Access CSV/XML, record rules, groups, field ACL |
Full layer diagram and request flow: docs/architecture-layers.md.
| Repository | Role |
|---|---|
| sumeru | Core engine + kernel apps |
| sumeru_addons | Standard CRM/ERP apps |
| sumeru_custom_addons | Workspace: sumeru.conf, generated imports, make run |
- Go 1.26.6+
- Node.js (npm — builds SWC bundles; not committed to git)
- PostgreSQL
- Git
- Optional: Docker for
make test-integration
Clone the three sibling repositories, create a database matching db_name, then run from the workspace repo:
mkdir -p ~/sumeru_erp && cd ~/sumeru_erp
git clone git@github.com:ProjectMeru/sumeru.git
git clone git@github.com:ProjectMeru/sumeru_addons.git
git clone git@github.com:ProjectMeru/sumeru_custom_addons.git
# psql -c "CREATE DATABASE sumeru;"
cd sumeru_custom_addons
cp sumeru.conf.example sumeru.conf # edit db_*, http_port, addons_path
make setup && make runOpen http://localhost:8080 (or your http_port). Details: sumeru_custom_addons README.
Kernel apps under sumeru/addons/:
cd sumeru
cp sumeru.conf.example sumeru.conf # addons_path = addons
make setup && make runOptional sample data:
go run ./cmd/sumeru -- -c sumeru.conf -i company,user --stop-after-init
make run| Step | Behavior |
|---|---|
| Empty DB | Browser /setup wizard (company + admin); see setup_* keys in sumeru.conf.example |
| After setup | /web/login; set dev_mode = true for local UI iteration |
| Signed in | / → /web/apps |
Copy sumeru.conf.example → sumeru.conf next to go.mod (or in sumeru_custom_addons for the workspace flow).
| Setting | Required | Notes |
|---|---|---|
db_*, db_sslmode |
Yes | PostgreSQL connection |
http_port |
Yes | Default 8080 |
addons_path |
Yes | Comma-separated addon directories |
dev_mode |
No | true for local development |
log_enabled / log_stdout |
No | See example for file logging |
Reference: configuration guide.
Run make from sumeru/ (or workspace Makefile in sumeru_custom_addons/) before opening a PR.
| Command | Purpose |
|---|---|
make setup |
sumeru.conf scaffold; generate + SWC assets |
make run / make dev |
go run ./cmd/sumeru -c sumeru.conf |
make swc |
Rebuild workspace + login JS bundles |
make / make check |
Lint, tests, go build ./... (CI parity) |
make build |
Production binary ./sumeru |
make help |
Modules, integration tests, i18n, shell REPL |
Extra CLI flags: EXTRA_RUN_FLAGS (e.g. make run EXTRA_RUN_FLAGS='-p 9090'). See tooling docs.
SWC sources live in core/swc/src/; bundles land in core/engine/assets/ when you run make setup or make run.
| Resource | Link |
|---|---|
| Site | projectmeru.github.io/sumeru/docs/ |
| Architecture | docs/architecture-layers.md |
| Configuration | guides/start/configuration |
| Tooling & CLI | guides/build/tooling |
| Contributing | CONTRIBUTING.md — layout, generate loop, PR expectations |
| Security | SECURITY.md — responsible disclosure |
| License | Apache 2.0 |


