Modular open-source ERP — Go backend, PostgreSQL, and a modern web workspace.
Settings hub — configure companies, users, localization, and open installed apps.
Caution
Pre-alpha software — not for production or commercial use.
- Do not deploy live business workloads; stability and data integrity are not guaranteed.
- APIs, data models, and behavior may change without notice.
- Use for local development, evaluation, and feedback only.
Sumeru is a modular ERP platform built in Go. Install apps (addons) for CRM, sales, inventory, and more; persist data in PostgreSQL; define screens with XML views; and run day-to-day work in a SWC workspace client with a shared control bar for search, filters, and saved searches across list, form, kanban, graph, pivot, calendar, gantt, map, and cohort views.
This repository is the core engine (module sumeru). Most teams keep it pull-only and run the server from sumeru_custom_addons.
- Modular apps — manifests, XML views/menus, Go models, install and update from disk
- PostgreSQL ORM — model sync on startup, record rules, multi-company support
- Collection control bar — search, filters, multi group-by, custom domain rules, and saved-search favorites on collection and analysis views
- Workspace views — list, form, kanban, graph, pivot, calendar, gantt, map, and cohort
- Saved searches — persist filter/search/group state per user (
swc.saved.search+ favorites API) - SWC client — TypeScript sources in
core/swc/; bundles built locally (not committed to git) - JSON-RPC API —
POST /api/rpcfor integrations (session or API key) - Stable addon SDK — prefer
sumeru/core/sdkover directsumeru/core/ormimports - Plain CSS shell — design tokens and
sum-*layout undercore/engine/assets/css/
Prerequisites: Go 1.26.2+, Node.js (npm — builds the SWC UI), PostgreSQL
Clone the three sibling repositories, configure the workspace, and run:
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 a PostgreSQL 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 setup # go.mod, imports, SWC + login JS bundles
make run # regenerate imports; rebuild assets when missing or staleOpen http://localhost:8080 (or your http_port). / redirects to /web/apps.
Day-to-day updates:
cd ../sumeru && git pull
cd ../sumeru_addons && git pull
cd ../sumeru_custom_addons && make runAfter pulling SWC changes in sumeru, make run rebuilds client bundles automatically when TypeScript sources are newer than the on-disk JS.
Full workspace details: sumeru_custom_addons README.
When you only need kernel apps under sumeru/addons/:
cd sumeru
cp sumeru.conf.example sumeru.conf
make setup && make runInstall sample data, then serve: go run ./cmd/sumeru -- -c sumeru.conf -i company,user --stop-after-init then make run.
Most development happens in sumeru_custom_addons. The core repo uses the same Makefile targets when working on kernel addons or SWC directly.
| Step | Command | What it does |
|---|---|---|
| First time | make setup |
Config, go.mod replaces, import generation, SWC + login JS |
| Daily dev | make run or make dev |
Regenerate imports, rebuild assets if stale, start HTTP server |
| After SWC/CSS edits | make swc |
Force rebuild workspace bundle + login JS |
| Pull upstream | git pull in sumeru / sumeru_addons, then make run |
Rebuilds assets when sources changed |
| Tests | make check |
SWC typecheck + Go tests |
| Binary | make build |
Imports + assets + bin/sumeru-erp |
| Step | Command | What it does |
|---|---|---|
| First time | make setup |
sumeru.conf, SWC assets, cmd/sumeru/zimports.go |
| Daily dev | make run |
generate + assets + go run |
| Force client rebuild | make swc |
Always rebuild SWC + login JS |
| Incremental assets | make assets |
Build only when bundles missing or sources changed |
| Tests | make check |
swc-check + go test ./... |
| Binary | make build |
generate + assets + ./sumeru binary |
make run → generate (Go imports) → assets (SWC + login JS) → go run server
The browser UI is not stored in git. Sources live under core/swc/src/ (TypeScript); build outputs are gitignored (see .gitignore).
| Output | Purpose |
|---|---|
core/engine/assets/swc/swc.js |
Workspace UI (/static/swc/swc.js) |
core/engine/assets/js/sumeru-password-toggle.js |
Login / setup password visibility |
core/engine/assets/js/sumeru-password-match.js |
Setup password confirmation |
Build with make swc (always rebuild) or let make assets / make run build when bundles are missing or SWC sources changed. A fresh clone needs Node.js — run make setup or make run once before opening the app.
Sumeru splits across three repositories so you can pull engine and standard apps without mixing customer code.
sumeru_custom_addons
make setup / make run
→ generate (addonimports/zimports.go)
→ assets (SWC + login JS → sumeru/core/engine/assets/)
→ go run HTTP server
loads sumeru (core) + sumeru_addons via addons_path in sumeru.conf
| Repository | Role |
|---|---|
| sumeru | Core engine + kernel apps (base, mail, …) |
| sumeru_addons | Standard business apps (CRM, Sales, Inventory, …) |
| sumeru_custom_addons | Your workspace: custom addons, INI, generated imports, make run |
Entry binary: cmd/sumeru/main.go → sumeru/core/server. Library code under core/ has no main.
| Layer | Technology |
|---|---|
| Server | Go 1.26.2+, structured logging (log/slog) |
| Database | PostgreSQL |
| Modules | Go addons + XML views/menus + manifest sync |
| Workspace UI | SWC (TypeScript) — sources in core/swc/ |
| Client build | Node.js + npm (esbuild); make assets / make swc |
| Styling | Plain CSS (core/engine/assets/css/) |
| API | JSON-RPC at POST /api/rpc, health at GET /api/health |
CLI flags: -c config, -d database, -p port, -i install modules, -u update modules. See Tooling docs.
| Resource | Contents |
|---|---|
| Documentation home | Guides, reference, and tutorials |
| Installation | First-time setup |
| Configuration | sumeru.conf keys and paths |
| JSON-RPC API | RPC methods, auth, errors |
| SWC architecture | Workspace client |
| Creating an addon | Module authoring |
| Tooling | Makefile, import-gen, CLI |
| sumeru_addons README | Standard business apps |
| sumeru_custom_addons README | Workspace runner |
Configuration template: sumeru.conf.example in this repo.
| Path | Purpose |
|---|---|
core/orm/ |
PostgreSQL models, CRUD, registry |
core/engine/ |
View XML, HTML render, templates, assets |
core/server/ |
INI config, HTTP handlers |
core/module/ |
Addon discovery, install/update |
core/sdk/ |
Stable Go API for addons |
core/swc/ |
Workspace UI source (TypeScript) |
cmd/sumeru/ |
Server binary + generated imports |
addons/ |
Kernel apps shipped with core |
test/ |
Unit and integration tests |
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.
