From e11faadf39058463e2715f688eda59bf6ec4e60c Mon Sep 17 00:00:00 2001 From: Philippe de Reynal <1218704+preynal@users.noreply.github.com> Date: Sat, 30 Nov 2024 11:24:34 +0100 Subject: [PATCH] feat: ability to select audio input device --- aider/args.py | 8 +- aider/commands.py | 2 +- aider/voice.py | 27 +- aider/website/assets/sample.env | 3 + aider/website/docs/config/dotenv.md | 5 +- aider/website/docs/config/options.md | 553 ++++++++++++++------------- 6 files changed, 317 insertions(+), 281 deletions(-) diff --git a/aider/args.py b/aider/args.py index 58a08f5a0..0c4df7ebd 100644 --- a/aider/args.py +++ b/aider/args.py @@ -22,7 +22,7 @@ def default_env_file(git_root): def get_parser(default_config_files, git_root): parser = configargparse.ArgumentParser( - description="aider is AI pair programming in your terminal", + description="Aider is AI pair programming in your terminal", add_config_file_help=True, default_config_files=default_config_files, config_file_parser_class=configargparse.YAMLConfigFileParser, @@ -770,6 +770,12 @@ def get_parser(default_config_files, git_root): default="en", help="Specify the language for voice using ISO 639-1 code (default: auto)", ) + group.add_argument( + "--voice-input-device", + metavar="VOICE_INPUT_DEVICE", + default=None, + help="Specify the input device name for voice recording", + ) return parser diff --git a/aider/commands.py b/aider/commands.py index fea6a208d..fdb6ea4b8 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -1085,7 +1085,7 @@ class Commands: self.io.tool_error("To use /voice you must provide an OpenAI API key.") return try: - self.voice = voice.Voice(audio_format=self.args.voice_format) + self.voice = voice.Voice(audio_format=self.args.voice_format, device_name=self.args.voice_input_device) except voice.SoundDeviceError: self.io.tool_error( "Unable to import `sounddevice` and/or `soundfile`, is portaudio installed?" diff --git a/aider/voice.py b/aider/voice.py index 47fb49c6e..1e9f700b6 100644 --- a/aider/voice.py +++ b/aider/voice.py @@ -34,7 +34,7 @@ class Voice: threshold = 0.15 - def __init__(self, audio_format="wav"): + def __init__(self, audio_format="wav", device_name=None): if sf is None: raise SoundDeviceError try: @@ -42,6 +42,27 @@ class Voice: import sounddevice as sd self.sd = sd + + + devices = sd.query_devices() + + if device_name: + # Find the device with matching name + device_id = None + for i, device in enumerate(devices): + if device_name in device["name"]: + device_id = i + break + if device_id is None: + available_inputs = [d["name"] for d in devices if d["max_input_channels"] > 0] + raise ValueError(f"Device '{device_name}' not found. Available input devices: {available_inputs}") + + print(f"Using input device: {device_name} (ID: {device_id})") + + self.device_id = device_id + else: + self.device_id = None + except (OSError, ModuleNotFoundError): raise SoundDeviceError if audio_format not in ["wav", "mp3", "webm"]: @@ -93,7 +114,7 @@ class Voice: temp_wav = tempfile.mktemp(suffix=".wav") try: - sample_rate = int(self.sd.query_devices(None, "input")["default_samplerate"]) + sample_rate = int(self.sd.query_devices(self.device_id, "input")["default_samplerate"]) except (TypeError, ValueError): sample_rate = 16000 # fallback to 16kHz if unable to query device except self.sd.PortAudioError: @@ -104,7 +125,7 @@ class Voice: self.start_time = time.time() try: - with self.sd.InputStream(samplerate=sample_rate, channels=1, callback=self.callback): + with self.sd.InputStream(samplerate=sample_rate, channels=1, callback=self.callback, device=self.device_id): prompt(self.get_prompt, refresh_interval=0.1) except self.sd.PortAudioError as err: raise SoundDeviceError(f"Error accessing audio input device: {err}") diff --git a/aider/website/assets/sample.env b/aider/website/assets/sample.env index 3642110af..cc96cf30e 100644 --- a/aider/website/assets/sample.env +++ b/aider/website/assets/sample.env @@ -368,3 +368,6 @@ ## Specify the language for voice using ISO 639-1 code (default: auto) #AIDER_VOICE_LANGUAGE=en + +## Specify the voice input device name (default: system default) +#AIDER_VOICE_INPUT_DEVICE="MacBook Pro Microphone" diff --git a/aider/website/docs/config/dotenv.md b/aider/website/docs/config/dotenv.md index 3dbec38dd..44d22a716 100644 --- a/aider/website/docs/config/dotenv.md +++ b/aider/website/docs/config/dotenv.md @@ -410,7 +410,8 @@ cog.outl("```") ## Specify the language for voice using ISO 639-1 code (default: auto) #AIDER_VOICE_LANGUAGE=en + +## Specify the voice input device name (default: system default) +#AIDER_VOICE_INPUT_DEVICE="MacBook Pro Microphone" ``` - - diff --git a/aider/website/docs/config/options.md b/aider/website/docs/config/options.md index abba8ff0f..7b76aa312 100644 --- a/aider/website/docs/config/options.md +++ b/aider/website/docs/config/options.md @@ -82,7 +82,7 @@ usage: aider [-h] [--openai-api-key] [--anthropic-api-key] [--model] ## options: ### `--help` -show this help message and exit +show this help message and exit Aliases: - `-h` - `--help` @@ -90,51 +90,51 @@ Aliases: ## Main: ### `--openai-api-key OPENAI_API_KEY` -Specify the OpenAI API key -Environment variable: `OPENAI_API_KEY` +Specify the OpenAI API key +Environment variable: `OPENAI_API_KEY` ### `--anthropic-api-key ANTHROPIC_API_KEY` -Specify the Anthropic API key -Environment variable: `ANTHROPIC_API_KEY` +Specify the Anthropic API key +Environment variable: `ANTHROPIC_API_KEY` ### `--model MODEL` -Specify the model to use for the main chat -Environment variable: `AIDER_MODEL` +Specify the model to use for the main chat +Environment variable: `AIDER_MODEL` ### `--opus` -Use claude-3-opus-20240229 model for the main chat -Environment variable: `AIDER_OPUS` +Use claude-3-opus-20240229 model for the main chat +Environment variable: `AIDER_OPUS` ### `--sonnet` -Use claude-3-5-sonnet-20241022 model for the main chat -Environment variable: `AIDER_SONNET` +Use claude-3-5-sonnet-20241022 model for the main chat +Environment variable: `AIDER_SONNET` ### `--haiku` -Use claude-3-5-haiku-20241022 model for the main chat -Environment variable: `AIDER_HAIKU` +Use claude-3-5-haiku-20241022 model for the main chat +Environment variable: `AIDER_HAIKU` ### `--4` -Use gpt-4-0613 model for the main chat -Environment variable: `AIDER_4` +Use gpt-4-0613 model for the main chat +Environment variable: `AIDER_4` Aliases: - `--4` - `-4` ### `--4o` -Use gpt-4o-2024-08-06 model for the main chat -Environment variable: `AIDER_4O` +Use gpt-4o-2024-08-06 model for the main chat +Environment variable: `AIDER_4O` ### `--mini` -Use gpt-4o-mini model for the main chat -Environment variable: `AIDER_MINI` +Use gpt-4o-mini model for the main chat +Environment variable: `AIDER_MINI` ### `--4-turbo` -Use gpt-4-1106-preview model for the main chat -Environment variable: `AIDER_4_TURBO` +Use gpt-4-1106-preview model for the main chat +Environment variable: `AIDER_4_TURBO` ### `--35turbo` -Use gpt-3.5-turbo model for the main chat -Environment variable: `AIDER_35TURBO` +Use gpt-3.5-turbo model for the main chat +Environment variable: `AIDER_35TURBO` Aliases: - `--35turbo` - `--35-turbo` @@ -142,520 +142,520 @@ Aliases: - `-3` ### `--deepseek` -Use deepseek/deepseek-coder model for the main chat -Environment variable: `AIDER_DEEPSEEK` +Use deepseek/deepseek-coder model for the main chat +Environment variable: `AIDER_DEEPSEEK` ### `--o1-mini` -Use o1-mini model for the main chat -Environment variable: `AIDER_O1_MINI` +Use o1-mini model for the main chat +Environment variable: `AIDER_O1_MINI` ### `--o1-preview` -Use o1-preview model for the main chat -Environment variable: `AIDER_O1_PREVIEW` +Use o1-preview model for the main chat +Environment variable: `AIDER_O1_PREVIEW` ## Model Settings: ### `--list-models MODEL` -List known models which match the (partial) MODEL name -Environment variable: `AIDER_LIST_MODELS` +List known models which match the (partial) MODEL name +Environment variable: `AIDER_LIST_MODELS` Aliases: - `--list-models MODEL` - `--models MODEL` ### `--openai-api-base OPENAI_API_BASE` -Specify the api base url -Environment variable: `OPENAI_API_BASE` +Specify the api base url +Environment variable: `OPENAI_API_BASE` ### `--openai-api-type OPENAI_API_TYPE` -Specify the api_type -Environment variable: `OPENAI_API_TYPE` +Specify the api_type +Environment variable: `OPENAI_API_TYPE` ### `--openai-api-version OPENAI_API_VERSION` -Specify the api_version -Environment variable: `OPENAI_API_VERSION` +Specify the api_version +Environment variable: `OPENAI_API_VERSION` ### `--openai-api-deployment-id OPENAI_API_DEPLOYMENT_ID` -Specify the deployment_id -Environment variable: `OPENAI_API_DEPLOYMENT_ID` +Specify the deployment_id +Environment variable: `OPENAI_API_DEPLOYMENT_ID` ### `--openai-organization-id OPENAI_ORGANIZATION_ID` -Specify the OpenAI organization ID -Environment variable: `OPENAI_ORGANIZATION_ID` +Specify the OpenAI organization ID +Environment variable: `OPENAI_ORGANIZATION_ID` ### `--model-settings-file MODEL_SETTINGS_FILE` -Specify a file with aider model settings for unknown models -Default: .aider.model.settings.yml -Environment variable: `AIDER_MODEL_SETTINGS_FILE` +Specify a file with aider model settings for unknown models +Default: .aider.model.settings.yml +Environment variable: `AIDER_MODEL_SETTINGS_FILE` ### `--model-metadata-file MODEL_METADATA_FILE` -Specify a file with context window and costs for unknown models -Default: .aider.model.metadata.json -Environment variable: `AIDER_MODEL_METADATA_FILE` +Specify a file with context window and costs for unknown models +Default: .aider.model.metadata.json +Environment variable: `AIDER_MODEL_METADATA_FILE` ### `--alias ALIAS:MODEL` -Add a model alias (can be used multiple times) -Environment variable: `AIDER_ALIAS` +Add a model alias (can be used multiple times) +Environment variable: `AIDER_ALIAS` ### `--verify-ssl` -Verify the SSL cert when connecting to models (default: True) -Default: True -Environment variable: `AIDER_VERIFY_SSL` +Verify the SSL cert when connecting to models (default: True) +Default: True +Environment variable: `AIDER_VERIFY_SSL` Aliases: - `--verify-ssl` - `--no-verify-ssl` ### `--edit-format EDIT_FORMAT` -Specify what edit format the LLM should use (default depends on model) -Environment variable: `AIDER_EDIT_FORMAT` +Specify what edit format the LLM should use (default depends on model) +Environment variable: `AIDER_EDIT_FORMAT` Aliases: - `--edit-format EDIT_FORMAT` - `--chat-mode EDIT_FORMAT` ### `--architect` -Use architect edit format for the main chat -Environment variable: `AIDER_ARCHITECT` +Use architect edit format for the main chat +Environment variable: `AIDER_ARCHITECT` ### `--weak-model WEAK_MODEL` -Specify the model to use for commit messages and chat history summarization (default depends on --model) -Environment variable: `AIDER_WEAK_MODEL` +Specify the model to use for commit messages and chat history summarization (default depends on --model) +Environment variable: `AIDER_WEAK_MODEL` ### `--editor-model EDITOR_MODEL` -Specify the model to use for editor tasks (default depends on --model) -Environment variable: `AIDER_EDITOR_MODEL` +Specify the model to use for editor tasks (default depends on --model) +Environment variable: `AIDER_EDITOR_MODEL` ### `--editor-edit-format EDITOR_EDIT_FORMAT` -Specify the edit format for the editor model (default: depends on editor model) -Environment variable: `AIDER_EDITOR_EDIT_FORMAT` +Specify the edit format for the editor model (default: depends on editor model) +Environment variable: `AIDER_EDITOR_EDIT_FORMAT` ### `--show-model-warnings` -Only work with models that have meta-data available (default: True) -Default: True -Environment variable: `AIDER_SHOW_MODEL_WARNINGS` +Only work with models that have meta-data available (default: True) +Default: True +Environment variable: `AIDER_SHOW_MODEL_WARNINGS` Aliases: - `--show-model-warnings` - `--no-show-model-warnings` ### `--max-chat-history-tokens VALUE` -Soft limit on tokens for chat history, after which summarization begins. If unspecified, defaults to the model's max_chat_history_tokens. -Environment variable: `AIDER_MAX_CHAT_HISTORY_TOKENS` +Soft limit on tokens for chat history, after which summarization begins. If unspecified, defaults to the model's max_chat_history_tokens. +Environment variable: `AIDER_MAX_CHAT_HISTORY_TOKENS` ### `--env-file ENV_FILE` -Specify the .env file to load (default: .env in git root) -Default: .env -Environment variable: `AIDER_ENV_FILE` +Specify the .env file to load (default: .env in git root) +Default: .env +Environment variable: `AIDER_ENV_FILE` ## Cache Settings: ### `--cache-prompts` -Enable caching of prompts (default: False) -Default: False -Environment variable: `AIDER_CACHE_PROMPTS` +Enable caching of prompts (default: False) +Default: False +Environment variable: `AIDER_CACHE_PROMPTS` Aliases: - `--cache-prompts` - `--no-cache-prompts` ### `--cache-keepalive-pings VALUE` -Number of times to ping at 5min intervals to keep prompt cache warm (default: 0) -Default: 0 -Environment variable: `AIDER_CACHE_KEEPALIVE_PINGS` +Number of times to ping at 5min intervals to keep prompt cache warm (default: 0) +Default: 0 +Environment variable: `AIDER_CACHE_KEEPALIVE_PINGS` ## Repomap Settings: ### `--map-tokens VALUE` -Suggested number of tokens to use for repo map, use 0 to disable (default: 1024) -Environment variable: `AIDER_MAP_TOKENS` +Suggested number of tokens to use for repo map, use 0 to disable (default: 1024) +Environment variable: `AIDER_MAP_TOKENS` ### `--map-refresh VALUE` -Control how often the repo map is refreshed. Options: auto, always, files, manual (default: auto) -Default: auto -Environment variable: `AIDER_MAP_REFRESH` +Control how often the repo map is refreshed. Options: auto, always, files, manual (default: auto) +Default: auto +Environment variable: `AIDER_MAP_REFRESH` ### `--map-multiplier-no-files VALUE` -Multiplier for map tokens when no files are specified (default: 2) -Default: 2 -Environment variable: `AIDER_MAP_MULTIPLIER_NO_FILES` +Multiplier for map tokens when no files are specified (default: 2) +Default: 2 +Environment variable: `AIDER_MAP_MULTIPLIER_NO_FILES` ## History Files: ### `--input-history-file INPUT_HISTORY_FILE` -Specify the chat input history file (default: .aider.input.history) -Default: .aider.input.history -Environment variable: `AIDER_INPUT_HISTORY_FILE` +Specify the chat input history file (default: .aider.input.history) +Default: .aider.input.history +Environment variable: `AIDER_INPUT_HISTORY_FILE` ### `--chat-history-file CHAT_HISTORY_FILE` -Specify the chat history file (default: .aider.chat.history.md) -Default: .aider.chat.history.md -Environment variable: `AIDER_CHAT_HISTORY_FILE` +Specify the chat history file (default: .aider.chat.history.md) +Default: .aider.chat.history.md +Environment variable: `AIDER_CHAT_HISTORY_FILE` ### `--restore-chat-history` -Restore the previous chat history messages (default: False) -Default: False -Environment variable: `AIDER_RESTORE_CHAT_HISTORY` +Restore the previous chat history messages (default: False) +Default: False +Environment variable: `AIDER_RESTORE_CHAT_HISTORY` Aliases: - `--restore-chat-history` - `--no-restore-chat-history` ### `--llm-history-file LLM_HISTORY_FILE` -Log the conversation with the LLM to this file (for example, .aider.llm.history) -Environment variable: `AIDER_LLM_HISTORY_FILE` +Log the conversation with the LLM to this file (for example, .aider.llm.history) +Environment variable: `AIDER_LLM_HISTORY_FILE` ## Output Settings: ### `--dark-mode` -Use colors suitable for a dark terminal background (default: False) -Default: False -Environment variable: `AIDER_DARK_MODE` +Use colors suitable for a dark terminal background (default: False) +Default: False +Environment variable: `AIDER_DARK_MODE` ### `--light-mode` -Use colors suitable for a light terminal background (default: False) -Default: False -Environment variable: `AIDER_LIGHT_MODE` +Use colors suitable for a light terminal background (default: False) +Default: False +Environment variable: `AIDER_LIGHT_MODE` ### `--pretty` -Enable/disable pretty, colorized output (default: True) -Default: True -Environment variable: `AIDER_PRETTY` +Enable/disable pretty, colorized output (default: True) +Default: True +Environment variable: `AIDER_PRETTY` Aliases: - `--pretty` - `--no-pretty` ### `--stream` -Enable/disable streaming responses (default: True) -Default: True -Environment variable: `AIDER_STREAM` +Enable/disable streaming responses (default: True) +Default: True +Environment variable: `AIDER_STREAM` Aliases: - `--stream` - `--no-stream` ### `--user-input-color VALUE` -Set the color for user input (default: #00cc00) -Default: #00cc00 -Environment variable: `AIDER_USER_INPUT_COLOR` +Set the color for user input (default: #00cc00) +Default: #00cc00 +Environment variable: `AIDER_USER_INPUT_COLOR` ### `--tool-output-color VALUE` -Set the color for tool output (default: None) -Environment variable: `AIDER_TOOL_OUTPUT_COLOR` +Set the color for tool output (default: None) +Environment variable: `AIDER_TOOL_OUTPUT_COLOR` ### `--tool-error-color VALUE` -Set the color for tool error messages (default: #FF2222) -Default: #FF2222 -Environment variable: `AIDER_TOOL_ERROR_COLOR` +Set the color for tool error messages (default: #FF2222) +Default: #FF2222 +Environment variable: `AIDER_TOOL_ERROR_COLOR` ### `--tool-warning-color VALUE` -Set the color for tool warning messages (default: #FFA500) -Default: #FFA500 -Environment variable: `AIDER_TOOL_WARNING_COLOR` +Set the color for tool warning messages (default: #FFA500) +Default: #FFA500 +Environment variable: `AIDER_TOOL_WARNING_COLOR` ### `--assistant-output-color VALUE` -Set the color for assistant output (default: #0088ff) -Default: #0088ff -Environment variable: `AIDER_ASSISTANT_OUTPUT_COLOR` +Set the color for assistant output (default: #0088ff) +Default: #0088ff +Environment variable: `AIDER_ASSISTANT_OUTPUT_COLOR` ### `--completion-menu-color COLOR` -Set the color for the completion menu (default: terminal's default text color) -Environment variable: `AIDER_COMPLETION_MENU_COLOR` +Set the color for the completion menu (default: terminal's default text color) +Environment variable: `AIDER_COMPLETION_MENU_COLOR` ### `--completion-menu-bg-color COLOR` -Set the background color for the completion menu (default: terminal's default background color) -Environment variable: `AIDER_COMPLETION_MENU_BG_COLOR` +Set the background color for the completion menu (default: terminal's default background color) +Environment variable: `AIDER_COMPLETION_MENU_BG_COLOR` ### `--completion-menu-current-color COLOR` -Set the color for the current item in the completion menu (default: terminal's default background color) -Environment variable: `AIDER_COMPLETION_MENU_CURRENT_COLOR` +Set the color for the current item in the completion menu (default: terminal's default background color) +Environment variable: `AIDER_COMPLETION_MENU_CURRENT_COLOR` ### `--completion-menu-current-bg-color COLOR` -Set the background color for the current item in the completion menu (default: terminal's default text color) -Environment variable: `AIDER_COMPLETION_MENU_CURRENT_BG_COLOR` +Set the background color for the current item in the completion menu (default: terminal's default text color) +Environment variable: `AIDER_COMPLETION_MENU_CURRENT_BG_COLOR` ### `--code-theme VALUE` -Set the markdown code theme (default: default, other options include monokai, solarized-dark, solarized-light) -Default: default -Environment variable: `AIDER_CODE_THEME` +Set the markdown code theme (default: default, other options include monokai, solarized-dark, solarized-light) +Default: default +Environment variable: `AIDER_CODE_THEME` ### `--show-diffs` -Show diffs when committing changes (default: False) -Default: False -Environment variable: `AIDER_SHOW_DIFFS` +Show diffs when committing changes (default: False) +Default: False +Environment variable: `AIDER_SHOW_DIFFS` ## Git Settings: ### `--git` -Enable/disable looking for a git repo (default: True) -Default: True -Environment variable: `AIDER_GIT` +Enable/disable looking for a git repo (default: True) +Default: True +Environment variable: `AIDER_GIT` Aliases: - `--git` - `--no-git` ### `--gitignore` -Enable/disable adding .aider* to .gitignore (default: True) -Default: True -Environment variable: `AIDER_GITIGNORE` +Enable/disable adding .aider* to .gitignore (default: True) +Default: True +Environment variable: `AIDER_GITIGNORE` Aliases: - `--gitignore` - `--no-gitignore` ### `--aiderignore AIDERIGNORE` -Specify the aider ignore file (default: .aiderignore in git root) -Default: .aiderignore -Environment variable: `AIDER_AIDERIGNORE` +Specify the aider ignore file (default: .aiderignore in git root) +Default: .aiderignore +Environment variable: `AIDER_AIDERIGNORE` ### `--subtree-only` -Only consider files in the current subtree of the git repository -Default: False -Environment variable: `AIDER_SUBTREE_ONLY` +Only consider files in the current subtree of the git repository +Default: False +Environment variable: `AIDER_SUBTREE_ONLY` ### `--auto-commits` -Enable/disable auto commit of LLM changes (default: True) -Default: True -Environment variable: `AIDER_AUTO_COMMITS` +Enable/disable auto commit of LLM changes (default: True) +Default: True +Environment variable: `AIDER_AUTO_COMMITS` Aliases: - `--auto-commits` - `--no-auto-commits` ### `--dirty-commits` -Enable/disable commits when repo is found dirty (default: True) -Default: True -Environment variable: `AIDER_DIRTY_COMMITS` +Enable/disable commits when repo is found dirty (default: True) +Default: True +Environment variable: `AIDER_DIRTY_COMMITS` Aliases: - `--dirty-commits` - `--no-dirty-commits` ### `--attribute-author` -Attribute aider code changes in the git author name (default: True) -Default: True -Environment variable: `AIDER_ATTRIBUTE_AUTHOR` +Attribute aider code changes in the git author name (default: True) +Default: True +Environment variable: `AIDER_ATTRIBUTE_AUTHOR` Aliases: - `--attribute-author` - `--no-attribute-author` ### `--attribute-committer` -Attribute aider commits in the git committer name (default: True) -Default: True -Environment variable: `AIDER_ATTRIBUTE_COMMITTER` +Attribute aider commits in the git committer name (default: True) +Default: True +Environment variable: `AIDER_ATTRIBUTE_COMMITTER` Aliases: - `--attribute-committer` - `--no-attribute-committer` ### `--attribute-commit-message-author` -Prefix commit messages with 'aider: ' if aider authored the changes (default: False) -Default: False -Environment variable: `AIDER_ATTRIBUTE_COMMIT_MESSAGE_AUTHOR` +Prefix commit messages with 'aider: ' if aider authored the changes (default: False) +Default: False +Environment variable: `AIDER_ATTRIBUTE_COMMIT_MESSAGE_AUTHOR` Aliases: - `--attribute-commit-message-author` - `--no-attribute-commit-message-author` ### `--attribute-commit-message-committer` -Prefix all commit messages with 'aider: ' (default: False) -Default: False -Environment variable: `AIDER_ATTRIBUTE_COMMIT_MESSAGE_COMMITTER` +Prefix all commit messages with 'aider: ' (default: False) +Default: False +Environment variable: `AIDER_ATTRIBUTE_COMMIT_MESSAGE_COMMITTER` Aliases: - `--attribute-commit-message-committer` - `--no-attribute-commit-message-committer` ### `--commit` -Commit all pending changes with a suitable commit message, then exit -Default: False -Environment variable: `AIDER_COMMIT` +Commit all pending changes with a suitable commit message, then exit +Default: False +Environment variable: `AIDER_COMMIT` ### `--commit-prompt PROMPT` -Specify a custom prompt for generating commit messages -Environment variable: `AIDER_COMMIT_PROMPT` +Specify a custom prompt for generating commit messages +Environment variable: `AIDER_COMMIT_PROMPT` ### `--dry-run` -Perform a dry run without modifying files (default: False) -Default: False -Environment variable: `AIDER_DRY_RUN` +Perform a dry run without modifying files (default: False) +Default: False +Environment variable: `AIDER_DRY_RUN` Aliases: - `--dry-run` - `--no-dry-run` ### `--skip-sanity-check-repo` -Skip the sanity check for the git repository (default: False) -Default: False -Environment variable: `AIDER_SKIP_SANITY_CHECK_REPO` +Skip the sanity check for the git repository (default: False) +Default: False +Environment variable: `AIDER_SKIP_SANITY_CHECK_REPO` ## Fixing and committing: ### `--lint` -Lint and fix provided files, or dirty files if none provided -Default: False -Environment variable: `AIDER_LINT` +Lint and fix provided files, or dirty files if none provided +Default: False +Environment variable: `AIDER_LINT` ### `--lint-cmd` -Specify lint commands to run for different languages, eg: "python: flake8 --select=..." (can be used multiple times) -Default: [] -Environment variable: `AIDER_LINT_CMD` +Specify lint commands to run for different languages, eg: "python: flake8 --select=..." (can be used multiple times) +Default: [] +Environment variable: `AIDER_LINT_CMD` ### `--auto-lint` -Enable/disable automatic linting after changes (default: True) -Default: True -Environment variable: `AIDER_AUTO_LINT` +Enable/disable automatic linting after changes (default: True) +Default: True +Environment variable: `AIDER_AUTO_LINT` Aliases: - `--auto-lint` - `--no-auto-lint` ### `--test-cmd VALUE` -Specify command to run tests -Default: [] -Environment variable: `AIDER_TEST_CMD` +Specify command to run tests +Default: [] +Environment variable: `AIDER_TEST_CMD` ### `--auto-test` -Enable/disable automatic testing after changes (default: False) -Default: False -Environment variable: `AIDER_AUTO_TEST` +Enable/disable automatic testing after changes (default: False) +Default: False +Environment variable: `AIDER_AUTO_TEST` Aliases: - `--auto-test` - `--no-auto-test` ### `--test` -Run tests and fix problems found -Default: False -Environment variable: `AIDER_TEST` +Run tests and fix problems found +Default: False +Environment variable: `AIDER_TEST` ## Analytics: ### `--analytics` -Enable/disable analytics for current session (default: random) -Environment variable: `AIDER_ANALYTICS` +Enable/disable analytics for current session (default: random) +Environment variable: `AIDER_ANALYTICS` Aliases: - `--analytics` - `--no-analytics` ### `--analytics-log ANALYTICS_LOG_FILE` -Specify a file to log analytics events -Environment variable: `AIDER_ANALYTICS_LOG` +Specify a file to log analytics events +Environment variable: `AIDER_ANALYTICS_LOG` ### `--analytics-disable` -Permanently disable analytics -Default: False -Environment variable: `AIDER_ANALYTICS_DISABLE` +Permanently disable analytics +Default: False +Environment variable: `AIDER_ANALYTICS_DISABLE` ## Other Settings: ### `--file FILE` -specify a file to edit (can be used multiple times) -Environment variable: `AIDER_FILE` +specify a file to edit (can be used multiple times) +Environment variable: `AIDER_FILE` ### `--read FILE` -specify a read-only file (can be used multiple times) -Environment variable: `AIDER_READ` +specify a read-only file (can be used multiple times) +Environment variable: `AIDER_READ` ### `--vim` -Use VI editing mode in the terminal (default: False) -Default: False -Environment variable: `AIDER_VIM` +Use VI editing mode in the terminal (default: False) +Default: False +Environment variable: `AIDER_VIM` ### `--chat-language CHAT_LANGUAGE` -Specify the language to use in the chat (default: None, uses system settings) -Environment variable: `AIDER_CHAT_LANGUAGE` +Specify the language to use in the chat (default: None, uses system settings) +Environment variable: `AIDER_CHAT_LANGUAGE` ### `--version` -Show the version number and exit +Show the version number and exit ### `--just-check-update` -Check for updates and return status in the exit code -Default: False -Environment variable: `AIDER_JUST_CHECK_UPDATE` +Check for updates and return status in the exit code +Default: False +Environment variable: `AIDER_JUST_CHECK_UPDATE` ### `--check-update` -Check for new aider versions on launch -Default: True -Environment variable: `AIDER_CHECK_UPDATE` +Check for new aider versions on launch +Default: True +Environment variable: `AIDER_CHECK_UPDATE` Aliases: - `--check-update` - `--no-check-update` ### `--show-release-notes` -Show release notes on first run of new version (default: None, ask user) -Environment variable: `AIDER_SHOW_RELEASE_NOTES` +Show release notes on first run of new version (default: None, ask user) +Environment variable: `AIDER_SHOW_RELEASE_NOTES` Aliases: - `--show-release-notes` - `--no-show-release-notes` ### `--install-main-branch` -Install the latest version from the main branch -Default: False -Environment variable: `AIDER_INSTALL_MAIN_BRANCH` +Install the latest version from the main branch +Default: False +Environment variable: `AIDER_INSTALL_MAIN_BRANCH` ### `--upgrade` -Upgrade aider to the latest version from PyPI -Default: False -Environment variable: `AIDER_UPGRADE` +Upgrade aider to the latest version from PyPI +Default: False +Environment variable: `AIDER_UPGRADE` Aliases: - `--upgrade` - `--update` ### `--apply FILE` -Apply the changes from the given file instead of running the chat (debug) -Environment variable: `AIDER_APPLY` +Apply the changes from the given file instead of running the chat (debug) +Environment variable: `AIDER_APPLY` ### `--apply-clipboard-edits` -Apply clipboard contents as edits using the main model's editor format -Default: False -Environment variable: `AIDER_APPLY_CLIPBOARD_EDITS` +Apply clipboard contents as edits using the main model's editor format +Default: False +Environment variable: `AIDER_APPLY_CLIPBOARD_EDITS` ### `--yes-always` -Always say yes to every confirmation -Environment variable: `AIDER_YES_ALWAYS` +Always say yes to every confirmation +Environment variable: `AIDER_YES_ALWAYS` ### `--verbose` -Enable verbose output -Default: False -Environment variable: `AIDER_VERBOSE` +Enable verbose output +Default: False +Environment variable: `AIDER_VERBOSE` Aliases: - `-v` - `--verbose` ### `--show-repo-map` -Print the repo map and exit (debug) -Default: False -Environment variable: `AIDER_SHOW_REPO_MAP` +Print the repo map and exit (debug) +Default: False +Environment variable: `AIDER_SHOW_REPO_MAP` ### `--show-prompts` -Print the system prompts and exit (debug) -Default: False -Environment variable: `AIDER_SHOW_PROMPTS` +Print the system prompts and exit (debug) +Default: False +Environment variable: `AIDER_SHOW_PROMPTS` ### `--exit` -Do all startup activities then exit before accepting user input (debug) -Default: False -Environment variable: `AIDER_EXIT` +Do all startup activities then exit before accepting user input (debug) +Default: False +Environment variable: `AIDER_EXIT` ### `--message COMMAND` -Specify a single message to send the LLM, process reply then exit (disables chat mode) -Environment variable: `AIDER_MESSAGE` +Specify a single message to send the LLM, process reply then exit (disables chat mode) +Environment variable: `AIDER_MESSAGE` Aliases: - `--message COMMAND` - `--msg COMMAND` - `-m COMMAND` ### `--message-file MESSAGE_FILE` -Specify a file containing the message to send the LLM, process reply, then exit (disables chat mode) -Environment variable: `AIDER_MESSAGE_FILE` +Specify a file containing the message to send the LLM, process reply, then exit (disables chat mode) +Environment variable: `AIDER_MESSAGE_FILE` Aliases: - `--message-file MESSAGE_FILE` - `-f MESSAGE_FILE` ### `--load LOAD_FILE` -Load and execute /commands from a file on launch -Environment variable: `AIDER_LOAD` +Load and execute /commands from a file on launch +Environment variable: `AIDER_LOAD` ### `--encoding VALUE` -Specify the encoding for input and output (default: utf-8) -Default: utf-8 -Environment variable: `AIDER_ENCODING` +Specify the encoding for input and output (default: utf-8) +Default: utf-8 +Environment variable: `AIDER_ENCODING` ### `--config CONFIG_FILE` -Specify the config file (default: search for .aider.conf.yml in git root, cwd or home directory) +Specify the config file (default: search for .aider.conf.yml in git root, cwd or home directory) Aliases: - `-c CONFIG_FILE` - `--config CONFIG_FILE` ### `--gui` -Run aider in your browser (default: False) -Default: False -Environment variable: `AIDER_GUI` +Run aider in your browser (default: False) +Default: False +Environment variable: `AIDER_GUI` Aliases: - `--gui` - `--no-gui` @@ -663,42 +663,47 @@ Aliases: - `--no-browser` ### `--suggest-shell-commands` -Enable/disable suggesting shell commands (default: True) -Default: True -Environment variable: `AIDER_SUGGEST_SHELL_COMMANDS` +Enable/disable suggesting shell commands (default: True) +Default: True +Environment variable: `AIDER_SUGGEST_SHELL_COMMANDS` Aliases: - `--suggest-shell-commands` - `--no-suggest-shell-commands` ### `--fancy-input` -Enable/disable fancy input with history and completion (default: True) -Default: True -Environment variable: `AIDER_FANCY_INPUT` +Enable/disable fancy input with history and completion (default: True) +Default: True +Environment variable: `AIDER_FANCY_INPUT` Aliases: - `--fancy-input` - `--no-fancy-input` ### `--detect-urls` -Enable/disable detection and offering to add URLs to chat (default: True) -Default: True -Environment variable: `AIDER_DETECT_URLS` +Enable/disable detection and offering to add URLs to chat (default: True) +Default: True +Environment variable: `AIDER_DETECT_URLS` Aliases: - `--detect-urls` - `--no-detect-urls` ### `--editor VALUE` -Specify which editor to use for the /editor command -Environment variable: `AIDER_EDITOR` +Specify which editor to use for the /editor command +Environment variable: `AIDER_EDITOR` ## Voice Settings: ### `--voice-format VOICE_FORMAT` -Audio format for voice recording (default: wav). webm and mp3 require ffmpeg -Default: wav -Environment variable: `AIDER_VOICE_FORMAT` +Audio format for voice recording (default: wav). webm and mp3 require ffmpeg +Default: wav +Environment variable: `AIDER_VOICE_FORMAT` ### `--voice-language VOICE_LANGUAGE` -Specify the language for voice using ISO 639-1 code (default: auto) -Default: en -Environment variable: `AIDER_VOICE_LANGUAGE` +Specify the language for voice using ISO 639-1 code (default: auto) +Default: en +Environment variable: `AIDER_VOICE_LANGUAGE` + +### `--voice-input-device VOICE_INPUT_DEVICE` +Specify the voice input device name used for recording (default: system default) +Default: system default +Environment variable: `VOICE_INPUT_DEVICE`