Configuration
How the INI config file and CLI flags control database, HTTP, addon discovery, logging, and branding.
Pre-alpha. No tagged release or upgrade path. Use for evaluation and development only.
The config file
Copy sumeru.conf.example next to your workspace go.mod and edit. Paths in the INI resolve against the config file directory, not your shell cwd.
[options]
db_host = localhost
db_port = 5432
db_user = postgres
db_password = postgres
db_name = sumeru
db_sslmode = disable
http_port = 8080
http_interface =
dev_mode = true
setup_localhost_only = true
setup_token =
addons_path = ../sumeru/addons,../sumeru_addons,./addons
log_enabled = true
log_stdout = true
Database (required)
| Key | Purpose | Default |
|---|---|---|
db_host | PostgreSQL host | — |
db_port | PostgreSQL port | — |
db_user | Database user | — |
db_password | Database password | — |
db_name | Database name | — |
db_sslmode | SSL mode (disable, require, …) | — |
HTTP (required)
| Key | Purpose | Default |
|---|---|---|
http_port | Listen port | — |
http_interface | Bind address (empty = all interfaces) | empty |
dev_mode | Debug logging and dev behaviour | false |
CLI override: -p or --http-port.
Set http_interface = 127.0.0.1 to restrict the HTTP server to localhost (similar to setup_localhost_only for the setup wizard).
Setup wizard (first run)
| Key | Purpose | Default |
|---|---|---|
setup_localhost_only | Bind setup to 127.0.0.1 | false |
setup_token | Optional setup secret; empty = skip | empty |
Addons (required)
| Key | Purpose |
|---|---|
addons_path | Comma-separated addon roots; later paths override earlier for same module name |
Also read by go generate ./cmd/sumeru for code generation.
Logging
| Key | Purpose | Default |
|---|---|---|
log_enabled | Master logging switch | true |
log_stdout | JSON logs to terminal | true |
log_file | Optional log file path | empty |
log_rolling | Rotate log file | false |
log_max_size_mb | Max size before rotate | — |
log_max_backups | Rotated files to keep | — |
log_max_age_days | Max age of rotated files | — |
log_timezone | Log timestamp zone (Local, UTC) | Local |
Enable at least one sink (log_stdout and/or log_file).
Paths and branding (optional)
| Key | Purpose |
|---|---|
sumeru_home | Anchor for default assets/templates when INI is outside core tree |
assets_path | Override static assets directory |
templates_path | Override HTML templates directory |
brand_css | Extra CSS URL for shell branding |
logo_path | Custom logo path for web shell |
company_display_name | Default company label in shell |
user_display_name | Default user label format |
Runtime parameters (not INI)
Some policies live in sys.config.parameter in the database, for example:
auth.password_min_lengthauth.password_complexity
Manage these via Settings after first boot — they are not sumeru.conf keys.
Database pool (optional)
Tune PostgreSQL connection pooling for production load:
| Key | Purpose | Default |
|---|---|---|
db_max_open_conns | Max open connections to primary | Go default |
db_max_idle_conns | Max idle connections in pool | Go default |
db_conn_max_lifetime_minutes | Recycle connections after N minutes | 0 (no limit) |
Read replica (optional)
| Key | Purpose |
|---|---|
db_read_replica_dsn | Full libpq DSN for a read replica |
When set, search, search_read, and list workspace queries prefer the replica. Writes always use the primary.
Rate limiting (optional)
| Key | Purpose | Default |
|---|---|---|
rate_limit_rpm | Max requests per minute per client IP on /api/rpc and /web/login | 0 (disabled) |
SMTP (optional)
Configure outbound mail for password reset and notifications:
| Key | Purpose |
|---|---|
smtp_host | SMTP server hostname |
smtp_port | Port (587 STARTTLS or 465 SMTPS; default 587) |
smtp_user | Auth username (optional) |
smtp_password | Auth password (optional) |
smtp_from | From address (required to send) |
Without SMTP, password reset actions log a message instead of sending email.
CLI overrides
| Flag | Effect |
|---|---|
-c path | Config file path |
-p, --http-port | Override http_port |
-i mod1,mod2 or -i all | Install named modules, or all not-yet-installed modules in dependency order |
-u mod or -u all | Update module(s) |
--stop-after-init | Exit after install/update (no HTTP server) |
addons_path
This key decides which addons exist. Typical workspace layout:
addons_path = ../sumeru/addons,../sumeru_addons,./addons
Core kernel apps → standard business apps → your custom addons.
Next step
Continue with First boot to initialise the database and install business addons.