Aider First Impressions

One trend among AI-enabled development tools is tight integration with an IDE. A popular example is Cursor. If you already use a similar IDE this seems very welcome, but not so much if you don’t.

Alternatively, Aider provides a rich stand-alone command-line interface, making it easy to integrate with your existing development workflow outside of an IDE. That’s more appropriate to those of us who prefer UNIX-style constellations of loosely-coupled tools.

Here are my initial impressions, positive and negative, from working with Aider for a few hours.

Installation Breaks venv Boundaries #

The documentation recommends installation with pip. If you run this inside a venv you get a venv-specific installation… NOT! The installation instructions make no mention venv, but any regular venv user expects the install to respect the venv boundaries.

The way out of this is a direct install of the aider-chat module:

pip install aider-chat

The docs do present this as an alternative installation method, but without reference to venv.

Good Model Support #

The set of supported models is broad, courtesy of LiteLLM under the hood. Both remote and local models work as expected.

Multiple Interaction Modes #

There are several chat modes available to users:

My exploration here is limited, but the use of different models in architect mode opens the door to interesting specialization of model use. There are commands like /ask for each mode that support mode changes on a per-message or sticky basis.

Git Integration #

Aider integrates with git to commit changes locally. The user can control whether this is automatic or not, and the /undo command reverts the last change, if it came from Aider.

The FAQ issues the following caution:

While you’re waiting for aider’s reply to complete, it’s probably unwise to edit files that you’ve added to the chat. Your edits and aider’s edits might conflict.

This makes me wonder whether an integration with jujutsu as an alternative to git would improve worflows, as it supports checkins of conflicting files.

Configurations in Home Directory #

Aider expects configuration and logging material to reside directly into your home directory by default, including .aider.chat.history.md, .aider.conf.yml, .aider.input.history, and .aider/. Why this is not at least consolidated under a single directory, I don’t know.

One Repo at a Time #

Another FAQ caution states

Currently aider can only work with one repo at a time.

The FAQ entry provides some detail about using multiple repos in a single session. It’s not clear whether two different repos in two parallel sessions will conflict. I would guess so unless some of the aforementioned config files are repo specific.

Watch Mode Seem Buggy #

In watch mode Aider process files that have changed, looking for comments starting or ending with AI, AI!, or AI?. When I tried this, asking to add a code example to a Markdown file, Aider wrote some code and then asked to create files with names taken from the code lines, rather than incorporating the code into my Markdown file. Perhaps this involves some model or edit-mode quirks. It has put me off of the feature for now.

A Longstanding Chat Model #

With its /whatever commands, Aider has a bit of IRC flavor to it. Instead of inventing a new interaction method in this context the program wisely uses a time-tested approach.

Summary #

Compared with the tools I’ve tried, Aider is far more friendly to UNIX-style programming, and provides good loosely-coupled interaction with my other development tools. I’ll continue to use it.