cecli-dev 0.95.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. cecli/__init__.py +20 -0
  2. cecli/__main__.py +4 -0
  3. cecli/_version.py +34 -0
  4. cecli/args.py +1092 -0
  5. cecli/args_formatter.py +228 -0
  6. cecli/change_tracker.py +133 -0
  7. cecli/coders/__init__.py +38 -0
  8. cecli/coders/agent_coder.py +1872 -0
  9. cecli/coders/architect_coder.py +63 -0
  10. cecli/coders/ask_coder.py +8 -0
  11. cecli/coders/base_coder.py +3993 -0
  12. cecli/coders/chat_chunks.py +116 -0
  13. cecli/coders/context_coder.py +52 -0
  14. cecli/coders/copypaste_coder.py +269 -0
  15. cecli/coders/editblock_coder.py +656 -0
  16. cecli/coders/editblock_fenced_coder.py +9 -0
  17. cecli/coders/editblock_func_coder.py +140 -0
  18. cecli/coders/editor_diff_fenced_coder.py +8 -0
  19. cecli/coders/editor_editblock_coder.py +8 -0
  20. cecli/coders/editor_whole_coder.py +8 -0
  21. cecli/coders/help_coder.py +15 -0
  22. cecli/coders/patch_coder.py +705 -0
  23. cecli/coders/search_replace.py +757 -0
  24. cecli/coders/shell.py +37 -0
  25. cecli/coders/single_wholefile_func_coder.py +101 -0
  26. cecli/coders/udiff_coder.py +428 -0
  27. cecli/coders/udiff_simple.py +12 -0
  28. cecli/coders/wholefile_coder.py +143 -0
  29. cecli/coders/wholefile_func_coder.py +133 -0
  30. cecli/commands/__init__.py +192 -0
  31. cecli/commands/add.py +226 -0
  32. cecli/commands/agent.py +51 -0
  33. cecli/commands/architect.py +46 -0
  34. cecli/commands/ask.py +44 -0
  35. cecli/commands/chat_mode.py +0 -0
  36. cecli/commands/clear.py +37 -0
  37. cecli/commands/code.py +46 -0
  38. cecli/commands/command_prefix.py +44 -0
  39. cecli/commands/commit.py +52 -0
  40. cecli/commands/context.py +47 -0
  41. cecli/commands/context_blocks.py +124 -0
  42. cecli/commands/context_management.py +51 -0
  43. cecli/commands/copy.py +62 -0
  44. cecli/commands/copy_context.py +81 -0
  45. cecli/commands/core.py +287 -0
  46. cecli/commands/diff.py +68 -0
  47. cecli/commands/drop.py +217 -0
  48. cecli/commands/editor.py +78 -0
  49. cecli/commands/exit.py +55 -0
  50. cecli/commands/git.py +57 -0
  51. cecli/commands/help.py +140 -0
  52. cecli/commands/history_search.py +40 -0
  53. cecli/commands/lint.py +109 -0
  54. cecli/commands/list_sessions.py +56 -0
  55. cecli/commands/load.py +85 -0
  56. cecli/commands/load_session.py +48 -0
  57. cecli/commands/load_skill.py +68 -0
  58. cecli/commands/ls.py +75 -0
  59. cecli/commands/map.py +37 -0
  60. cecli/commands/map_refresh.py +35 -0
  61. cecli/commands/model.py +118 -0
  62. cecli/commands/models.py +41 -0
  63. cecli/commands/multiline_mode.py +38 -0
  64. cecli/commands/paste.py +91 -0
  65. cecli/commands/quit.py +32 -0
  66. cecli/commands/read_only.py +267 -0
  67. cecli/commands/read_only_stub.py +270 -0
  68. cecli/commands/reasoning_effort.py +70 -0
  69. cecli/commands/remove_skill.py +68 -0
  70. cecli/commands/report.py +40 -0
  71. cecli/commands/reset.py +88 -0
  72. cecli/commands/run.py +99 -0
  73. cecli/commands/save.py +49 -0
  74. cecli/commands/save_session.py +43 -0
  75. cecli/commands/settings.py +69 -0
  76. cecli/commands/test.py +58 -0
  77. cecli/commands/think_tokens.py +74 -0
  78. cecli/commands/tokens.py +207 -0
  79. cecli/commands/undo.py +145 -0
  80. cecli/commands/utils/__init__.py +0 -0
  81. cecli/commands/utils/base_command.py +131 -0
  82. cecli/commands/utils/helpers.py +142 -0
  83. cecli/commands/utils/registry.py +53 -0
  84. cecli/commands/utils/save_load_manager.py +98 -0
  85. cecli/commands/voice.py +78 -0
  86. cecli/commands/weak_model.py +123 -0
  87. cecli/commands/web.py +87 -0
  88. cecli/deprecated_args.py +185 -0
  89. cecli/diffs.py +129 -0
  90. cecli/dump.py +29 -0
  91. cecli/editor.py +147 -0
  92. cecli/exceptions.py +115 -0
  93. cecli/format_settings.py +26 -0
  94. cecli/help.py +119 -0
  95. cecli/help_pats.py +19 -0
  96. cecli/helpers/__init__.py +9 -0
  97. cecli/helpers/copypaste.py +123 -0
  98. cecli/helpers/coroutines.py +8 -0
  99. cecli/helpers/file_searcher.py +142 -0
  100. cecli/helpers/model_providers.py +552 -0
  101. cecli/helpers/plugin_manager.py +81 -0
  102. cecli/helpers/profiler.py +162 -0
  103. cecli/helpers/requests.py +77 -0
  104. cecli/helpers/similarity.py +98 -0
  105. cecli/helpers/skills.py +577 -0
  106. cecli/history.py +186 -0
  107. cecli/io.py +1782 -0
  108. cecli/linter.py +304 -0
  109. cecli/llm.py +101 -0
  110. cecli/main.py +1280 -0
  111. cecli/mcp/__init__.py +154 -0
  112. cecli/mcp/oauth.py +250 -0
  113. cecli/mcp/server.py +278 -0
  114. cecli/mdstream.py +243 -0
  115. cecli/models.py +1255 -0
  116. cecli/onboarding.py +301 -0
  117. cecli/prompts/__init__.py +0 -0
  118. cecli/prompts/agent.yml +71 -0
  119. cecli/prompts/architect.yml +35 -0
  120. cecli/prompts/ask.yml +31 -0
  121. cecli/prompts/base.yml +99 -0
  122. cecli/prompts/context.yml +60 -0
  123. cecli/prompts/copypaste.yml +5 -0
  124. cecli/prompts/editblock.yml +143 -0
  125. cecli/prompts/editblock_fenced.yml +106 -0
  126. cecli/prompts/editblock_func.yml +25 -0
  127. cecli/prompts/editor_diff_fenced.yml +115 -0
  128. cecli/prompts/editor_editblock.yml +121 -0
  129. cecli/prompts/editor_whole.yml +46 -0
  130. cecli/prompts/help.yml +37 -0
  131. cecli/prompts/patch.yml +110 -0
  132. cecli/prompts/single_wholefile_func.yml +24 -0
  133. cecli/prompts/udiff.yml +106 -0
  134. cecli/prompts/udiff_simple.yml +13 -0
  135. cecli/prompts/utils/__init__.py +0 -0
  136. cecli/prompts/utils/prompt_registry.py +167 -0
  137. cecli/prompts/utils/system.py +56 -0
  138. cecli/prompts/wholefile.yml +50 -0
  139. cecli/prompts/wholefile_func.yml +24 -0
  140. cecli/queries/tree-sitter-language-pack/README.md +7 -0
  141. cecli/queries/tree-sitter-language-pack/arduino-tags.scm +5 -0
  142. cecli/queries/tree-sitter-language-pack/c-tags.scm +12 -0
  143. cecli/queries/tree-sitter-language-pack/chatito-tags.scm +16 -0
  144. cecli/queries/tree-sitter-language-pack/clojure-tags.scm +12 -0
  145. cecli/queries/tree-sitter-language-pack/commonlisp-tags.scm +127 -0
  146. cecli/queries/tree-sitter-language-pack/cpp-tags.scm +18 -0
  147. cecli/queries/tree-sitter-language-pack/csharp-tags.scm +32 -0
  148. cecli/queries/tree-sitter-language-pack/d-tags.scm +26 -0
  149. cecli/queries/tree-sitter-language-pack/dart-tags.scm +97 -0
  150. cecli/queries/tree-sitter-language-pack/elisp-tags.scm +5 -0
  151. cecli/queries/tree-sitter-language-pack/elixir-tags.scm +59 -0
  152. cecli/queries/tree-sitter-language-pack/elm-tags.scm +22 -0
  153. cecli/queries/tree-sitter-language-pack/gleam-tags.scm +41 -0
  154. cecli/queries/tree-sitter-language-pack/go-tags.scm +49 -0
  155. cecli/queries/tree-sitter-language-pack/java-tags.scm +26 -0
  156. cecli/queries/tree-sitter-language-pack/javascript-tags.scm +96 -0
  157. cecli/queries/tree-sitter-language-pack/lua-tags.scm +39 -0
  158. cecli/queries/tree-sitter-language-pack/matlab-tags.scm +10 -0
  159. cecli/queries/tree-sitter-language-pack/ocaml-tags.scm +115 -0
  160. cecli/queries/tree-sitter-language-pack/ocaml_interface-tags.scm +101 -0
  161. cecli/queries/tree-sitter-language-pack/pony-tags.scm +39 -0
  162. cecli/queries/tree-sitter-language-pack/properties-tags.scm +5 -0
  163. cecli/queries/tree-sitter-language-pack/python-tags.scm +24 -0
  164. cecli/queries/tree-sitter-language-pack/r-tags.scm +27 -0
  165. cecli/queries/tree-sitter-language-pack/racket-tags.scm +12 -0
  166. cecli/queries/tree-sitter-language-pack/ruby-tags.scm +69 -0
  167. cecli/queries/tree-sitter-language-pack/rust-tags.scm +63 -0
  168. cecli/queries/tree-sitter-language-pack/solidity-tags.scm +43 -0
  169. cecli/queries/tree-sitter-language-pack/swift-tags.scm +54 -0
  170. cecli/queries/tree-sitter-language-pack/udev-tags.scm +20 -0
  171. cecli/queries/tree-sitter-languages/README.md +24 -0
  172. cecli/queries/tree-sitter-languages/c-tags.scm +12 -0
  173. cecli/queries/tree-sitter-languages/c_sharp-tags.scm +52 -0
  174. cecli/queries/tree-sitter-languages/cpp-tags.scm +18 -0
  175. cecli/queries/tree-sitter-languages/dart-tags.scm +92 -0
  176. cecli/queries/tree-sitter-languages/elisp-tags.scm +8 -0
  177. cecli/queries/tree-sitter-languages/elixir-tags.scm +59 -0
  178. cecli/queries/tree-sitter-languages/elm-tags.scm +22 -0
  179. cecli/queries/tree-sitter-languages/fortran-tags.scm +18 -0
  180. cecli/queries/tree-sitter-languages/go-tags.scm +36 -0
  181. cecli/queries/tree-sitter-languages/haskell-tags.scm +5 -0
  182. cecli/queries/tree-sitter-languages/hcl-tags.scm +77 -0
  183. cecli/queries/tree-sitter-languages/java-tags.scm +26 -0
  184. cecli/queries/tree-sitter-languages/javascript-tags.scm +96 -0
  185. cecli/queries/tree-sitter-languages/julia-tags.scm +60 -0
  186. cecli/queries/tree-sitter-languages/kotlin-tags.scm +30 -0
  187. cecli/queries/tree-sitter-languages/matlab-tags.scm +10 -0
  188. cecli/queries/tree-sitter-languages/ocaml-tags.scm +115 -0
  189. cecli/queries/tree-sitter-languages/ocaml_interface-tags.scm +104 -0
  190. cecli/queries/tree-sitter-languages/php-tags.scm +32 -0
  191. cecli/queries/tree-sitter-languages/python-tags.scm +22 -0
  192. cecli/queries/tree-sitter-languages/ql-tags.scm +26 -0
  193. cecli/queries/tree-sitter-languages/ruby-tags.scm +69 -0
  194. cecli/queries/tree-sitter-languages/rust-tags.scm +63 -0
  195. cecli/queries/tree-sitter-languages/scala-tags.scm +64 -0
  196. cecli/queries/tree-sitter-languages/typescript-tags.scm +44 -0
  197. cecli/queries/tree-sitter-languages/zig-tags.scm +20 -0
  198. cecli/reasoning_tags.py +82 -0
  199. cecli/repo.py +626 -0
  200. cecli/repomap.py +1368 -0
  201. cecli/report.py +260 -0
  202. cecli/resources/__init__.py +3 -0
  203. cecli/resources/model-metadata.json +25751 -0
  204. cecli/resources/model-settings.yml +2394 -0
  205. cecli/resources/providers.json +67 -0
  206. cecli/run_cmd.py +143 -0
  207. cecli/scrape.py +295 -0
  208. cecli/sendchat.py +250 -0
  209. cecli/sessions.py +281 -0
  210. cecli/special.py +203 -0
  211. cecli/tools/__init__.py +72 -0
  212. cecli/tools/command.py +103 -0
  213. cecli/tools/command_interactive.py +113 -0
  214. cecli/tools/context_manager.py +175 -0
  215. cecli/tools/delete_block.py +154 -0
  216. cecli/tools/delete_line.py +120 -0
  217. cecli/tools/delete_lines.py +144 -0
  218. cecli/tools/extract_lines.py +281 -0
  219. cecli/tools/finished.py +35 -0
  220. cecli/tools/git_branch.py +132 -0
  221. cecli/tools/git_diff.py +49 -0
  222. cecli/tools/git_log.py +43 -0
  223. cecli/tools/git_remote.py +39 -0
  224. cecli/tools/git_show.py +37 -0
  225. cecli/tools/git_status.py +32 -0
  226. cecli/tools/grep.py +242 -0
  227. cecli/tools/indent_lines.py +195 -0
  228. cecli/tools/insert_block.py +263 -0
  229. cecli/tools/list_changes.py +71 -0
  230. cecli/tools/load_skill.py +51 -0
  231. cecli/tools/ls.py +77 -0
  232. cecli/tools/remove_skill.py +51 -0
  233. cecli/tools/replace_all.py +113 -0
  234. cecli/tools/replace_line.py +135 -0
  235. cecli/tools/replace_lines.py +180 -0
  236. cecli/tools/replace_text.py +186 -0
  237. cecli/tools/show_numbered_context.py +137 -0
  238. cecli/tools/thinking.py +52 -0
  239. cecli/tools/undo_change.py +82 -0
  240. cecli/tools/update_todo_list.py +148 -0
  241. cecli/tools/utils/base_tool.py +64 -0
  242. cecli/tools/utils/helpers.py +359 -0
  243. cecli/tools/utils/output.py +119 -0
  244. cecli/tools/utils/registry.py +145 -0
  245. cecli/tools/view_files_matching.py +138 -0
  246. cecli/tools/view_files_with_symbol.py +117 -0
  247. cecli/tui/__init__.py +83 -0
  248. cecli/tui/app.py +971 -0
  249. cecli/tui/io.py +566 -0
  250. cecli/tui/styles.tcss +117 -0
  251. cecli/tui/widgets/__init__.py +19 -0
  252. cecli/tui/widgets/completion_bar.py +331 -0
  253. cecli/tui/widgets/file_list.py +76 -0
  254. cecli/tui/widgets/footer.py +165 -0
  255. cecli/tui/widgets/input_area.py +320 -0
  256. cecli/tui/widgets/key_hints.py +16 -0
  257. cecli/tui/widgets/output.py +354 -0
  258. cecli/tui/widgets/status_bar.py +279 -0
  259. cecli/tui/worker.py +160 -0
  260. cecli/urls.py +16 -0
  261. cecli/utils.py +499 -0
  262. cecli/versioncheck.py +90 -0
  263. cecli/voice.py +90 -0
  264. cecli/waiting.py +38 -0
  265. cecli/watch.py +316 -0
  266. cecli/watch_prompts.py +12 -0
  267. cecli/website/Gemfile +8 -0
  268. cecli/website/_includes/blame.md +162 -0
  269. cecli/website/_includes/get-started.md +22 -0
  270. cecli/website/_includes/help-tip.md +5 -0
  271. cecli/website/_includes/help.md +24 -0
  272. cecli/website/_includes/install.md +5 -0
  273. cecli/website/_includes/keys.md +4 -0
  274. cecli/website/_includes/model-warnings.md +67 -0
  275. cecli/website/_includes/multi-line.md +22 -0
  276. cecli/website/_includes/python-m-aider.md +5 -0
  277. cecli/website/_includes/recording.css +228 -0
  278. cecli/website/_includes/recording.md +34 -0
  279. cecli/website/_includes/replit-pipx.md +9 -0
  280. cecli/website/_includes/works-best.md +1 -0
  281. cecli/website/_sass/custom/custom.scss +103 -0
  282. cecli/website/docs/config/adv-model-settings.md +2498 -0
  283. cecli/website/docs/config/agent-mode.md +320 -0
  284. cecli/website/docs/config/aider_conf.md +548 -0
  285. cecli/website/docs/config/api-keys.md +90 -0
  286. cecli/website/docs/config/custom-commands.md +187 -0
  287. cecli/website/docs/config/dotenv.md +493 -0
  288. cecli/website/docs/config/editor.md +127 -0
  289. cecli/website/docs/config/mcp.md +210 -0
  290. cecli/website/docs/config/model-aliases.md +173 -0
  291. cecli/website/docs/config/options.md +890 -0
  292. cecli/website/docs/config/reasoning.md +210 -0
  293. cecli/website/docs/config/skills.md +172 -0
  294. cecli/website/docs/config/tui.md +126 -0
  295. cecli/website/docs/config.md +44 -0
  296. cecli/website/docs/faq.md +379 -0
  297. cecli/website/docs/git.md +76 -0
  298. cecli/website/docs/index.md +47 -0
  299. cecli/website/docs/install/codespaces.md +39 -0
  300. cecli/website/docs/install/docker.md +48 -0
  301. cecli/website/docs/install/optional.md +100 -0
  302. cecli/website/docs/install/replit.md +8 -0
  303. cecli/website/docs/install.md +115 -0
  304. cecli/website/docs/languages.md +264 -0
  305. cecli/website/docs/legal/contributor-agreement.md +111 -0
  306. cecli/website/docs/legal/privacy.md +104 -0
  307. cecli/website/docs/llms/anthropic.md +77 -0
  308. cecli/website/docs/llms/azure.md +48 -0
  309. cecli/website/docs/llms/bedrock.md +132 -0
  310. cecli/website/docs/llms/cohere.md +34 -0
  311. cecli/website/docs/llms/deepseek.md +32 -0
  312. cecli/website/docs/llms/gemini.md +49 -0
  313. cecli/website/docs/llms/github.md +111 -0
  314. cecli/website/docs/llms/groq.md +36 -0
  315. cecli/website/docs/llms/lm-studio.md +39 -0
  316. cecli/website/docs/llms/ollama.md +75 -0
  317. cecli/website/docs/llms/openai-compat.md +39 -0
  318. cecli/website/docs/llms/openai.md +58 -0
  319. cecli/website/docs/llms/openrouter.md +78 -0
  320. cecli/website/docs/llms/other.md +117 -0
  321. cecli/website/docs/llms/vertex.md +50 -0
  322. cecli/website/docs/llms/warnings.md +10 -0
  323. cecli/website/docs/llms/xai.md +53 -0
  324. cecli/website/docs/llms.md +54 -0
  325. cecli/website/docs/more/analytics.md +127 -0
  326. cecli/website/docs/more/edit-formats.md +116 -0
  327. cecli/website/docs/more/infinite-output.md +192 -0
  328. cecli/website/docs/more-info.md +8 -0
  329. cecli/website/docs/recordings/auto-accept-architect.md +31 -0
  330. cecli/website/docs/recordings/dont-drop-original-read-files.md +35 -0
  331. cecli/website/docs/recordings/index.md +21 -0
  332. cecli/website/docs/recordings/model-accepts-settings.md +69 -0
  333. cecli/website/docs/recordings/tree-sitter-language-pack.md +80 -0
  334. cecli/website/docs/repomap.md +112 -0
  335. cecli/website/docs/scripting.md +100 -0
  336. cecli/website/docs/sessions.md +213 -0
  337. cecli/website/docs/troubleshooting/aider-not-found.md +24 -0
  338. cecli/website/docs/troubleshooting/edit-errors.md +76 -0
  339. cecli/website/docs/troubleshooting/imports.md +62 -0
  340. cecli/website/docs/troubleshooting/models-and-keys.md +54 -0
  341. cecli/website/docs/troubleshooting/support.md +79 -0
  342. cecli/website/docs/troubleshooting/token-limits.md +96 -0
  343. cecli/website/docs/troubleshooting/warnings.md +12 -0
  344. cecli/website/docs/troubleshooting.md +11 -0
  345. cecli/website/docs/usage/browser.md +57 -0
  346. cecli/website/docs/usage/caching.md +49 -0
  347. cecli/website/docs/usage/commands.md +133 -0
  348. cecli/website/docs/usage/conventions.md +119 -0
  349. cecli/website/docs/usage/copypaste.md +136 -0
  350. cecli/website/docs/usage/images-urls.md +48 -0
  351. cecli/website/docs/usage/lint-test.md +118 -0
  352. cecli/website/docs/usage/modes.md +211 -0
  353. cecli/website/docs/usage/not-code.md +179 -0
  354. cecli/website/docs/usage/notifications.md +87 -0
  355. cecli/website/docs/usage/tips.md +79 -0
  356. cecli/website/docs/usage/tutorials.md +30 -0
  357. cecli/website/docs/usage/voice.md +121 -0
  358. cecli/website/docs/usage/watch.md +294 -0
  359. cecli/website/docs/usage.md +102 -0
  360. cecli/website/share/index.md +101 -0
  361. cecli_dev-0.95.5.dist-info/METADATA +549 -0
  362. cecli_dev-0.95.5.dist-info/RECORD +366 -0
  363. cecli_dev-0.95.5.dist-info/WHEEL +5 -0
  364. cecli_dev-0.95.5.dist-info/entry_points.txt +4 -0
  365. cecli_dev-0.95.5.dist-info/licenses/LICENSE.txt +202 -0
  366. cecli_dev-0.95.5.dist-info/top_level.txt +1 -0
