Configuration¶
One file — research-config.yml — makes the kit yours: your name, a project namespace, your database backend, your reference manager, and which optional tiers to install. It is git-ignored, so your identity and paths never get committed. Secrets never live here at all; they go in .env.
The scaffolder generates research-config.yml from your setup answers; edit that file (not research-config.example.yml, which is the reference template) and re-run ./setup.sh any time to apply changes — it re-renders CLAUDE.md, CLAUDE_REFERENCE.md, and .mcp.json from the new values.
identity¶
identity:
author_name: "Jane Researcher" # used in generated docs and agent context
orcid: "" # optional, e.g. 0000-0000-0000-0000
email: "" # used only for self-addressed digest drafts
coauthors: [] # e.g. ["A. Colleague", "B. Advisor"]
project¶
project:
name: "My Research Assistant" # human-facing project title
namespace: "myresearch" # lowercase, no spaces. Derives launchd
# labels (com.myresearch.*), the notify
# group, and cron job names.
discipline: "one-line plain description of your field"
root: "" # auto-detected (git repo root); leave blank
root is used to derive the Claude Code per-project memory slug — leave it blank and let the scaffolder detect it.
domain¶
domain:
key_terms: [] # e.g. ["term A", "term B"]
Vocabulary the assistant should treat as first-class terms in your field.
journals¶
journals:
default: "Target Journal" # seeds the journal-agnostic agent templates
targets: [] # e.g. ["Journal One", "Journal Two"]
paths¶
paths:
protected_write_paths: [] # e.g. ["~/OneDrive/Manuscripts"]
'Never overwrite' locations the pre-write safety guard should protect. Use absolute paths or ~ home-relative. Leave empty for none.
database¶
database:
backend: files
url: "" # required only for `managed`
backend options (see Databases for the full walkthrough of each):
| Value | Tier | Server? |
|---|---|---|
files |
0 (default) | none — Markdown/CSV/JSON in data/ |
sqlite |
1 | none — single-file local DB + query helper |
duckdb |
1 | none — analytical single-file DB, pandas-friendly |
directus-local |
2 | Docker (localhost:8055) — self-hosted, free, ships its own MCP server + admin UI |
managed |
3 | hosted — bring-your-own backend (Railway/Supabase/…) |
references¶
references:
provider: bibtex
bibtex_path: "references/library.bib"
zotero:
user_id: ""
api_key_env: "ZOTERO_API_KEY" # name of the env var in .env, never the key itself
provider options (see References & integrations):
| Value | Notes |
|---|---|
bibtex (default) |
Point at a .bib / CSL-JSON / RIS file exported from any manager (Zotero, Mendeley, EndNote, Paperpile). Zero external service. |
zotero |
Opt-in richer adapter via the community zotero-mcp server (live library, full text, PDFs). Needs zotero.user_id + ZOTERO_API_KEY. |
mendeley |
Mendeley has a REST API but no turnkey MCP. Use bibtex (export a .bib) for now. |
integrations¶
integrations:
gmail:
enabled: false # weekly digest drafts (needs Gmail MCP connected)
scheduler¶
scheduler:
platform: launchd # launchd (macOS) | cron (Linux) | none
jobs:
nightly_memory:
enabled: false
at: "02:30"
weekly_digest:
enabled: false
day: "Mon"
at: "08:47"
Optional add-on module for headless scheduled jobs (nightly memory tasks, weekly digests). See the roadmap — full scheduled-jobs tooling is a planned module.
notifications¶
notifications:
enabled: true # macOS terminal-notifier; auto-off elsewhere
tiers¶
tiers:
research_memory: true # two-layer corpus memory engine (grep-queryable)
Toggles the corpus memory add-on.
See research-config.example.yml in the repo for the fully-commented reference file this page is generated from.