Open source · Pre-alpha · Dual licensed
Addons included.One kernel.
Sumeru is an open-source modular ERP framework in Go.
Business functions are addons: contacts, products, CRM, sales, invoicing.
Declare models with sdk.Model, wire XML views, and run day-to-day work
in a SWC workspace with search, filters, and saved searches across list, form, kanban,
graph, pivot, and more.
01 / Foundation
One design.
Every addon.
The ORM, XML views, access rights, event bus and JSON-RPC API ship as one kernel and share one addon contract. Declare a model once: it becomes a table, a form, and an API resource.
package models
import "sumeru/core/sdk"
type AccountJournal struct {
sdk.Model `sumeru:"model=account.journal"`
Name sdk.String `sumeru:"required,string=Name"`
Code sdk.String `sumeru:"required,string=Code"`
Active sdk.Boolean `sumeru:"string=Active,default=true"`
}
make generate after adding a struct so models/zmodels.go registers it. Schema syncs on install.02 / Capabilities
One framework.
One addon contract.
Every capability is first-party. Nothing to assemble from eleven packages with eleven config styles.
// After editing models/*.go:
make generate // writes models/zmodels.go (sdk.MustRegister)
// Tables and columns sync additively on install/update.
<view id="view_core_partner_list" model="core.partner" type="list">
<field name="name" string="Name"/>
<field name="email" string="Email"/>
<field name="phone" string="Phone"/>
</view>
<record id="action_sys.audit" model="sys.action.window">
<field name="core_model">sys.audit</field>
<field name="view_mode">list,form</field>
</record>
id,name,model,group_id,perm_read,perm_write,perm_create,perm_unlink
access_account_move_user,...,account.move,group_account_invoice,1,1,1,0
access_account_move_manager,...,account.move,group_account_manager,1,1,1,1
# Row rules understand $uid and the active company.
func init() {
event.Subscribe("record.updated", onSaleOrderToInvoice)
}
// No compile-time import of sale.
// Check the registry before acting.
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"model": "crm.lead",
"method": "search_read",
"args": [[["stage_id", "=", "won"]], ["name", "partner_id"]]
}
}
// A minute-tick scheduler runs due sys.cron rows
// and publishes cron.tick - no external broker.
// Structured JSON logs and an audit trail
// live in the same PostgreSQL database.
Models register from generated zmodels.go, not hand-written init() blocks.
List, form, and kanban views plus sys.action.window records load on install. The arch JSON pipeline feeds the SWC client.
Groups with inheritance, per-model rights from CSV, and row-level record rules.
Addons subscribe without importing each other: uninstall Sales and Invoicing keeps working.
API keys from your user record; access rights apply exactly as they do in the UI.
Recurring work needs no Redis, no Celery, no sidecar workers.
03 / Workspace
SWC workspace — search, filters, and ten view types.
The collection control bar brings search, filters, multi group-by, custom domain rules, and saved-search favorites to every list, kanban, graph, pivot, calendar, gantt, map, and cohort view.
- list
- form
- kanban
- graph
- pivot
- calendar
- gantt
- map
- cohort
04 / Sumeru systems
One idiom,
every subsystem.
Dependency-free addon integration, a SWC workspace client, and multi-company on a single database. All following the same shape.
A folder is a product surface
Manifest, models, views, menus, security. The kernel discovers it, topologically orders
depends, syncs schema and loads data files.
SWC workspace client
TypeScript sources in core/swc/; bundles built locally via make setup.
Plain CSS shell for chrome and login — no runtime npm on the server.
Integrate without importing
Invoicing reacts to a confirmed sales order it has no compile-time knowledge of. Registry lookups keep optional counterparts optional.
One database, many companies
Switcher in the top bar, per-user company access, record rules scoped to the active company. Not multi-tenant. Separate customers need separate deployments.
05 / Start
Start with PostgreSQL and make setup.
Go 1.26+ · Node.js (SWC build) · PostgreSQL · Apache 2.0 · Installation guide