Config Manager
File: utils/config_manager.py (~1500 lines)
The ConfigManager is a singleton that centralizes all configuration loading, validation, and persistence.
Access
python
from utils.config_manager import get_config_manager
config = get_config_manager()Key methods
Character data
python
config.get_character_data() # All characters
config.load_characters() # Reload from disk
config.save_character(name, data) # Persist changesAPI configuration
python
config.get_core_config() # API keys, provider, endpoints
config.get_model_api_config(model_type) # Config for specific model roleFile system
python
config.get_workshop_path() # Steam Workshop directory
config.ensure_live2d_directory() # Create Live2D model directory
config.ensure_vrm_directory() # Create VRM model directoryConfiguration resolution
The config manager implements the priority chain:
- Check environment variables (
NEKO_*) - Check user config files (
core_config.json) - Check API provider definitions (
api_providers.json) - Fall back to code defaults (
config/__init__.py)
File discovery
The manager searches for config files in this order:
- User documents directory (
~/Documents/N.E.K.O/) - Project
config/directory - Creates defaults if nothing found
On Windows, the documents path is resolved via the Windows API (SHGetFolderPath). On macOS/Linux, it uses ~/Documents/.
