Aider Configuration - SerpentMail Project
This skill provides a production-ready Aider configuration file from the malkoG/serpent_mail project. It includes comprehensive settings for model selection, API configuration, git integration, output formatting, and workflow preferences.
Key Configuration Highlights
**Auto-commits disabled** for manual control over git history**Read-only documentation files** specified (README.md, pyproject.toml, .cursorrules)**Standard history files** configured for chat persistence**Auto-lint enabled** by default**Dark mode colors** for terminal output**Update checking enabled** on launchInstructions
1. **Locate or create your Aider configuration directory**
- For project-specific config: Navigate to your git repository root
- For global config: Use your home directory
2. **Create the configuration file**
- Create a file named `.aider.conf.yml` in the chosen directory
- Copy the complete configuration below into this file
3. **Customize the configuration**
- Review the `read:` section and update file paths to match your project's documentation
- Add your API keys if desired (or use environment variables/`.env` file for better security)
- Uncomment and modify any settings that differ from defaults
- Consider enabling `--auto-test` if you have a test suite configured
4. **Set up API keys securely** (recommended approach)
- Create a `.env` file in your git root
- Add API keys there instead of in the YAML file
- Example: `ANTHROPIC_API_KEY=your_key_here`
5. **Verify the configuration**
- Run `aider --help` to ensure configuration is loaded
- Check for any warnings about invalid settings
- Test with a simple coding task
Configuration File
```yaml
Aider configuration file
##########################################################
Sample .aider.conf.yml
This file lists *all* the valid configuration entries.
Place in your home dir, or at the root of your git repo.
##########################################################
Note: You can only put OpenAI and Anthropic API keys in the yaml
config file. Keys for all APIs can be stored in a .env file
https://aider.chat/docs/config/dotenv.html
##########
options:
show this help message and exit
#help: xxx
#############
Main model:
Specify the model to use for the main chat
#model: xxx
Use claude-3-opus-20240229 model for the main chat
#opus: false
Use claude-3-5-sonnet-20241022 model for the main chat
#sonnet: false
Use claude-3-5-haiku-20241022 model for the main chat
#haiku: false
Use gpt-4-0613 model for the main chat
#4: false
Use gpt-4o model for the main chat
#4o: false
Use gpt-4o-mini model for the main chat
#mini: false
Use gpt-4-1106-preview model for the main chat
#4-turbo: false
Use gpt-3.5-turbo model for the main chat
#35turbo: false
Use deepseek/deepseek-chat model for the main chat
#deepseek: false
Use o1-mini model for the main chat
#o1-mini: false
Use o1-preview model for the main chat
#o1-preview: false
########################
API Keys and settings:
Specify the OpenAI API key
#openai-api-key: xxx
Specify the Anthropic API key
#anthropic-api-key: xxx
Specify the api base url
#openai-api-base: xxx
(deprecated, use --set-env OPENAI_API_TYPE=<value>)
#openai-api-type: xxx
(deprecated, use --set-env OPENAI_API_VERSION=<value>)
#openai-api-version: xxx
(deprecated, use --set-env OPENAI_API_DEPLOYMENT_ID=<value>)
#openai-api-deployment-id: xxx
(deprecated, use --set-env OPENAI_ORGANIZATION=<value>)
#openai-organization-id: xxx
Set an environment variable (to control API settings, can be used multiple times)
#set-env: xxx
Specify multiple values like this:
#set-env:
- xxx
- yyy
- zzz
Set an API key for a provider (eg: --api-key provider=<key> sets PROVIDER_API_KEY=<key>)
#api-key: xxx
Specify multiple values like this:
#api-key:
- xxx
- yyy
- zzz
#################
Model settings:
List known models which match the (partial) MODEL name
#list-models: xxx
Specify a file with aider model settings for unknown models
#model-settings-file: .aider.model.settings.yml
Specify a file with context window and costs for unknown models
#model-metadata-file: .aider.model.metadata.json
Add a model alias (can be used multiple times)
#alias: xxx
Specify multiple values like this:
#alias:
- xxx
- yyy
- zzz
Set the reasoning_effort API parameter (default: not set)
#reasoning-effort: xxx
Verify the SSL cert when connecting to models (default: True)
#verify-ssl: true
Timeout in seconds for API calls (default: None)
#timeout: xxx
Specify what edit format the LLM should use (default depends on model)
#edit-format: xxx
Use architect edit format for the main chat
#architect: false
Specify the model to use for commit messages and chat history summarization (default depends on --model)
#weak-model: xxx
Specify the model to use for editor tasks (default depends on --model)
#editor-model: xxx
Specify the edit format for the editor model (default: depends on editor model)
#editor-edit-format: xxx
Only work with models that have meta-data available (default: True)
#show-model-warnings: true
Soft limit on tokens for chat history, after which summarization begins. If unspecified, defaults to the model's max_chat_history_tokens.
#max-chat-history-tokens: xxx
#################
Cache settings:
Enable caching of prompts (default: False)
#cache-prompts: false
Number of times to ping at 5min intervals to keep prompt cache warm (default: 0)
#cache-keepalive-pings: false
###################
Repomap settings:
Suggested number of tokens to use for repo map, use 0 to disable
#map-tokens: xxx
Control how often the repo map is refreshed. Options: auto, always, files, manual (default: auto)
#map-refresh: auto
Multiplier for map tokens when no files are specified (default: 2)
#map-multiplier-no-files: true
################
History Files:
Specify the chat input history file (default: .aider.input.history)
#input-history-file: .aider.input.history
Specify the chat history file (default: .aider.chat.history.md)
#chat-history-file: .aider.chat.history.md
Restore the previous chat history messages (default: False)
#restore-chat-history: false
Log the conversation with the LLM to this file (for example, .aider.llm.history)
#llm-history-file: xxx
##################
Output settings:
Use colors suitable for a dark terminal background (default: False)
#dark-mode: false
Use colors suitable for a light terminal background (default: False)
#light-mode: false
Enable/disable pretty, colorized output (default: True)
#pretty: true
Enable/disable streaming responses (default: True)
#stream: true
Set the color for user input (default: #00cc00)
#user-input-color: #00cc00
Set the color for tool output (default: None)
#tool-output-color: xxx
Set the color for tool error messages (default: #FF2222)
#tool-error-color: #FF2222
Set the color for tool warning messages (default: #FFA500)
#tool-warning-color: #FFA500
Set the color for assistant output (default: #0088ff)
#assistant-output-color: #0088ff
Set the color for the completion menu (default: terminal's default text color)
#completion-menu-color: xxx
Set the background color for the completion menu (default: terminal's default background color)
#completion-menu-bg-color: xxx
Set the color for the current item in the completion menu (default: terminal's default background color)
#completion-menu-current-color: xxx
Set the background color for the current item in the completion menu (default: terminal's default text color)
#completion-menu-current-bg-color: xxx
Set the markdown code theme (default: default, other options include monokai, solarized-dark, solarized-light, or a Pygments builtin style, see https://pygments.org/styles for available themes)
#code-theme: default
Show diffs when committing changes (default: False)
#show-diffs: false
###############
Git settings:
Enable/disable looking for a git repo (default: True)
#git: true
Enable/disable adding .aider* to .gitignore (default: True)
#gitignore: true
Specify the aider ignore file (default: .aiderignore in git root)
#aiderignore: .aiderignore
Only consider files in the current subtree of the git repository
#subtree-only: false
Enable/disable auto commit of LLM changes (default: True)
auto-commits: false
Enable/disable commits when repo is found dirty (default: True)
#dirty-commits: true
Attribute aider code changes in the git author name (default: True)
#attribute-author: true
Attribute aider commits in the git committer name (default: True)
#attribute-committer: true
Prefix commit messages with 'aider: ' if aider authored the changes (default: False)
#attribute-commit-message-author: false
Prefix all commit messages with 'aider: ' (default: False)
#attribute-commit-message-committer: false
Commit all pending changes with a suitable commit message, then exit
#commit: false
Specify a custom prompt for generating commit messages
#commit-prompt: xxx
Perform a dry run without modifying files (default: False)
#dry-run: false
Skip the sanity check for the git repository (default: False)
#skip-sanity-check-repo: false
Enable/disable watching files for ai coding comments (default: False)
#watch-files: false
########################
Fixing and committing:
Lint and fix provided files, or dirty files if none provided
#lint: false
Specify lint commands to run for different languages, eg: "python: flake8 --select=..." (can be used multiple times)
#lint-cmd: xxx
Specify multiple values like this:
#lint-cmd:
- xxx
- yyy
- zzz
Enable/disable automatic linting after changes (default: True)
#auto-lint: true
Specify command to run tests
#test-cmd: xxx
Enable/disable automatic testing after changes (default: False)
#auto-test: false
Run tests, fix problems found and then exit
#test: false
############
Analytics:
Enable/disable analytics for current session (default: random)
#analytics: xxx
Specify a file to log analytics events
#analytics-log: xxx
Permanently disable analytics
#analytics-disable: false
############
Upgrading:
Check for updates and return status in the exit code
#just-check-update: false
Check for new aider versions on launch
#check-update: true
Show release notes on first run of new version (default: None, ask user)
#show-release-notes: xxx
Install the latest version from the main branch
#install-main-branch: false
Upgrade aider to the latest version from PyPI
#upgrade: false
Show the version number and exit
#version: xxx
########
Modes:
Specify a single message to send the LLM, process reply then exit (disables chat mode)
#message: xxx
Specify a file containing the message to send the LLM, process reply, then exit (disables chat mode)
#message-file: xxx
Run aider in your browser (default: False)
#gui: false
Enable automatic copy/paste of chat between aider and web UI (default: False)
#copy-paste: false
Apply the changes from the given file instead of running the chat (debug)
#apply: xxx
Apply clipboard contents as edits using the main model's editor format
#apply-clipboard-edits: false
Do all startup activities then exit before accepting user input (debug)
#exit: false
Print the repo map and exit (debug)
#show-repo-map: false
Print the system prompts and exit (debug)
#show-prompts: false
#################
Voice settings:
Audio format for voice recording (default: wav). webm and mp3 require ffmpeg
#voice-format: wav
Specify the language for voice using ISO 639-1 code (default: auto)
#voice-language: en
Specify the input device name for voice recording
#voice-input-device: xxx
#################
Other settings:
specify a file to edit (can be used multiple times)
#file: xxx
Specify multiple values like this:
#file:
- xxx
- yyy
- zzz
specify a read-only file (can be used multiple times)
#read: xxx
Specify multiple values like this:
read:
- README.md
- pyproject.toml
- .cursorrules
Use VI editing mode in the terminal (default: False)
#vim: false
Specify the language to use in the chat (default: None, uses system settings)
#chat-language: xxx
Always say yes to every confirmation
#yes-always: false
Enable verbose output
#verbose: false
Load and execute /commands from a file on launch
#load: xxx
Specify the encoding for input and output (default: utf-8)
#encoding: utf-8
Line endings to use when writing files (default: platform)
#line-endings: platform
Specify the config file (default: search for .aider.conf.yml in git root, cwd or home directory)
#config: xxx
Specify the .env file to load (default: .env in git root)
#env-file: .env
Enable/disable suggesting shell commands (default: True)
#suggest-shell-commands: true
Enable/disable fancy input with history and completion (default: True)
#fancy-input: true
Enable/disable multi-line input mode with Meta-Enter to submit (default: False)
#multiline: false
Enable/disable detection and offering to add URLs to chat (default: True)
#detect-urls: true
```
Important Notes
**Security**: Never commit API keys to version control. Use `.env` files or environment variables instead.**Read-only files**: The configuration specifies README.md, pyproject.toml, and .cursorrules as read-only. Adjust these for your project.**Auto-commits disabled**: This gives you manual control over git history. Enable by setting `auto-commits: true` if desired.**Model selection**: All model shortcuts are commented out. Uncomment your preferred model or specify via `--model` flag.Common Customizations
Enable auto-testing: Set `auto-test: true` and configure `test-cmd`Add lint commands: Uncomment `lint-cmd` and specify per-language lintersChange color theme: Adjust output color settings for your terminal themeEnable voice input: Configure `voice-format` and `voice-input-device`