AutoRAG Lite setup
Use this skill when the user wants AutoRAG's indexing lifecycle without a
model: initialize a config, build and refresh indexes, watch roots, and inspect
index health. Everything here is model-free. Use autorag-setup instead when a
search model must be configured or repaired. Use autorag-lite-search for
retrieval, reports, evidence, and feedback.
Safety
- Inspect only non-secret config metadata:
searchPaths, workspacePath,
memoryPath, minSync, jikji, datasources, datasourceAccess.
- Never print, copy, migrate, compare, or persist credential values. Store only
environment-variable names such as
tokenEnv or apiKeyEnv.
- Never move, rename, edit, or delete source documents. Lite commands write
indexes only under the configured workspace
.autorag/ directory and
Jikji's per-source .jikji/ caches.
- Do not index system trees, app bundles, caches, credential stores,
node_modules, .git, dist, build, target, .cache, .autorag, or
.jikji.
Install the CLI if needed
The CLI is @autorag/librarian (autorag). Runtime is Node.js >= 24 or Bun.
command -v autorag >/dev/null || bun install -g @autorag/librarian
autorag lite --help
If Bun is unavailable, npm install -g @autorag/librarian is acceptable.
Initialize a model-free config
autorag lite init \
--search-paths "/path/to/documents,/path/to/notes" \
--workspace "/path/to/workspace" \
--memory-path "/path/to/memory.json"
lite init writes the configured model-free lifecycle config. Use --force
only when intentionally replacing an existing config. Explicit user paths win;
otherwise propose one to three document-dense roots and get approval before
indexing. Supported parsed formats are md, markdown, txt, text, pdf,
docx, pptx, xlsx, xls, hwp, hwpx, and eml. Legacy .doc is not
a supported parsed format.
Config resolution follows the usual order: --config, AUTORAG_CONFIG,
$AUTORAG_HOME/config.json, or ~/.autorag/config.json. Environment overrides
include AUTORAG_HOME, AUTORAG_CONFIG, AUTORAG_SEARCH_PATHS,
AUTORAG_WORKSPACE, and AUTORAG_MEMORY_PATH.
Probe and configure datasources (setup wizard)
autorag lite ui is still in development — do not recommend it for datasource
setup. Configure datasources directly in trusted config, wizard-style:
- Probe every datasource for setup feasibility before asking the user
anything: the backing CLI exists (
katok, discrawl, slacrawl,
wacrawl, telecrawl, notcrawl, qmd, mailcrawl, rclone), its
local store or archive is present, and any credentials it needs are
available as environment variables or in the tool's own external
configuration.
- Auto-configure every datasource that probes feasible — write its trusted
datasources / datasourceAccess entries without asking. For example,
when Slack (slacrawl) and Discord (discrawl) are installed, set both up
automatically.
- Skip every datasource that probes infeasible (for example Notion or
Telegram when their CLIs are not installed) and always report the skipped
list to the user, with what is missing for each.
- Set up a skipped datasource only when the user explicitly asks for it:
install or authenticate the backing CLI first, then configure it.
- E-mail datasources (
gmail, mail-export, mailcrawl) matter to most
users — always probe them and report their status, even when they end up
skipped.
Datasource skills belong in trusted config and remain default-deny.
Config keys may be builtin template names (kakao, whatsapp, telegram,
slack, discord, clawgallery, notion, github, cloud-drive, gmail,
mail-export, mailcrawl, obsidian, rss, spotlight) or connection
aliases with "type": "<template>". Unknown names are skipped with an
unknown-datasource-skill warning; they do not fail config resolution.
datasourceAccess.allowedTags and allowedScopes narrow trusted access and
can never grant it. Store only env-var names such as tokenEnv or
apiKeyEnv, never credential values.
Build and refresh indexes
autorag lite refresh --json
autorag lite refresh --method parsed,minsync --json
autorag lite refresh --full --json
autorag lite refresh --force --json
- A plain
refresh is incremental: it syncs parsed mirrors, MinSync, Jikji,
and configured datasources against what changed.
--full and --force both request a full resync. Use them only when
incremental refresh is not enough, such as after config changes to roots or
index settings.
--method <csv> deliberately narrows the refresh. Valid values are
parsed, minsync, datasources, jikji, and all. Omit the flag to run
all methods. Unknown values are rejected.
- MinSync and Jikji auto-install on first use by default. If they are missing
or broken, run a full refresh or return to setup rather than silently
degrading to lexical-only search.
- MinSync's default embedder is local EmbeddingGemma (768 dimensions, served
locally via Ollama): no embedder flags and no API key are needed, and no
corpus text leaves the machine. During setup, verify the local model is
available (
ollama pull embeddinggemma with ollama serve running);
override it only when intentionally using a remote embedder.
- Exact duplicate exclusion during refresh is enabled by default via the
external
dupey CLI. Install dupey during setup when it is missing
(command -v dupey || cargo install dupey) and tell the user the feature is
available; when installation is impossible, refresh continues without it
and the user is told duplicate exclusion is off. Set
"excludeExactDuplicates": false to index every copy.
Retrieval requires a completed refresh. autorag lite retrieve before any
refresh exits with code 2 and an index-not-ready diagnostic; a successful
refresh is recorded even when the corpus is empty or only a non-parsed method
was selected. Always refresh first, and refresh again when roots change.
Jikji is a discovery/indexing preparer, not a lite retrieval method.
Watch and scheduled freshness
autorag lite watch --once --json
autorag lite watch
Prefer non-daemon autorag lite watch --once from cron, launchd, a systemd
user timer, or Task Scheduler, hourly by default (every 1 hour; shorten only
when the user asks for fresher indexes). Use the same config as retrieval,
avoid overlapping runs, and keep logs outside source trees. --immediate
triggers a first refresh on start and --debounce-ms N tunes change
coalescing. Once the schedule is installed, tell the user right away that
hourly freshness is set up.
Status and index maintenance
autorag lite status --json
autorag lite health --json
autorag lite index rebuild --yes --json
autorag lite index reset --method parsed --yes --json
autorag lite duplicates --json
status shows path-opaque corpus freshness and index health. health is an
alias of status; neither resolves a model.
index reset and index rebuild remove or rebuild only workspace
.autorag indexes selected by --method. They never target source
documents.
duplicates scans duplicate document families read-only and never deletes
or moves files.
Unavailable components and failure handling
Missing optional components degrade gracefully: refresh and retrieval continue
with path-opaque diagnostics such as minsync-unavailable or
retrieval-method-failed instead of failing the whole run. Exit codes are 0
on success, 2 for config or usage errors, and 1 for runtime errors. When a
component stays unavailable after a full refresh, return to setup rather than
accepting silently degraded search.
Completion condition
Setup is complete only when the CLI is installed, roots are approved, a
non-secret model-free config is written, every datasource has been probed and
the auto-configured and skipped lists reported to the user, dupey is installed
or its absence reported, refresh has built the requested indexes, status
reports healthy indexes, and any requested watch schedule is installed or
verified with the user told it is active.
1---2name: autorag-lite-setup3description: Initialize, index, refresh, and maintain the model-free AutoRAG Lite lifecycle (config, roots, datasources, refresh, watch, status, index reset/rebuild) without configuring any model. Use when autorag lite init/refresh/status is needed, indexes are missing or stale, or the user wants local document indexing without a search model.4license: MIT5---67# AutoRAG Lite setup89Use this skill when the user wants AutoRAG's indexing lifecycle without a10model: initialize a config, build and refresh indexes, watch roots, and inspect11index health. Everything here is model-free. Use `autorag-setup` instead when a12search model must be configured or repaired. Use `autorag-lite-search` for13retrieval, reports, evidence, and feedback.1415## Safety1617- Inspect only non-secret config metadata: `searchPaths`, `workspacePath`,18 `memoryPath`, `minSync`, `jikji`, `datasources`, `datasourceAccess`.19- Never print, copy, migrate, compare, or persist credential values. Store only20 environment-variable names such as `tokenEnv` or `apiKeyEnv`.21- Never move, rename, edit, or delete source documents. Lite commands write22 indexes only under the configured workspace `.autorag/` directory and23 Jikji's per-source `.jikji/` caches.24- Do not index system trees, app bundles, caches, credential stores,25 `node_modules`, `.git`, `dist`, `build`, `target`, `.cache`, `.autorag`, or26 `.jikji`.2728## Install the CLI if needed2930The CLI is `@autorag/librarian` (`autorag`). Runtime is Node.js >= 24 or Bun.3132```bash33command -v autorag >/dev/null || bun install -g @autorag/librarian34autorag lite --help35```3637If Bun is unavailable, `npm install -g @autorag/librarian` is acceptable.3839## Initialize a model-free config4041```bash42autorag lite init \43 --search-paths "/path/to/documents,/path/to/notes" \44 --workspace "/path/to/workspace" \45 --memory-path "/path/to/memory.json"46```4748`lite init` writes the configured model-free lifecycle config. Use `--force`49only when intentionally replacing an existing config. Explicit user paths win;50otherwise propose one to three document-dense roots and get approval before51indexing. Supported parsed formats are `md`, `markdown`, `txt`, `text`, `pdf`,52`docx`, `pptx`, `xlsx`, `xls`, `hwp`, `hwpx`, and `eml`. Legacy `.doc` is not53a supported parsed format.5455Config resolution follows the usual order: `--config`, `AUTORAG_CONFIG`,56`$AUTORAG_HOME/config.json`, or `~/.autorag/config.json`. Environment overrides57include `AUTORAG_HOME`, `AUTORAG_CONFIG`, `AUTORAG_SEARCH_PATHS`,58`AUTORAG_WORKSPACE`, and `AUTORAG_MEMORY_PATH`.5960## Probe and configure datasources (setup wizard)6162`autorag lite ui` is still in development — do not recommend it for datasource63setup. Configure datasources directly in trusted config, wizard-style:64651. Probe every datasource for setup feasibility before asking the user66 anything: the backing CLI exists (`katok`, `discrawl`, `slacrawl`,67 `wacrawl`, `telecrawl`, `notcrawl`, `qmd`, `mailcrawl`, `rclone`), its68 local store or archive is present, and any credentials it needs are69 available as environment variables or in the tool's own external70 configuration.712. Auto-configure every datasource that probes feasible — write its trusted72 `datasources` / `datasourceAccess` entries without asking. For example,73 when Slack (`slacrawl`) and Discord (`discrawl`) are installed, set both up74 automatically.753. Skip every datasource that probes infeasible (for example Notion or76 Telegram when their CLIs are not installed) and always report the skipped77 list to the user, with what is missing for each.784. Set up a skipped datasource only when the user explicitly asks for it:79 install or authenticate the backing CLI first, then configure it.805. E-mail datasources (`gmail`, `mail-export`, `mailcrawl`) matter to most81 users — always probe them and report their status, even when they end up82 skipped.8384Datasource skills belong in trusted config and remain default-deny.8586Config keys may be builtin template names (`kakao`, `whatsapp`, `telegram`,87`slack`, `discord`, `clawgallery`, `notion`, `github`, `cloud-drive`, `gmail`,88`mail-export`, `mailcrawl`, `obsidian`, `rss`, `spotlight`) or connection89aliases with `"type": "<template>"`. Unknown names are skipped with an90`unknown-datasource-skill` warning; they do not fail config resolution.91`datasourceAccess.allowedTags` and `allowedScopes` narrow trusted access and92can never grant it. Store only env-var names such as `tokenEnv` or93`apiKeyEnv`, never credential values.9495## Build and refresh indexes9697```bash98autorag lite refresh --json99autorag lite refresh --method parsed,minsync --json100autorag lite refresh --full --json101autorag lite refresh --force --json102```103104- A plain `refresh` is incremental: it syncs parsed mirrors, MinSync, Jikji,105 and configured datasources against what changed.106- `--full` and `--force` both request a full resync. Use them only when107 incremental refresh is not enough, such as after config changes to roots or108 index settings.109- `--method <csv>` deliberately narrows the refresh. Valid values are110 `parsed`, `minsync`, `datasources`, `jikji`, and `all`. Omit the flag to run111 all methods. Unknown values are rejected.112- MinSync and Jikji auto-install on first use by default. If they are missing113 or broken, run a full refresh or return to setup rather than silently114 degrading to lexical-only search.115- MinSync's default embedder is local EmbeddingGemma (768 dimensions, served116 locally via Ollama): no embedder flags and no API key are needed, and no117 corpus text leaves the machine. During setup, verify the local model is118 available (`ollama pull embeddinggemma` with `ollama serve` running);119 override it only when intentionally using a remote embedder.120- Exact duplicate exclusion during refresh is enabled by default via the121 external `dupey` CLI. Install dupey during setup when it is missing122 (`command -v dupey || cargo install dupey`) and tell the user the feature is123 available; when installation is impossible, refresh continues without it124 and the user is told duplicate exclusion is off. Set125 `"excludeExactDuplicates": false` to index every copy.126127Retrieval requires a completed refresh. `autorag lite retrieve` before any128refresh exits with code 2 and an `index-not-ready` diagnostic; a successful129refresh is recorded even when the corpus is empty or only a non-parsed method130was selected. Always refresh first, and refresh again when roots change.131Jikji is a discovery/indexing preparer, not a lite retrieval method.132133## Watch and scheduled freshness134135```bash136autorag lite watch --once --json137autorag lite watch138```139140Prefer non-daemon `autorag lite watch --once` from cron, launchd, a systemd141user timer, or Task Scheduler, hourly by default (every 1 hour; shorten only142when the user asks for fresher indexes). Use the same config as retrieval,143avoid overlapping runs, and keep logs outside source trees. `--immediate`144triggers a first refresh on start and `--debounce-ms N` tunes change145coalescing. Once the schedule is installed, tell the user right away that146hourly freshness is set up.147148## Status and index maintenance149150```bash151autorag lite status --json152autorag lite health --json153autorag lite index rebuild --yes --json154autorag lite index reset --method parsed --yes --json155autorag lite duplicates --json156```157158- `status` shows path-opaque corpus freshness and index health. `health` is an159 alias of `status`; neither resolves a model.160- `index reset` and `index rebuild` remove or rebuild only workspace161 `.autorag` indexes selected by `--method`. They never target source162 documents.163- `duplicates` scans duplicate document families read-only and never deletes164 or moves files.165166## Unavailable components and failure handling167168Missing optional components degrade gracefully: refresh and retrieval continue169with path-opaque diagnostics such as `minsync-unavailable` or170`retrieval-method-failed` instead of failing the whole run. Exit codes are 0171on success, 2 for config or usage errors, and 1 for runtime errors. When a172component stays unavailable after a full refresh, return to setup rather than173accepting silently degraded search.174175## Completion condition176177Setup is complete only when the CLI is installed, roots are approved, a178non-secret model-free config is written, every datasource has been probed and179the auto-configured and skipped lists reported to the user, dupey is installed180or its absence reported, `refresh` has built the requested indexes, `status`181reports healthy indexes, and any requested watch schedule is installed or182verified with the user told it is active.