-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration Reference
Every key in config.yaml. All keys have defaults — only add the ones you're changing.
Paths with ~/ expand to the home directory of the user running the bridge.
Controls which LLM backend powers note structuring, tagging, summaries, action extraction, reports, and OCR VLM.
| Key | Type | Default | Purpose |
|---|---|---|---|
provider |
string | "anthropic" |
anthropic or ollama
|
| Key | Type | Default |
|---|---|---|
base_url |
string | "http://localhost:11434" |
text_model |
string | "llama3.1" |
vision_model |
string | "llava" |
embedding_model |
string | "nomic-embed-text" |
timeout_seconds |
int | 120 |
See Ollama-Setup for end-to-end setup.
| Key | Type | Default | Purpose |
|---|---|---|---|
device_token_path |
string | ~/.remark-bridge/device_token |
Legacy single-device token path |
sync_folders |
list[str] |
[] (= all folders) |
reMarkable folder names to include |
ignore_folders |
list[str] | ["Trash", "Quick sheets"] |
reMarkable folder names to skip |
response_folder |
string | "Responses" |
Folder on the tablet where generated response PDFs go |
devices |
list[DeviceConfig] | [] |
Multi-device list (see Multi-Device); empty = single-device legacy mode |
| Key | Type | Default |
|---|---|---|
id |
string | (required; short slug, e.g. pro) |
label |
string | (required; human label) |
vault_subfolder |
string | "" |
sync_folders |
list[str] | inherits top-level if empty |
ignore_folders |
list[str] | inherits top-level if empty |
| Key | Type | Default |
|---|---|---|
primary |
"remarkable_builtin" | "google_vision" | "vlm" | "tesseract" |
"remarkable_builtin" |
fallback |
same enum + "none"
|
"google_vision" |
confidence_threshold |
float (0..1) | 0.7 |
vlm.provider |
"anthropic" | "openai" |
"anthropic" |
vlm.model |
string | "claude-sonnet-4-20250514" |
vlm.prompt_template |
string | "default" |
google_vision.credentials_path |
string | ~/.remark-bridge/gcloud-credentials.json |
google_vision.language_hints |
list[str] | ["en", "de"] |
| Key | Type | Default |
|---|---|---|
model |
string | "claude-sonnet-4-20250514" |
api_key_env |
string | "ANTHROPIC_API_KEY" |
extract_actions |
bool | true |
extract_tags |
bool | true |
hierarchical_tags |
bool |
false (v0.5+; see CLI-Reference#retag) |
generate_summary |
bool | true |
| Key | Type | Default |
|---|---|---|
action_colors |
list[int] | [6] |
question_colors |
list[int] | [5] |
highlight_colors |
list[int] | [3] |
detect_from_text |
bool | true |
reMarkable colour indices: 0=black, 1=grey, 2=white, 3=yellow, 4=green, 5=blue, 6=red, 7=pink.
| Key | Type | Default |
|---|---|---|
vault_path |
string | "/home/user/obsidian-vault" |
folder_map |
dict[str, str] | {"_default": "Inbox"} |
git.enabled |
bool | true |
git.remote |
string | "origin" |
git.branch |
string | "main" |
git.auto_commit |
bool | true |
git.auto_push |
bool | true |
git.commit_message_template |
string | "sync: {count} notes from reMarkable ({date})" |
| Key | Type | Default |
|---|---|---|
mode |
"realtime" | "scheduled" | "manual" | "all" |
"all" |
schedule |
cron string | "*/15 * * * *" |
state_db |
string | ~/.remark-bridge/sync_state.db |
push_responses |
bool | true |
streaming_threshold_bytes |
int |
5242880 (5 MB) |
temp_dir |
string | ~/.remark-bridge/tmp |
websocket.reconnect_delay |
int (s) | 5 |
websocket.max_reconnect_delay |
int (s) | 300 |
websocket.ping_interval |
int (s) | 30 |
streaming_threshold_bytes — blobs above this size are spilled to temp_dir during download rather than buffered in RAM. Keeps RSS flat for large notebooks.
See Search for details.
| Key | Type | Default |
|---|---|---|
enabled |
bool | false |
backend |
"voyage" | "openai" | "local" | "ollama" |
"local" |
mode |
"semantic" | "bm25" | "hybrid" |
"hybrid" |
model |
string |
"" (backend default) |
api_key_env |
string | "" |
chunk_size |
int | 512 |
chunk_overlap |
int | 50 |
batch_size |
int | 64 |
top_k |
int | 5 |
min_score |
float | 0.3 |
synthesize_answer |
bool | true |
synthesis_model |
string | "claude-sonnet-4-20250514" |
batch_size — number of chunks sent to the embedding backend per call during reindex. Larger values reduce round-trips; smaller values reduce peak memory. Default 64 is a good balance for most backends.
| Key | Type | Default |
|---|---|---|
enabled |
bool | false |
client_id |
string | "" |
tenant |
string | "common" |
token_cache_path |
string | ~/.remark-bridge/msal_cache.bin |
todo_enabled |
bool | true |
todo_list_name |
string | "reMark" |
todo_create_list |
bool | true |
calendar_enabled |
bool | false |
calendar_id |
string | "" |
onenote.enabled |
bool | false |
onenote.notebook_name |
string | "reMark" |
teams.digest_cadence |
"off" | "daily" | "weekly" |
"weekly" |
teams.digest_hour |
int | 9 |
teams.digest_weekday |
int (0=Mon) | 1 |
teams.meeting_correlation |
bool | true |
| Key | Type | Default |
|---|---|---|
enabled |
bool | false |
integration_token_env |
string | "NOTION_TOKEN" |
vault_mirror_page_id |
string | "" |
tasks_database_id |
string |
"" (reserved) |
Share the parent Notion page with your internal integration before enabling.
| Key | Type | Default |
|---|---|---|
enabled |
bool | false |
trigger_frontmatter_flag |
string | "push_to_tablet" |
trigger_folder |
string |
"" (disabled) |
queue_on_demand |
bool | true |
format |
"pdf" | "notebook" |
"pdf" |
target_folder |
string | "Obsidian" |
| Key | Type | Default |
|---|---|---|
enabled |
bool | true |
plugin_dir |
string | ~/.config/remark/plugins |
disabled |
list[str] | [] |
settings |
dict[str, dict] | {} |
settings[<plugin_name>] is passed to the plugin's configure() hook.
| Key | Type | Default |
|---|---|---|
enabled |
bool | true |
format |
"pdf" | "notebook" |
"pdf" |
response_format |
same | "pdf" |
| Key | Type | Default |
|---|---|---|
enabled |
bool | true |
user_templates_dir |
string | ~/.remark-bridge/templates |
target_folder |
string | "Templates" |
See Templates for the YAML schema, extends: / blocks: inheritance, and the when: expression grammar.
| Key | Type | Default |
|---|---|---|
host |
string | "127.0.0.1" |
port |
int | 8080 |
app_name |
string | "reMark" |
username |
string |
"" (= HTTP Basic off) |
password |
string | "" |
vapid_public_key |
string | "" |
vapid_private_key |
string | "" |
vapid_subject |
string | "mailto:admin@example.com" |
Generate a VAPID pair once with remark-bridge vapid-keys and paste both values back into config.yaml.
| Key | Type | Default |
|---|---|---|
level |
"DEBUG" | "INFO" | "WARNING" | "ERROR" |
"INFO" |
file |
string | ~/.remark-bridge/bridge.log |
max_size_mb |
int | 50 |
backup_count |
int | 5 |
format |
"text" | "json" |
"text" |
REMARK_LOG_FORMAT=json env var overrides format at runtime without editing config.
| Env var | What it does |
|---|---|
REMARK_CONFIG |
Overrides the default ./config.yaml path |
REMARK_LOG_FORMAT |
text or json — overrides logging.format
|
ANTHROPIC_API_KEY |
Consumed by the processing pipeline |
OPENAI_API_KEY |
Consumed by the OpenAI search backend (if enabled) |
VOYAGE_API_KEY |
Consumed by the Voyage search backend (if enabled) |
NOTION_TOKEN |
Consumed by the Notion integration (if enabled) |
GOOGLE_APPLICATION_CREDENTIALS |
Alternative to ocr.google_vision.credentials_path
|
Every section listed here has a form at /settings/<section> that writes back to config.yaml while preserving inline comments (via ruamel.yaml). Secret fields are masked; leave them blank on submit to keep the existing value.
Sections that need a process restart to take effect show a banner when opened (sync, web, logging, remarkable). The rest hot-reload.
reMark Bridge · v0.7.0 · CC BY-NC 4.0 · author BGGBTAC · contributions welcome — see Contributing
Home · v0.8.0
Getting started
Features
- Multi-Device
- Search
- Templates
- Plugins
- Bridge-API
- Obsidian-Plugin
- Web-Dashboard
- Users
- Audit-Log
- Reports
Ops
Dev