@@ -0,0 +1,379 @@
1
+ ---
2
+ nav_order: 90
3
+ description: Frequently asked questions about aider.
4
+ ---
5
+
6
+ # FAQ
7
+ {: .no_toc }
8
+
9
+ - TOC
10
+ {:toc}
11
+
12
+ {% include help-tip.md %}
13
+
14
+ ## How can I add ALL the files to the chat?
15
+
16
+ People regularly ask about how to add **many or all of their repo's files** to the chat.
17
+ This is probably not a good idea and will likely do more harm than good.
18
+
19
+ The best approach is think about which files need to be changed to accomplish
20
+ the task you are working on. Just add those files to the chat.
21
+
22
+ Usually when people want to add "all the files" it's because they think it
23
+ will give the LLM helpful context about the overall code base.
24
+ Aider will automatically give the LLM a bunch of additional context about
25
+ the rest of your git repo.
26
+ It does this by analyzing your entire codebase in light of the
27
+ current chat to build a compact
28
+ [repository map](https://aider.chat/2023/10/22/repomap.html).
29
+
30
+ Adding a bunch of files that are mostly irrelevant to the
31
+ task at hand will often distract or confuse the LLM.
32
+ The LLM will give worse coding results, and sometimese even fail to correctly edit files.
33
+ Addings extra files will also increase your token costs.
34
+
35
+ Again, it's usually best to just add the files to the chat that will need to be modified.
36
+ If you still wish to add lots of files to the chat, you can:
37
+
38
+ - Use a wildcard when you launch aider: `aider src/*.py`
39
+ - Use a wildcard with the in-chat `/add` command: `/add src/*.py`
40
+ - Give the `/add` command a directory name and it will recursively add every file under that dir: `/add src`
41
+
42
+ ## Can I use aider in a large (mono) repo?
43
+
44
+ Aider will work in any size repo, but is not optimized for quick
45
+ performance and response time in very large repos.
46
+ There are some things you can do to improve performance.
47
+
48
+ Be sure to check the
49
+ [general usage tips](/docs/usage/tips.html)
50
+ before considering this large-repo specific advice.
51
+ To get the best results from aider you want to
52
+ be thoughtful about how you add files to the chat,
53
+ regardless of your repo size.
54
+
55
+ You can change into a sub directory of your repo that contains the
56
+ code you want to work on and use the `--subtree-only` switch.
57
+ This will tell aider to ignore the repo outside of the
58
+ directory you start in.
59
+
60
+ You can also create a `.aiderignore` file to tell aider
61
+ to ignore parts of the repo that aren't relevant to your task.
62
+ This file conforms to `.gitignore` syntax and conventions.
63
+ For example, to focus only on specific directories in a monorepo,
64
+ you could create a `.aiderignore` file with:
65
+
66
+ ```
67
+ # Ignore everything
68
+ /*
69
+
70
+ # Allow specific directories and their contents
71
+ !foo/
72
+ !bar/
73
+ !baz/
74
+
75
+ # Allow nested files under these directories
76
+ !foo/**
77
+ !bar/**
78
+ !baz/**
79
+ ```
80
+
81
+ You can use `--aiderignore <filename>` to name a specific file
82
+ to use for ignore patterns.
83
+ You might have a few of these handy for when you want to work on
84
+ frontend, backend, etc portions of your repo.
85
+
86
+ ## Can I use aider with multiple git repos at once?
87
+
88
+ Currently aider can only work with one repo at a time.
89
+
90
+ There are some things you can try if you need to work with
91
+ multiple interrelated repos:
92
+
93
+ - You can run aider in repo-A where you need to make a change
94
+ and use `/read` to add some files read-only from another repo-B.
95
+ This can let aider see key functions or docs from the other repo.
96
+ - You can run `aider --show-repo-map > map.md` within each
97
+ repo to create repo maps.
98
+ You could then run aider in repo-A and
99
+ use `/read ../path/to/repo-B/map.md` to share
100
+ a high level map of the other repo.
101
+ - You can use aider to write documentation about a repo.
102
+ Inside each repo, you could run `aider docs.md`
103
+ and work with aider to write some markdown docs.
104
+ Then while using aider to edit repo-A
105
+ you can `/read ../path/to/repo-B/docs.md` to
106
+ read in those docs from the other repo.
107
+ - In repo A, ask aider to write a small script that demonstrates
108
+ the functionality you want to use in repo B.
109
+ Then when you're using aider in repo B, you can
110
+ `/read` in that script.
111
+
112
+ ## How do I turn on the repository map?
113
+
114
+ Depending on the LLM you are using, aider may launch with the repo map disabled by default:
115
+
116
+ ```
117
+ Repo-map: disabled
118
+ ```
119
+
120
+ This is because weaker models get easily overwhelmed and confused by the content of the
121
+ repo map. They sometimes mistakenly try to edit the code in the repo map.
122
+ The repo map is usually disabled for a good reason.
123
+
124
+ If you would like to force it on, you can run aider with `--map-tokens 1024`.
125
+
126
+ ## How do I include the git history in the context?
127
+
128
+ When starting a fresh aider session, you can include recent git history in the chat context. This can be useful for providing the LLM with information about recent changes. To do this:
129
+
130
+ 1. Use the `/run` command with `git diff` to show recent changes:
131
+ ```
132
+ /run git diff HEAD~1
133
+ ```
134
+ This will include the diff of the last commit in the chat history.
135
+
136
+ 2. To include diffs from multiple commits, increase the number after the tilde:
137
+ ```
138
+ /run git diff HEAD~3
139
+ ```
140
+ This will show changes from the last three commits.
141
+
142
+ Remember, the chat history already includes recent changes made during the current session, so this tip is most useful when starting a new aider session and you want to provide context about recent work.
143
+
144
+ You can also use aider to review PR branches:
145
+
146
+ ```
147
+ /run git diff one-branch..another-branch
148
+
149
+ ...
150
+
151
+ Add 6.9k tokens of command output to the chat? (Y)es/(N)o [Yes]: Yes
152
+
153
+ /ask Are there any problems with the way this change works with the FooBar class?
154
+ ```
155
+
156
+ And of course you can prepare diff output outside of aider and provide it as
157
+ a file for aider to read:
158
+
159
+ ```
160
+ $ git diff -C10 v1..v2 > v1-v2-changes.diff
161
+ $ aider --read v1-v2-changes.diff
162
+
163
+ Aider v0.77.2.dev+import
164
+ Main model: anthropic/claude-3-7-sonnet-20250219 with diff edit format, 8k think tokens
165
+ ──────────────────────────────────
166
+ v1-v2-changes.diff
167
+ > Do you see any potential bugs in this PR?
168
+ ```
169
+
170
+
171
+ {: .tip }
172
+ The `/git` command will not work for this purpose, as its output is not included in the chat.
173
+
174
+ ## How can I run aider locally from source code?
175
+
176
+ To run the project locally, follow these steps:
177
+
178
+ ```
179
+ # Clone the repository
180
+ git clone git@github.com:Aider-AI/aider.git
181
+
182
+ # Navigate to the project directory
183
+ cd aider
184
+
185
+ # It's recommended to make a virtual environment
186
+
187
+ # Install aider in editable/development mode,
188
+ # so it runs from the latest copy of these source files
189
+ python -m pip install -e .
190
+
191
+ # Run the local version of aider
192
+ python -m aider
193
+ ```
194
+
195
+
196
+
197
+ ## Can I change the system prompts that aider uses?
198
+
199
+ The most convenient way to add custom instructions is to use a
200
+ [conventions file](https://aider.chat/docs/usage/conventions.html).
201
+
202
+ But, aider is set up to support different actual system prompts and edit formats
203
+ in a modular way. If you look in the `aider/coders` subdirectory, you'll
204
+ see there's a base coder with base prompts, and then there are
205
+ a number of
206
+ different specific coder implementations.
207
+
208
+ If you're thinking about experimenting with system prompts
209
+ this document about
210
+ [benchmarking GPT-3.5 and GPT-4 on code editing](https://aider.chat/docs/benchmarks.html)
211
+ might be useful background.
212
+
213
+ While it's not well documented how to add new coder subsystems, you may be able
214
+ to modify an existing implementation or use it as a template to add another.
215
+
216
+ To get started, try looking at and modifying these files.
217
+
218
+ The wholefile coder is currently used by GPT-3.5 by default. You can manually select it with `--edit-format whole`.
219
+
220
+ - wholefile_coder.py
221
+ - wholefile_prompts.py
222
+
223
+ The editblock coder is currently used by GPT-4o by default. You can manually select it with `--edit-format diff`.
224
+
225
+ - editblock_coder.py
226
+ - editblock_prompts.py
227
+
228
+ The universal diff coder is currently used by GPT-4 Turbo by default. You can manually select it with `--edit-format udiff`.
229
+
230
+ - udiff_coder.py
231
+ - udiff_prompts.py
232
+
233
+ When experimenting with coder backends, it helps to run aider with `--verbose --no-pretty` so you can see
234
+ all the raw information being sent to/from the LLM in the conversation.
235
+
236
+ You can also refer to the
237
+ [instructions for installing a development version of aider](https://aider.chat/docs/install/optional.html#install-the-development-version-of-aider).
238
+
239
+ ## What LLMs do you use to build aider?
240
+
241
+ Aider writes a lot of its own code, usually about 70% of the new code in each
242
+ release.
243
+ People often ask which LLMs I use with aider, when writing aider.
244
+ Below is a table showing the models I have used recently,
245
+ extracted from the
246
+ [public log](https://github.com/aider-ai/aider/blob/main/aider/website/assets/sample-analytics.jsonl)
247
+ of my
248
+ [aider analytics](https://aider.chat/docs/more/analytics.html).
249
+
250
+ <!--[[[cog
251
+ import sys
252
+ sys.path.append(".")
253
+ import scripts.my_models as my_models
254
+ stats = my_models.collect_model_stats()
255
+ html = my_models.format_html_table(stats)
256
+ cog.out(html)
257
+ ]]]-->
258
+ <style>
259
+ table { border-collapse: collapse; width: 100%; }
260
+ th, td { padding: 8px; text-align: left; border-bottom: 1px solid #ddd; }
261
+ th { background-color: #f2f2f2; }
262
+ tr:hover { background-color: #f5f5f5; }
263
+ .right { text-align: right; }
264
+ </style>
265
+ <table>
266
+ <tr><th>Model Name</th><th class='right'>Total Tokens</th><th class='right'>Percent</th></tr>
267
+ <tr><td>gemini/gemini-2.5-pro</td><td class='right'>222,047</td><td class='right'>29.7%</td></tr>
268
+ <tr><td>gpt-5</td><td class='right'>211,072</td><td class='right'>28.2%</td></tr>
269
+ <tr><td>None</td><td class='right'>168,988</td><td class='right'>22.6%</td></tr>
270
+ <tr><td>gemini/gemini-3-pro-preview</td><td class='right'>81,851</td><td class='right'>11.0%</td></tr>
271
+ <tr><td>o3-pro</td><td class='right'>36,620</td><td class='right'>4.9%</td></tr>
272
+ <tr><td>gemini/gemini-2.5-flash-lite</td><td class='right'>15,470</td><td class='right'>2.1%</td></tr>
273
+ <tr><td>gemini/gemini-2.5-flash-lite-preview-06-17</td><td class='right'>11,371</td><td class='right'>1.5%</td></tr>
274
+ </table>
275
+ <!--[[[end]]]-->
276
+
277
+ ## How are the "aider wrote xx% of code" stats computed?
278
+
279
+ [Aider is tightly integrated with git](/docs/git.html) so all
280
+ of aider's code changes are committed to the repo with proper attribution.
281
+ The
282
+ [stats are computed](https://github.com/Aider-AI/aider/blob/main/scripts/blame.py)
283
+ by doing something like `git blame` on the repo,
284
+ and counting up who wrote all the new lines of code in each release.
285
+ Only lines in source code files are counted, not documentation or prompt files.
286
+
287
+ ## Why did aider ignore/discard its proposed edits after it asked to add a new file to the chat?
288
+
289
+ If aider prompts you to add a new file to the chat and you say yes,
290
+ it will re-submit the original request.
291
+ The fact that the LLM's reply indicated that it needed to see another file (and you said yes)
292
+ is often a sign that the LLM should have been able to see/edit that file in the first place.
293
+ Without access to it, there is increased chance that it's done a bad implementation of the requested change.
294
+ Often LLMs will hallucinate content for the files they needed but didn't have.
295
+ So aider re-submits the original request in this situation.
296
+
297
+ ## Why does aider sometimes stop highlighting code in its replies?
298
+
299
+ Aider displays the markdown responses that are coming back from the LLM.
300
+ Usually, the LLM will reply with code in a markdown "code block" with
301
+ triple backtick fences, like this:
302
+
303
+ ````
304
+ Here's some code:
305
+
306
+ ```
307
+ print("hello")
308
+ ```
309
+ ````
310
+
311
+ But if you've added files to the chat that contain triple backticks,
312
+ aider needs to tell the LLM to use a different set of fences.
313
+ Otherwise, the LLM can't safely include your code's triple backticks
314
+ inside the code blocks that it returns with edits.
315
+ Aider will use fences like `<source>...</source>` in this case.
316
+
317
+ A side effect of this is that the code that aider outputs may no
318
+ longer be properly highlighted.
319
+ You will most often notice this if you add markdown files
320
+ to you chats that contain code blocks.
321
+
322
+ ## Why is the LLM speaking to me in an unexpected language?
323
+
324
+ Aider goes to some effort to prompt the model to use the language that is configured
325
+ for your system.
326
+ But LLMs aren't fully reliable, and they sometimes decide to speak in
327
+ an unexpected language.
328
+ Claude is especially fond of speaking French.
329
+
330
+ You can explicitly set the language that aider tells the model to use with
331
+ `--chat-language <language>`.
332
+ But the LLM may not comply.
333
+
334
+ ## Can I share my aider chat transcript?
335
+
336
+ Yes, you can now share aider chat logs in a pretty way.
337
+
338
+ 1. Copy the markdown logs you want to share from `.aider.chat.history.md` and make a github gist. Or publish the raw markdown logs on the web any way you'd like.
339
+
340
+ ```
341
+ https://gist.github.com/Aider-AI/2087ab8b64034a078c0a209440ac8be0
342
+ ```
343
+
344
+ 2. Take the gist URL and append it to:
345
+
346
+ ```
347
+ https://aider.chat/share/?mdurl=
348
+ ```
349
+
350
+ This will give you a URL like this, which shows the chat history like you'd see in a terminal:
351
+
352
+ ```
353
+ https://aider.chat/share/?mdurl=https://gist.github.com/Aider-AI/2087ab8b64034a078c0a209440ac8be0
354
+ ```
355
+
356
+ ## Can I edit files myself while aider is running?
357
+
358
+ Yes. Aider always reads the latest copy of files from the file
359
+ system when you send each message.
360
+
361
+ While you're waiting for aider's reply to complete, it's probably unwise to
362
+ edit files that you've added to the chat.
363
+ Your edits and aider's edits might conflict.
364
+
365
+ ## What is Aider AI LLC?
366
+
367
+ Aider AI LLC is the company behind the aider AI coding tool.
368
+ Aider is
369
+ [open source and available on GitHub](https://github.com/Aider-AI/aider)
370
+ under an
371
+ [Apache 2.0 license](https://github.com/Aider-AI/aider/blob/main/LICENSE.txt).
372
+
373
+ ## Can I Script Aider?
374
+
375
+ Yes. You can script aider via the command line or python. See more from here: [Scripting aider](https://aider.chat/docs/scripting.html)
376
+
377
+
378
+ <div style="height:80vh"></div>
379
+
@@ -0,0 +1,76 @@
1
+ ---
2
+ parent: More info
3
+ nav_order: 100
4
+ description: Aider is tightly integrated with git.
5
+ ---
6
+
7
+ # Git integration
8
+
9
+ Aider works best with code that is part of a git repo.
10
+ Aider is tightly integrated with git, which makes it easy to:
11
+
12
+ - Use the `/undo` command to instantly undo any AI changes that you don't like.
13
+ - Go back in the git history to review the changes that aider made to your code
14
+ - Manage a series of aider's changes on a git branch
15
+
16
+ Aider uses git in these ways:
17
+
18
+ - It asks to create a git repo if you launch it in a directory without one.
19
+ - Whenever aider edits a file, it commits those changes with a descriptive commit message. This makes it easy to undo or review aider's changes.
20
+ - Aider takes special care before editing files that already have uncommitted changes (dirty files). Aider will first commit any preexisting changes with a descriptive commit message.
21
+ This keeps your edits separate from aider's edits, and makes sure you never lose your work if aider makes an inappropriate change.
22
+
23
+ ## In-chat commands
24
+
25
+ Aider also allows you to use
26
+ [in-chat commands](/docs/usage/commands.html)
27
+ to perform git operations:
28
+
29
+ - `/diff` will show all the file changes since the last message you sent.
30
+ - `/undo` will undo and discard the last change.
31
+ - `/commit` to commit all dirty changes with a sensible commit message.
32
+ - `/git` will let you run raw git commands to do more complex management of your git history.
33
+
34
+ You can also manage your git history outside of aider with your preferred git tools.
35
+
36
+ ## Disabling git integration
37
+
38
+ While it is not recommended, you can disable aider's use of git in a few ways:
39
+
40
+ - `--no-auto-commits` will stop aider from git committing each of its changes.
41
+ - `--no-dirty-commits` will stop aider from committing dirty files before applying its edits.
42
+ - `--no-git` will completely stop aider from using git on your files. You should ensure you are keeping sensible backups of the files you are working with.
43
+ - `--git-commit-verify` will run pre-commit hooks when making git commits. By default, aider skips pre-commit hooks by using the `--no-verify` flag (`--git-commit-verify=False`).
44
+
45
+ ## Commit messages
46
+
47
+ Aider sends the `--weak-model` a copy of the diffs and the chat history
48
+ and asks it to produce a commit message.
49
+ By default, aider creates commit messages which follow
50
+ [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).
51
+
52
+ You can customize the
53
+ [commit prompt](https://github.com/Aider-AI/aider/blob/main/aider/prompts.py#L5)
54
+ with the `--commit-prompt` option.
55
+ You can place that on the command line, or
56
+ [configure it via a config file or environment variables](https://aider.chat/docs/config.html).
57
+
58
+
59
+ ## Commit attribution
60
+
61
+ Aider marks commits that it either authored or committed.
62
+
63
+ - If aider authored the changes in a commit, they will have "(aider)" appended to the git author and git committer name metadata.
64
+ - If aider simply committed changes (found in dirty files), the commit will have "(aider)" appended to the git committer name metadata.
65
+
66
+ You can use `--no-attribute-author` and `--no-attribute-committer` to disable
67
+ modification of the git author and committer name fields.
68
+
69
+ Additionally, you can use the following options to prefix commit messages:
70
+
71
+ - `--attribute-commit-message-author`: Prefix commit messages with 'aider: ' if aider authored the changes.
72
+ - `--attribute-commit-message-committer`: Prefix all commit messages with 'aider: ', regardless of whether aider authored the changes or not.
73
+
74
+ Finally, you can use `--attribute-co-authored-by` to have aider append a Co-authored-by trailer to the end of the commit string.
75
+ This will disable appending `(aider)` to the git author and git committer unless you have explicitly enabled those settings.
76
+
@@ -0,0 +1,47 @@
1
+ ---
2
+ nav_exclude: true
3
+ ---
4
+
5
+ # Aider Documentation
6
+
7
+ Aider is AI pair programming in your terminal. This documentation will help you get the most out of aider.
8
+
9
+ <div class="toc">
10
+ {% assign pages_list = site.html_pages | sort: "nav_order" %}
11
+
12
+ <ul>
13
+ {% for page in pages_list %}
14
+ {% if page.title and page.url != "/" and page.parent == nil and page.nav_exclude != true %}
15
+ <li>
16
+ <a href="{{ page.url | absolute_url }}">{{ page.title }}</a>{% if page.description %} <span style="font-size: 0.9em; font-style: italic;">— {{ page.description }}</span>{% endif %}
17
+
18
+ {% assign children = site.html_pages | where: "parent", page.title | sort: "nav_order" %}
19
+ {% if children.size > 0 %}
20
+ <ul>
21
+ {% for child in children %}
22
+ {% if child.title %}
23
+ <li>
24
+ <a href="{{ child.url | absolute_url }}">{{ child.title }}</a>{% if child.description %} <span style="font-size: 0.9em; font-style: italic;">— {{ child.description }}</span>{% endif %}
25
+
26
+ {% assign grandchildren = site.html_pages | where: "parent", child.title | sort: "nav_order" %}
27
+ {% if grandchildren.size > 0 %}
28
+ <ul>
29
+ {% for grandchild in grandchildren %}
30
+ {% if grandchild.title %}
31
+ <li>
32
+ <a href="{{ grandchild.url | absolute_url }}">{{ grandchild.title }}</a>{% if grandchild.description %} <span style="font-size: 0.9em; font-style: italic;">— {{ grandchild.description }}</span>{% endif %}
33
+ </li>
34
+ {% endif %}
35
+ {% endfor %}
36
+ </ul>
37
+ {% endif %}
38
+ </li>
39
+ {% endif %}
40
+ {% endfor %}
41
+ </ul>
42
+ {% endif %}
43
+ </li>
44
+ {% endif %}
45
+ {% endfor %}
46
+ </ul>
47
+ </div>
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: GitHub Codespaces
3
+ parent: Installation
4
+ nav_order: 900
5
+ ---
6
+
7
+ # GitHub Codespaces
8
+
9
+ You can use aider in GitHub Codespaces via the built-in Terminal pane.
10
+ See below for an example,
11
+ but you can just follow the
12
+ [main install instructions](/docs/install.html)
13
+ inside your codespace terminal.
14
+
15
+
16
+ <div class="video-container">
17
+ <video controls poster="/assets/codespaces.jpg">
18
+ <source src="/assets/codespaces.mp4" type="video/mp4">
19
+ <a href="/assets/codespaces.mp4">Install aider in GitHub Codespaces</a>
20
+ </video>
21
+ </div>
22
+
23
+ <style>
24
+ .video-container {
25
+ position: relative;
26
+ padding-bottom: 101.89%; /* 1080 / 1060 = 1.0189 */
27
+ height: 0;
28
+ overflow: hidden;
29
+ }
30
+
31
+ .video-container video {
32
+ position: absolute;
33
+ top: 0;
34
+ left: 0;
35
+ width: 100%;
36
+ height: 100%;
37
+ }
38
+ </style>
39
+
@@ -0,0 +1,48 @@
1
+ ---
2
+ parent: Installation
3
+ nav_order: 100
4
+ ---
5
+
6
+ # cecli with docker
7
+
8
+ Cecli is available as a docker image:
9
+
10
+ - `dustinwashington/cecli` installs the cecli core, a smaller image that's good to get started quickly.
11
+
12
+ ### Aider core
13
+
14
+ ```bash
15
+ docker pull dustinwashington/cecli
16
+ docker run \
17
+ -it \
18
+ --user $(id -u):$(id -g) \
19
+ --volume $(pwd):/app dustinwashington/cecli \
20
+ --volume $(pwd)/.aider.conf.yml:/.aider.conf.yml \
21
+ --volume $(pwd)/.aider.env:/.aider/.env \
22
+ [...other args...] \
23
+ --config /app/.aider.conf.yml
24
+ ```
25
+
26
+ ## How to use it
27
+
28
+ You should run the above commands from the root of your git repo,
29
+ since the `--volume` arg maps your current directory into the
30
+ docker container.
31
+ Given that, you need to be in the root of your git repo for aider to be able to
32
+ see the repo and all its files.
33
+
34
+ You should be sure your that
35
+ git repo config contains your user name and email, since the
36
+ docker container won't have your global git config.
37
+ Run these commands while in your git repo, before
38
+ you do the `docker run` command:
39
+
40
+ ```
41
+ git config user.email "you@example.com"
42
+ git config user.name "Your Name"
43
+ ```
44
+
45
+ ## Limitations
46
+
47
+ - When you use the in-chat `/run` command, it will be running shell commands *inside the docker container*. So those commands won't be running in your local environment, which may make it tricky to `/run` tests, etc for your project.
48
+ - The `/voice` command won't work unless you can figure out how to give the docker container access to your host audio device. The container has libportaudio2 installed, so it should work if you can do that.
@@ -0,0 +1,100 @@
1
+ ---
2
+ parent: Installation
3
+ nav_order: 20
4
+ ---
5
+
6
+ # Optional steps
7
+ {: .no_toc }
8
+
9
+ The steps below are completely optional.
10
+
11
+ - TOC
12
+ {:toc}
13
+
14
+ ## Install git
15
+
16
+ Aider works best if you have git installed.
17
+ Here are
18
+ [instructions for installing git in various environments](https://github.com/git-guides/install-git).
19
+
20
+ ## Setup an API key
21
+
22
+ You need an key from an API provider to work with most models:
23
+
24
+ - [OpenAI](https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key) provides o1, o3-mini, gpt-4o and other models. Note that paying for an API key is different than being a "ChatGPT" subscriber.
25
+ - [Anthropic](https://docs.anthropic.com/claude/reference/getting-started-with-the-api) provides Claude 3.7 Sonnet and Haiku.
26
+ - [DeepSeek](https://platform.deepseek.com/api_keys) provides DeepSeek R1 and DeepSeek Chat V3.
27
+ - [OpenRouter](https://openrouter.ai/keys) allows you to access models from many providers using a single key.
28
+
29
+ You can [store your api keys in configuration or env files](/docs/config/api-keys.html)
30
+ and they will be loaded automatically whenever you run aider.
31
+
32
+ ## Enable Playwright
33
+
34
+ Aider supports adding web pages to the chat with the `/web <url>` command.
35
+ When you add a url to the chat, aider fetches the page and scrapes its
36
+ content.
37
+
38
+ By default, aider uses the `httpx` library to scrape web pages, but this only
39
+ works on a subset of web pages.
40
+ Some sites explicitly block requests from tools like httpx.
41
+ Others rely heavily on javascript to render the page content,
42
+ which isn't possible using only httpx.
43
+
44
+ Aider works best with all web pages if you install
45
+ Playwright's chromium browser and its dependencies:
46
+
47
+ ```
48
+ playwright install --with-deps chromium
49
+ ```
50
+
51
+ See the
52
+ [Playwright for Python documentation](https://playwright.dev/python/docs/browsers#install-system-dependencies)
53
+ for additional information.
54
+
55
+
56
+ ## Enable voice coding
57
+
58
+ Aider supports
59
+ [coding with your voice](https://aider.chat/docs/usage/voice.html)
60
+ using the in-chat `/voice` command.
61
+ Aider uses the [PortAudio](http://www.portaudio.com) library to
62
+ capture audio.
63
+ Installing PortAudio is completely optional, but can usually be accomplished like this:
64
+
65
+ - For Windows, there is no need to install PortAudio.
66
+ - For Mac, do `brew install portaudio`
67
+ - For Linux, do `sudo apt-get install libportaudio2`
68
+ - Some linux environments may also need `sudo apt install libasound2-plugins`
69
+
70
+ ## Add aider to your IDE/editor
71
+
72
+ You can use
73
+ [aider's `--watch-files` mode](https://aider.chat/docs/usage/watch.html)
74
+ to integrate with any IDE or editor.
75
+
76
+ There are a number of 3rd party aider plugins for various IDE/editors.
77
+ It's not clear how well they are tracking the latest
78
+ versions of aider,
79
+ so it may be best to just run the latest
80
+ aider in a terminal alongside your editor and use `--watch-files`.
81
+
82
+ ### NeoVim
83
+
84
+ [joshuavial](https://github.com/joshuavial) provided a NeoVim plugin for aider:
85
+
86
+ [https://github.com/joshuavial/aider.nvim](https://github.com/joshuavial/aider.nvim)
87
+
88
+ ### VS Code
89
+
90
+ You can run aider inside a VS Code terminal window.
91
+ There are a number of 3rd party
92
+ [aider plugins for VSCode](https://marketplace.visualstudio.com/search?term=aider%20-kodu&target=VSCode&category=All%20categories&sortBy=Relevance).
93
+
94
+ ### Other editors
95
+
96
+ If you are interested in creating an aider plugin for your favorite editor,
97
+ please let us know by opening a
98
+ [GitHub issue](https://github.com/Aider-AI/aider/issues).
99
+
100
+