Skip to content

Doctor

The doctor command verifies you have the minimum needed dependencies for your installation mode. You can run it with:

ctxsift doctor

Doctor is the fastest way to check whether your chosen runtime path is actually usable.

Doctor reports required and optional runtime conditions, including:

  • Python and platform support
  • workspace initialization
  • optional remote dependencies
  • local inference prerequisites
  • CUDA availability when relevant
  • configured model and backend paths

Doctor should not be treated as a cosmetic step. It is the fastest way to catch a bad local model path, a missing optional package, or an incomplete remote setup before you start using compress and recall in a real workflow.

ctxsift configure
ctxsift doctor

If doctor fails, fix the dependency or configuration issue first.


ctxsift doctor resolves your effective config for the current directory (same resolution behavior as runtime), then runs a set of probes that are:

  1. Always-on core checks
  2. Mode-aware checks (local vs remote)
  3. Feature-aware checks (quantization, GGUF, optional packages)

Doctor is read-mostly, but it may initialize/validate your workspace database path to confirm schema health and extension availability.


Each line is rendered as:

[severity] check_name: status - detail

Status logic:

  • required + failing status means a hard blocker for normal operation.
  • warning + failing status means degraded behavior or misconfiguration risk.
  • optional + failing status means a capability is unavailable, but CtxSift may still run via fallback paths.

Check nameWhen it appearsWhy it mattersIf it fails
databaseAlwaysVerifies DB path can initialize and schema is usableCtxSift storage cannot operate reliably
git_workspaceAlwaysDetects git metadata support in current cwdCompression/recall still work, but git-aware context is reduced
remote_configAlwaysEnsures remote settings are coherent when remote mode is enabledRemote mode may be partially configured and unusable
sqlite_coreAlwaysConfirms core SQLite availabilityHard blocker for storage
sqlite_fts5AlwaysConfirms FTS5 virtual table supportRecall text search path is broken
sqlite_vecAlways (or skipped detail after DB failure)Confirms vector extension + embedding-model compatibilityRecall may fall back to FTS5-only
cudaOptionalIndicates whether torch CUDA path is usableLocal CUDA acceleration unavailable
onnxruntimeOptionalEnables faster CPU embeddings path in supported setupsEmbeddings can still run via torch fallback
flashattentionOptionalExtra attention backend for supported CUDA stacksUsually safe to ignore unless you expect this backend
litellmRemote mode onlyRequired adapter package for remote providersRemote compression will not run
local_runtimeLocal mode onlyValidates local runtime backend can resolve from configLocal compression backend unusable until fixed
llama_cppLocal CPU (llama.cpp) pathConfirms CPU local runtime package availabilityCPU local compression unavailable
gguf_artifactLocal CPU (llama.cpp) pathVerifies configured GGUF file resolution/cache stateWrong GGUF config blocks CPU local compression
accelerateLocal CUDA with quantization enabledRequired support package for quantized transformer loadingQuantized load path may fail
bitsandbytesLocal CUDA with bnb-* quantization modesRequired for BnB quantizationBnB quantized path will fail

Prioritize these checks:

  1. database, sqlite_core, sqlite_fts5
  2. local_runtime, llama_cpp, gguf_artifact
  3. sqlite_vec

If gguf_artifact says “not cached locally yet,” that is not necessarily an error. First run may download it.

Prioritize these checks:

  1. database, sqlite_core, sqlite_fts5
  2. local_runtime, cuda
  3. accelerate and bitsandbytes (only if quantization is enabled)

flashattention is performance-oriented, not a strict requirement for most environments.

Prioritize these checks:

  1. remote_config (base URL + model name coherence)
  2. litellm
  3. Core storage checks (database, sqlite_core, sqlite_fts5, sqlite_vec)

Even in remote compression mode, embeddings/recall are still local checks.


remote_config warns about missing model name

Section titled “remote_config warns about missing model name”

Cause: remote.base_url is set but remote.model_name is empty.

Fix:

ctxsift config set remote.model_name <provider-model>

Cause: remote extras not installed.

Fix:

uv tool install "ctxsift[remote]"

Cause: base local CPU runtime dependency unavailable.

Fix:

  1. Reinstall or upgrade CtxSift base package.
  2. Ensure your platform build prerequisites are present (compiler toolchain).

bitsandbytes fails with bnb-* quantization

Section titled “bitsandbytes fails with bnb-* quantization”

Cause: quantization mode selected, but package/runtime compatibility missing.

Fix:

uv tool install "ctxsift[gpu,quant]"

Then re-run doctor.

Cause: vector index in DB was built with a different embedding model than current config.

Impact: recall degrades to FTS5-only until alignment is restored.

Fix options:

  1. Revert embedding model to the prior value.
  2. Rebuild/reinitialize workspace DB to regenerate vector index with the current embedding model.

Run doctor:

  1. Right after ctxsift configure
  2. After changing local/remote backend settings
  3. After changing embedding model or quantization mode
  4. After upgrading Python, CUDA, PyTorch, or optional runtime packages

For most teams, this catches setup drift before it shows up as compression failures or degraded recall quality.


Read Compress and Recall to understand the two core operations.