Skip to content

Configuration Reference

Benedict G edited this page Apr 16, 2026 · 2 revisions

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.


llm — LLM provider (v0.8+)

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

llm.ollama — Ollama settings (when provider: 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.


remarkable — reMarkable Cloud + device registry

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

remarkable.devices[] — DeviceConfig

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

ocr — text extraction pipeline

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"]

processing — note intelligence

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

processing.actions

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.


obsidian — vault + Git

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})"

sync

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.


search — hybrid retrieval

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.


microsoft — Graph (To Do, Calendar, OneNote, Teams)

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

notion

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.


reverse_sync — Obsidian → reMarkable push

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"

plugins

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.


response — response artifact generation

Key Type Default
enabled bool true
format "pdf" | "notebook" "pdf"
response_format same "pdf"

templates — on-device template engine

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.


web — dashboard + PWA

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.


logging

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.


Environment-variable overrides

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

Editing from the web UI

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.

Clone this wiki locally