# AbstractCore Centralized Configuration AbstractCore provides a unified configuration system that manages default models, cache directories, logging settings, and other package-wide preferences from a single location. ## Quick Setup ```bash # Interactive guided setup (8 steps: model, vision, API keys, server auth, audio, video, embeddings, logging) abstractcore --config # Check readiness of all subsystems + download/install what's missing abstractcore --install # Auto-download everything missing (non-interactive) abstractcore --install --yes # View current configuration abstractcore --status ``` ## Configuration File Location Configuration is stored in: `~/.abstractcore/config/abstractcore.json` API keys saved via `--config` or `--set-api-key` are persisted here and automatically injected into the process environment (e.g. `OPENAI_API_KEY`) at startup. Environment variables always take precedence over config-persisted keys. HTTP server settings saved via `--config` or the `--set-server-*` commands are also injected into the corresponding `ABSTRACTCORE_SERVER_*`, `HOST`, and `PORT` environment variables when those variables are not already set. A save writes back the keys this version does not know: your own top-level keys, unknown fields of any section (for example `vision.user_note`), and keys written by a newer AbstractCore (`capability_defaults` keys and route keys this version cannot parse, `provider_profiles` keys, unknown columns of a profile that still exists). Known keys are validated on every save, and a route or profile you delete stays deleted. A file that does not parse stops the load with its path and the parse error; it is never renamed, replaced or shadowed by defaults. When the file loads, a speech input route (`input.voice`) that names a catalog download instead of its engine (`huggingface` / `Systran/faster-whisper-base`) is rewritten to the engine route the catalog gives (`faster-whisper` / `base`), after a copy of the file is written to `abstractcore.json.route-repair-