Caution
Sumeru and its standard addons are pre-alpha software. They are under active development and are not ready for production or commercial use.
- No production use. Do not deploy to production or run live business workloads. Stability, security, and data integrity are not guaranteed.
- Not for sale. Do not offer, resell, license, or deploy Sumeru to customers. This is not a commercial product.
- Evaluation only. Use for local development, testing, and feedback at your own risk.
APIs, data models, and behavior may change without notice. There is no migration guarantee and no production support.
Standard business addons for Sumeru (Go module: module sumeru_addons).
This repository is Tier 2 of the Sumeru stack: shared CRM, Sales, Accounting, Purchase, HR, and related apps. It depends only on ../sumeru (replace sumeru => ../sumeru in go.mod).
Business and customer teams should treat this repository as pull-only.
- Pull updates and install the modules you need.
- Put overrides, branding, and client-specific modules under
sumeru_custom_addons/addons/. - Do not edit files here to customize a deployment. That creates merge conflicts and blocks clean upstream pulls.
Shared improvements that belong in the standard suite should land via a pull request to this repo, not by forking and diverging locally.
Do not run the HTTP server from this tree. Always run from ../sumeru_custom_addons so addons_path can list core, these addons, and your custom addons together.
Sumeru is split into three sibling repositories so you can pull the engine and standard apps without mixing in customer code.
parent/
sumeru/ # Tier 1: engine + kernel addons (pull-only)
sumeru_addons/ # Tier 2: this repo (pull-only for businesses)
sumeru_custom_addons/ # Tier 3: run the server + custom addons
sumeru_custom_addons ββreplace + make generateβββΊ sumeru (core)
β β
βββreplace + addons_pathβββββββββββββββββββββββΊβ
β βΌ
βββmake runβββββββββββββββββββββββββββββΊ HTTP server
β²
βββ also loads sumeru_addons (this repo)
| Repository | Role | Remote |
|---|---|---|
sumeru |
Core engine + kernel addons (base, mail, β¦) |
git@github.com:ProjectMeru/sumeru.git |
sumeru_addons |
Standard business apps (this repo) | git@github.com:ProjectMeru/sumeru_addons.git |
sumeru_custom_addons |
Workspace: custom addons, local INI, generated imports, process you run | git@github.com:ProjectMeru/sumeru_custom_addons.git |
| Mechanism | How it works |
|---|---|
addons_path |
Comma-separated roots in sumeru.conf, e.g. ../sumeru/addons,../sumeru_addons,./addons. Later roots override the same manifest.name. |
| Go modules | This repo replaces sumeru => ../sumeru. The custom workspace also replaces sumeru_addons and generates blank-imports so init() runs. |
| Manifests | Each app has manifest.json with depends, data (XML/CSV), and optional application. |
| Models | Go structs with sdk.Model embed; make generate β sdk.MustRegister |
| XML / security | Views, menus, groups, and ACLs load on install/update. |
| Events | Cross-module automation via event.Subscribe (see sale_crm). |
| Relations | Many2One / related fields to core models such as core.partner, core.user, core.company. |
List ../sumeru_addons on addons_path before ./addons so custom modules can extend standard apps without forking them.
| Module | Role |
|---|---|
contacts |
Address book (views/security on core.partner) |
product |
Product catalog |
crm |
Leads / opportunities |
sale |
Quotations / sales orders |
sale_crm |
Opportunity β draft quotation (on Won) |
account |
Invoices, bills, COA, journal lines |
purchase |
RFQ / PO β vendor bill |
hr |
Employees, departments, jobs |
Typical install order: contacts, product, crm, sale, sale_crm, account, purchase, hr.
| Requirement | Notes |
|---|---|
| Go 1.26.2+ | See go.mod |
| PostgreSQL | Application database |
| Sibling checkouts | sumeru and sumeru_custom_addons next to this repo |
Clone all three repos as siblings, then configure and run from the custom workspace.
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
# Create an empty database matching db_name in your INI, e.g.:
# psql -c "CREATE DATABASE sumeru;"
cd sumeru_custom_addons
cp sumeru.conf.example sumeru.conf # edit db_* , http_port, addons_path
make replace-sumeru
make replace-sumeru-addons
make generate # β addonimports/zimports.go
make runEnsure addons_path includes this tree, for example:
addons_path = ../sumeru/addons,../sumeru_addons,./addonsFull workspace details: sibling sumeru_custom_addons/README.md.
cd ../sumeru && git pull
cd ../sumeru_addons && git pull
cd ../sumeru_custom_addons && make generate && make runFrom sumeru_custom_addons:
go run . -- -c sumeru.conf -i contacts,product,crm,sale,sale_crm,account,purchase,hr --stop-after-init
go run . -- -c sumeru.conf -u sale --stop-after-init
go run . -- -c sumeru.confEach installable app is a direct child directory of this repo (sibling to go.mod), with manifest.json and optional init.go / models/:
sumeru_addons/
go.mod
<technical_name>/
manifest.json
init.go # optional: blank-import models; event hooks
models/ β¦
views/ β¦
security/ β¦
data/ β¦
Technical module names must match ^[a-z][a-z0-9_]*$ and equal the folder name.
Reference patterns in this repo:
- Views on a core model:
contacts/(no new models; XML + security oncore.partner) - Bridge / events:
sale_crm/(event.Subscribewhen a lead is Won)
- Keep
sumeruandsumeru_addonspull-only. - Create modules under
sumeru_custom_addons/addons/<technical_name>/with the usual layout (manifest.json,init.go, models, views, security). - Declare
dependson standard apps as needed (e.g.sale,crm). - Blank-import
sumeru_addons/...from your addonβsinit.gowhen you need to register hooks or ensure models are loaded. - Run
make generatein the custom workspace after adding or removing addons. - Install with
-i your_modulefromsumeru_custom_addons.
Do not copy or patch modules from this repository into a private fork for day-to-day customization.
Use this repository when the module should ship to every Sumeru deployment:
- Add a new directory at the repo root named with the technical name.
- Add
manifest.json(dependsonly onbase/ other modules here / kernel apps; this Go module must depend only onsumeru). - Define models as structs with
sdk.Modelembed andsumerutags; runmake generate. - Ship XML under
views/, ACLs undersecurity/, seed data underdata/as needed. - Verify from
sumeru_custom_addonswithmake generateand-i <name> --stop-after-init.
See CONTRIBUTING.md for PR expectations.
| Resource | Contents |
|---|---|
| This README | Role, placement, modules, layout, extend vs contribute |
sumeru/README.md |
Core engine, config, CLI |
sumeru_custom_addons/README.md |
Workspace runner, make generate, custom addons |
See CONTRIBUTING.md for where to put changes, the generate/test loop, and PR expectations.
Please follow the Code of Conduct.
Report vulnerabilities privately. See SECURITY.md. Do not open public issues for undisclosed security problems.
Licensed under the Apache License, Version 2.0.