Configuration
Membrane is configured via a YAML file or command-line flags. Fields not present in the config file retain their default values.
Config File
Pass a config file with the -config flag:
bash
./bin/membraned -config membrane.yamlFull Example
yaml
# SQLite database path
db_path: /var/lib/membrane/data.db
# gRPC listen address
listen_addr: ":9090"
# How often the decay scheduler runs
decay_interval: 1h
# How often the consolidation scheduler runs
consolidation_interval: 6h
# Default sensitivity for ingested records
default_sensitivity: low
# Minimum confidence for the retrieval selector
selection_confidence_threshold: 0.7
# Security (keys should come from environment variables)
# encryption_key: "" # or set MEMBRANE_ENCRYPTION_KEY
# api_key: "" # or set MEMBRANE_API_KEY
# tls_cert_file: ""
# tls_key_file: ""
rate_limit_per_second: 100Options Reference
db_path
- Type: string
- Default:
"membrane.db" - Description: Path to the SQLite database file. Created automatically if it does not exist.
listen_addr
- Type: string
- Default:
":9090" - Description: Network address for the gRPC server to listen on. Use
":0"to let the OS pick a free port.
decay_interval
- Type: duration
- Default:
1h - Description: How often the background decay scheduler runs. The scheduler applies the configured decay curve to all non-pinned records, reducing their salience over time. Shorter intervals mean more frequent decay updates; longer intervals reduce CPU usage.
consolidation_interval
- Type: duration
- Default:
6h - Description: How often the background consolidation scheduler runs. Consolidation promotes episodic experience into semantic facts, competence records, and plan graphs. Shorter intervals mean faster learning; longer intervals reduce overhead.
default_sensitivity
- Type: string
- Default:
"low" - Values:
public,low,medium,high,hyper - Description: The sensitivity level assigned to ingested records when the ingest request does not specify one. See Security for details on sensitivity levels.
selection_confidence_threshold
- Type: float
- Default:
0.7 - Range: [0, 1]
- Description: Minimum confidence for the multi-solution selector. When the selector ranks competence or plan graph candidates, if confidence falls below this threshold the
needs_moreflag is set, signaling that additional information or user disambiguation may be needed. See Retrieval for details.
encryption_key
- Type: string
- Default:
""(no encryption) - Env var:
MEMBRANE_ENCRYPTION_KEY - Description: SQLCipher encryption key for the database. When set, all data is encrypted at rest. If this field is empty, Membrane falls back to
MEMBRANE_ENCRYPTION_KEY. See Security for details.
api_key
- Type: string
- Default:
""(authentication disabled) - Env var:
MEMBRANE_API_KEY - Description: Shared secret for authenticating gRPC clients. Clients must send this as a
Bearertoken in theauthorizationmetadata header. If this field is empty, Membrane falls back toMEMBRANE_API_KEY. See Security for details.
tls_cert_file
- Type: string
- Default:
""(TLS disabled) - Description: Path to the TLS certificate PEM file. Both
tls_cert_fileandtls_key_filemust be set for TLS to activate.
tls_key_file
- Type: string
- Default:
""(TLS disabled) - Description: Path to the TLS private key PEM file. Both
tls_cert_fileandtls_key_filemust be set for TLS to activate.
rate_limit_per_second
- Type: integer
- Default:
100 - Description: Maximum gRPC requests per second for the current daemon instance. Uses a token bucket algorithm. Set to
0to disable rate limiting. Requests exceeding the limit receive aResourceExhaustedgRPC error.
Command-Line Overrides
Command-line flags override values from the config file:
| Flag | Overrides | Description |
|---|---|---|
-config | -- | Path to YAML config file |
-db | db_path | SQLite database path |
-addr | listen_addr | gRPC listen address |
Examples
bash
# Use defaults
./bin/membraned
# Use a config file
./bin/membraned -config /etc/membrane/config.yaml
# Override specific values
./bin/membraned -config config.yaml -db /tmp/test.db -addr :8080
# No config file, just flags
./bin/membraned -db membrane.db -addr :9090Duration Format
Duration values use Go's duration syntax:
| Suffix | Meaning |
|---|---|
s | seconds |
m | minutes |
h | hours |
Examples: 30s, 5m, 1h, 2h30m