mosaic config
Shows and changes the configuration in ~/.config/mosaic/config.toml. Run it with no options, or with --show, to print the configuration as JSON.
Usage
bash
mosaic config --show
mosaic config --unpaywall-email you@university.edu --download-dir ~/papers
mosaic config --ss-key KEY --ncbi-key KEY
mosaic config --disable-source dblp --disable-source hal
mosaic config --filename-pattern "{year}_{author}_{title}"
mosaic config --llm-provider openai --llm-base-url http://localhost:11434/v1 --llm-api-key ollama --llm-model qwen3:8b
mosaic config --embedding-model qwen3-embedding:0.6b --embedding-base-url http://localhost:11434/v1 --embedding-api-key ollamaBehaviour
Options can be combined; the file is written once.
| Purpose | Options |
|---|---|
| Keys | --elsevier-key, --ss-key, --ncbi-key (PubMed and PubMed Central), --core-key, --ads-key, --ieee-key, --springer-key, --scopus-key, --scopus-inst-token, --zenodo-key, --zotero-key (also finds and saves your Zotero user ID) |
| Open access | --unpaywall-email |
| Sources | --enable-source NAME, --disable-source NAME (repeatable; config names such as semantic_scholar, europepmc) |
| Paths and names | --download-dir, --db-path, --filename-pattern, --rate-limit-delay |
| Obsidian | --obsidian-vault, --obsidian-subfolder, --obsidian-filename-pattern, --obsidian-tag (repeatable, replaces the list), --obsidian-wikilinks/--no-obsidian-wikilinks |
| LLM | --llm-provider (openai or anthropic), --llm-api-key, --llm-model, --llm-base-url (any OpenAI-compatible server: Ollama, LM Studio, llama.cpp) |
| Embeddings and retrieval | --embedding-model, --embedding-base-url, --embedding-api-key, --rag-top-k, --rag-auto-index, --chunk-overlap, --full-text-index |
| PEDro | --pedro-fair-use, --pedro-fetch-details, --pedro-rate-limit-delay |
Placeholders of --filename-pattern: {year} (0000 when unknown), {source}, {author} (the first word of the first author's name as the source writes it: a family name for "Family, Given" sources, a given name for "Given Family" ones), {title} (up to 60 characters), {doi}, {journal} (no_journal when unknown).
Keys without an option (custom sources, rag.citations.*, rag.chunk_size, Zotero user_id, and others) are set by editing ~/.config/mosaic/config.toml: see configuration.
Exit code 1 for an unknown source name.
See also: configuration, installation.
Options
mosaic config [OPTIONS]| Option | Value | Default | Description |
|---|---|---|---|
--show | Print current config | ||
--elsevier-key | TEXT | Set Elsevier / ScienceDirect API key | |
--ss-key | TEXT | Set Semantic Scholar API key | |
--ncbi-key | TEXT | Set NCBI API key (used for PubMed and PMC) | |
--core-key | TEXT | Set CORE API key | |
--ads-key | TEXT | Set NASA ADS API key | |
--ieee-key | TEXT | Set IEEE Xplore API key | |
--springer-key | TEXT | Set Springer API key | |
--scopus-key | TEXT | Set Scopus API key | |
--scopus-inst-token | TEXT | Set Scopus institutional token | |
--zenodo-key | TEXT | Set Zenodo API key | |
--zotero-key | TEXT | Set Zotero API key (web API) | |
--unpaywall-email | TEXT | Set Unpaywall email | |
--download-dir | TEXT | Set PDF download directory | |
--db-path | TEXT | Set SQLite cache path | |
--filename-pattern | TEXT | Set PDF filename pattern (placeholders: {year}, {source}, {author}, {title}, {doi}) | |
--rate-limit-delay | FLOAT | Set default delay between API calls in seconds | |
--enable-source | TEXT | Enable a source by name (repeatable). Known names: arxiv, semantic_scholar, sciencedirect, doaj, europepmc, openalex, base, springer_api, core, nasa_ads, ieee, zenodo, crossref, dblp, hal, pubmed, pmc, biorxiv, pedro, scopus | |
--disable-source | TEXT | Disable a source by name (repeatable). Same names as --enable-source | |
--obsidian-vault | TEXT | Set Obsidian vault path | |
--obsidian-subfolder | TEXT | Set subfolder inside vault for paper notes | |
--obsidian-filename-pattern | TEXT | Set Obsidian note filename pattern (placeholders: {year}, {author}, {title}) | |
--obsidian-tag | TEXT | Set Obsidian tags (repeatable, replaces existing list). E.g. --obsidian-tag paper --obsidian-tag science | |
--obsidian-wikilinks, --no-obsidian-wikilinks | Use Obsidian [[wikilinks]] in generated notes | ||
--pedro-fair-use, --no-pedro-fair-use | Acknowledge PEDro fair-use policy to enable the source | ||
--pedro-fetch-details, --no-pedro-fetch-details | Fetch each PEDro record page to get authors, year, DOI and abstract (slower) | ||
--pedro-rate-limit-delay | FLOAT | Set PEDro-specific rate-limit delay in seconds (default: 3.0) | |
--llm-provider | TEXT | LLM provider for relevance ranking: "openai" or "anthropic" | |
--llm-api-key | TEXT | API key for the LLM provider (any string for local servers) | |
--llm-model | TEXT | Model name (leave empty for provider default) | |
--llm-base-url | TEXT | Base URL for a local OpenAI-compatible server (e.g. http://localhost:11434/v1) | |
--llm-timeout | FLOAT | Seconds to wait for one LLM answer (raise it for large local models) | |
--embedding-model | TEXT | Embedding model name (e.g. snowflake-arctic-embed2, text-embedding-3-small) | |
--embedding-base-url | TEXT | Base URL for the embedding server (e.g. http://localhost:11434/v1) | |
--embedding-api-key | TEXT | API key for the embedding server (any string for local servers) | |
--rag-top-k | INTEGER | Number of papers retrieved per RAG query (default: 10) | |
--rag-auto-index, --no-rag-auto-index | Auto-index new papers after each search/get run | ||
--chunk-overlap | INTEGER | Token overlap between consecutive chunks (default: 50) | |
--full-text-index, --no-full-text-index | Index full PDF text when available (requires pymupdf) |

