-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
Recollectium uses a JSON config file plus XDG-style directories for data, cache, logs, and runtime files. Most users can install and run Recollectium without editing config manually. Use this page when you want to inspect paths, change the service port, move the database, or understand every setting.
Default config path:
~/.config/recollectium/config.json
On systems that set XDG_CONFIG_HOME, the config lives at:
$XDG_CONFIG_HOME/recollectium/config.json
Print the resolved path without creating a file:
recollectium config --pathPrint built-in defaults without creating a file:
recollectium config --defaultsPrint effective config:
recollectium configThe effective config is the built-in defaults merged with any values in your config file.
{
"version": 1,
"cli_output": "human_readable",
"database": {
"path": "recollectium.db"
},
"embedding": {
"provider": "builtin-fastembed",
"model": "jinaai/jina-embeddings-v2-small-en"
},
"service": {
"host": "127.0.0.1",
"port": 8765
},
"logging": {
"level": "info",
"format": "json",
"max_bytes": 10485760,
"backup_count": 5
},
"directories": {
"data": null,
"cache": null,
"logs": null,
"runtime": null
},
"development": {
"use_seeded_database": false,
"seeded_database_path": "dev-seeded-memory.db"
},
"workspace": {
"uid_normalization": "normalize"
}
}| Setting | Type | Default | Options | What it does |
|---|---|---|---|---|
version |
integer | 1 |
1 |
Config schema version. Recollectium uses this to validate the config format. Do not change it unless a future migration says to. |
cli_output |
string | human_readable |
human_readable, json
|
Output format for CLI command results and non-argparse failures. Use human_readable for terminal-friendly summaries and errors. Human-readable output uses Rich-backed ANSI color only when the target stream is a TTY; pipes and captured output remain plain text. Use json for scripts and adapters. |
database.path |
string path | recollectium.db |
relative or absolute path | SQLite database file. Relative paths resolve under the data directory. Absolute paths are used as written. |
embedding.provider |
string | builtin-fastembed |
currently builtin-fastembed
|
Embedding provider. v1 supports the built-in local FastEmbed provider. |
embedding.model |
string | jinaai/jina-embeddings-v2-small-en |
currently the built-in model | Embedding model name. Other models are planned for future releases, but v1 validates the built-in profile. |
service.host |
string | 127.0.0.1 |
host or IP address | Bind host for API or managed MCP service. Keep this on localhost unless you have private networking and external access controls. |
service.port |
integer | 8765 |
TCP port | Port used by the API or managed MCP service. Change this if the default port is already in use. |
logging.level |
string | info |
debug, info, warning, error
|
Minimum log level. Use debug when troubleshooting. |
logging.format |
string | json |
json |
Log output format. v1 uses structured JSON logs. |
logging.max_bytes |
integer | 10485760 |
positive integer | Maximum size of the active log file before rotation. Default is 10 MiB. |
logging.backup_count |
integer | 5 |
non-negative integer | Number of rotated log files to keep. |
directories.data |
string path or null | null |
path or null
|
Data directory override. Stores the default SQLite database and other durable data. Null means use XDG defaults. |
directories.cache |
string path or null | null |
path or null
|
Cache directory override. Used for cached runtime assets. Null means use XDG defaults. |
directories.logs |
string path or null | null |
path or null
|
Logs directory override. Null means use XDG state defaults. |
directories.runtime |
string path or null | null |
path or null
|
Runtime directory override for PID and discovery files. Null means use XDG_RUNTIME_DIR when available, otherwise a fallback under data. |
development.use_seeded_database |
boolean | false |
true, false
|
Uses a separate seeded development database instead of database.path for normal Recollectium operations. Enable this for embedding/search/operation testing without touching your regular memory database. |
development.seeded_database_path |
string path | dev-seeded-memory.db |
relative or absolute path | SQLite path for the seeded development database. Relative paths resolve under the data directory. recollectium dev reset replaces this database with the canonical fixture. |
workspace.uid_normalization |
string | normalize |
normalize, exact
|
Controls workspace UID cleanup. normalize lowercases and slugifies workspace candidates. exact keeps caller-provided UIDs as-is after validation. |
When directories.* is null, Recollectium uses XDG-style paths:
- Config:
$XDG_CONFIG_HOME/recollectium/, fallback~/.config/recollectium/ - Data:
$XDG_DATA_HOME/recollectium/, fallback~/.local/share/recollectium/ - Cache:
$XDG_CACHE_HOME/recollectium/, fallback~/.cache/recollectium/ - Logs:
$XDG_STATE_HOME/recollectium/logs/, fallback~/.local/state/recollectium/logs/ - Runtime:
$XDG_RUNTIME_DIR/recollectium/, fallback inside the data directory
recollectium config
recollectium config --path
recollectium config --defaults
recollectium config --validate
recollectium config get service.port
recollectium config set service.port 9090
recollectium config unset service.port
recollectium config init --force
recollectium config edit
recollectium config reset
recollectium config doctorPrints the effective config as human-readable text by default. Pass --json when you need formatted JSON. This is the best first command when you want to know which values Recollectium is actually using.
Prints the config file path that Recollectium would use. It does not create the file.
Prints the built-in defaults. It does not read or create your config file.
Validates the active config and exits:
-
0when valid. -
1when an explicit config file is missing. -
2when the config exists but is invalid.
Prints one effective value. Keys use dot notation.
Example:
recollectium config get service.portWrites one config value. The value is parsed as JSON when possible, so numbers, booleans, null, and quoted strings work as expected.
Examples:
recollectium config set service.port 9090
recollectium config set logging.level '"debug"'
recollectium config set cli_output json
recollectium config set directories.data '"/data/recollectium"'
recollectium dev trueRemoves an explicit key from your config file. The built-in default then applies again.
Example:
recollectium config unset service.portCreates a starter config file with all defaults. If the file already exists, use --force to overwrite it.
Opens the config file in $EDITOR. If the file does not exist, Recollectium creates it first with defaults.
Replaces the config file with a fresh copy of defaults. Use this when you want to discard local config edits.
Checks that the config is valid and that resolved data, cache, logs, runtime, and database parent directories exist, are directories, and are writable.
Recollectium can switch normal operations to a pre-seeded development database for repeatable embedding and memory-operation tests. The seeded database is separate from your regular database.path and contains:
- 100 user memories across 10 topic buckets.
- 3 workspaces.
- 30 memories per workspace, for 90 workspace memories total.
The user topics are normal fictional preferences and notes for travel, transportation, videogames, books, cooking, fitness, music, pets, learning, and home style.
The fictional workspaces are software-style demo projects:
| Project | Workspace UID | Summary |
|---|---|---|
| CedarLedger | proj-fic-cedarledger-01 |
Bookkeeping app for independent workshops. |
| Northstar Forms | proj-fic-northstar-forms-01 |
Offline-friendly form builder for structured field notes. |
| HarborPilot | proj-fic-harborpilot-01 |
Scheduling and task board for repair crews. |
Enable it with the dev switch:
recollectium dev trueOptionally choose a custom path:
recollectium config set development.seeded_database_path '"/tmp/recollectium-dev-seed.db"'When development.use_seeded_database is true, commands and core operations use development.seeded_database_path instead of database.path. If the seeded database is missing or incomplete, Recollectium recreates it before opening the store.
recollectium dev true, recollectium dev false, and recollectium dev reset refuse to run while a managed Recollectium service is already running. Stop or restart the service around the switch so API and MCP traffic cannot keep writing to the previously opened database.
Reset the development fixture back to its canonical seeded state:
recollectium dev resetReturn to your regular memory database with one config change:
recollectium dev falseYou can also remove the explicit setting and fall back to the default:
recollectium config unset development.use_seeded_databasedev reset only targets development.seeded_database_path. It does not touch database.path.
Global CLI options override config values for one invocation only:
recollectium --db /tmp/recollectium.db list
recollectium --config /tmp/config.json config
recollectium --log-level debug search-user "preferences about wording"
recollectium --json list
recollectium --json service discoverUse config for durable settings. Use CLI overrides for tests, temporary databases, debugging, output-format changes, or one-off operations. --json and --human-readable are mutually exclusive and can appear before or after the command. They override cli_output for one invocation only, including non-argparse failure output. If a command needs the literal value --json or --human-readable, put it after -- so it is treated as a value instead of an output flag. completion --source, completion candidate generation, serve, and mcp-stdio keep their protocol output regardless of cli_output.
FAQ
- Is Recollectium cloud-hosted?
- Does Recollectium encrypt the database?
- Does the API have authentication?
- Does the WebUI have authentication?
- Which embedding model does it use?
- Should agents search by type first?
- What is the difference between
dev serveandservice start api? - Can I run Core on one machine and an agent on another?
- Is the OpenCode plugin available?