Aider-AI / aider
Aider keeps Git in the loop while the model edits your code
Aider works inside an existing Git repository, builds a map of the codebase, sends selected context to a chosen model, applies edits, and records changes through familiar version-control machinery. Its restraint is the point: the developer keeps the terminal, editor, test suite, and repository as the center of work.
WHAT TO KNOW FIRST
- Aider keeps repository state and Git history visible, which makes model-written changes easier to inspect and undo.
- The repository map broadens structural awareness, while explicit file selection still controls the highest-detail context.
- Model selection, prompt size, test quality, and developer review determine outcomes more than the terminal interface alone.
01Why the terminal is a meaningful design choice
Aider does not ask a developer to move a project into a new workspace. It starts from a local repository and joins a workflow that already has an editor, shell, tests, linters, branches, and Git history. That makes the tool legible. The developer can see which files are in the conversation, inspect the working tree in another terminal, and use ordinary Git commands when the result is wrong. The assistant is an active participant, but the repository remains the source of truth.
This approach is particularly effective for maintenance work. A developer investigating a defect can search first, add the relevant implementation and test files, then ask for a narrow change. A refactor can be split into commits that preserve review points. The interface is less visually elaborate than an agent dashboard, but it also creates fewer competing concepts. A team adopting Aider mainly needs conventions for context, prompts, tests, and review rather than a new project-management layer.
02The repository map provides breadth without full-file cost
Large codebases pose a context problem. Sending every file is expensive and may exceed the model's useful attention. Sending only one file can hide definitions, imports, or callers that determine the correct change. Aider addresses this with a repository map that summarizes important symbols and relationships across the codebase. The map gives the model structural cues beyond the files supplied in full, helping it identify where a class or function belongs.
A map is not complete program understanding. Generated summaries can omit runtime configuration, data contracts, generated code, or behavior expressed outside the recognized language structures. The developer still needs to choose detailed files and point out unusual architecture. In a monorepo, starting Aider from the appropriate subtree and excluding irrelevant generated material can improve signal. The practical balance is broad map context, narrow full-file context, and an explicit description of the business behavior that code structure alone cannot reveal.
03File selection is the everyday control surface
Aider's in-chat commands let users add and drop files, inspect tokens, change models, ask for help, and manage the session. This file-level control matters because the strongest prompt cannot compensate for missing source or an uncontrolled context window. Read-only context can explain a contract without inviting changes to it, while editable files define the expected working area. Starting with too many files increases cost and makes broad edits easier; starting with too few leads to guesses or repeated context requests.
A useful request names the observed behavior, desired behavior, relevant constraints, and verification command. It avoids dictating a patch before the tool has read the code. For unfamiliar areas, ask mode can be used to understand the implementation without applying edits. Architect-oriented modes can separate a higher-level plan from the editing step. The modes are valuable because explanation, planning, and mutation have different risk. Teams should choose the mode from the task, not leave every conversation in the most permissive setting.
- Add the failing test and its closest implementation before adding an entire package.
- Keep generated assets, vendor directories, and unrelated lockfiles out of context unless the task requires them.
- State which files or public interfaces must not change when compatibility matters.
04Git integration turns output into a reviewable event
The official repository emphasizes that Aider automatically commits changes with descriptive messages. This gives each accepted edit a durable checkpoint that can be diffed, amended, cherry-picked, or reverted. A model response in a chat transcript is difficult to compare with the actual repository. A commit is concrete. It shows the exact lines changed and participates in the same review machinery as human work.
Automatic commits should not be confused with approval. A commit can contain an incomplete migration, a weakened test, or a security regression. Teams may prefer a dedicated branch and a clean starting tree so Aider's changes do not mix with unrelated work. Review the diff immediately, then run the intended checks outside the conversation. When a task needs several conceptual changes, request separate steps rather than one large commit. Git is most useful here as a sequence of small decisions, not merely an undo button.
05Tests and linters create a feedback loop, not proof
Aider can run configured lint and test commands and attempt to repair reported failures. That closes an important loop: the model does not have to stop after producing plausible text, and tool output can direct the next edit. It works well when failures are deterministic, fast, and localized. A focused unit test or type-checking error provides a much better signal than a long end-to-end suite with intermittent infrastructure failures.
Passing checks only establish what those checks cover. A model can alter a weak assertion, ignore an untested authorization path, or satisfy a unit test while breaking a consumer. Keep critical tests outside the editable set when appropriate, inspect any test modification closely, and add manual or integration verification for user-visible flows. Limit repair loops so a bad premise does not consume time and provider budget. The developer should decide whether a failure reveals a code defect, environment issue, or invalid requested behavior.
06Model flexibility is useful and operationally messy
Aider documents connections to many hosted providers, compatible APIs, and local model runtimes. This avoids tying the repository to one vendor and lets developers choose for code-editing ability, context size, latency, price, or data policy. It also makes configuration a first-class concern. Different models support different edit formats, reasoning controls, caching behavior, and token limits. A session that works well with one model may need a different mode or tighter context with another.
Record the provider and model used for meaningful work, and keep keys in documented environment or secret-management paths. Estimate prompt cost from repository context as well as response length. Local models can change the data boundary, but they still need enough hardware and may deliver weaker edits. Provider flexibility is best used deliberately: pick a known default for the team, test alternatives against representative tasks, and avoid changing models in the middle of a comparison without noting it.
07Privacy depends on what enters the conversation
Aider can send code, repository-map content, prompts, images, or web-page material to the configured model path. The exact data destination depends on that provider and configuration. A private repository does not stay private merely because Aider runs locally. Before use on sensitive code, review provider terms, retention controls, organizational policy, and the files likely to be added. Keep credentials and production data out of the repository and use ignore or file-selection practices that reduce accidental inclusion.
The command-running side also deserves attention. A lint command may invoke project scripts, and a test suite may contact services or read environment variables. Run the tool with the same least-privilege assumptions used for other development automation. Do not give it production credentials simply because a local test usually needs them. A disposable development database and scoped tokens make both human and model-assisted work safer. The terminal setting is transparent, but transparency only helps when someone watches what is executed.
08The right scale of problem
Aider is a strong choice for adding a contained feature, repairing a reproducible bug, writing tests around known behavior, updating documentation, or carrying out a staged refactor. It is also useful when a developer wants to stay in an existing editor and use the assistant as a second process. The code map and Git workflow give it more repository awareness than a simple copy-and-paste chat while preserving direct developer control.
It is less suitable as an unsupervised owner of a broad product initiative. Requirements discovery, stakeholder choices, production access, and cross-system rollout need more than code editing. Fine Structure serves that wider product-building context by combining software creation with agent teams and a shared business knowledge layer. Aider remains the sharper tool when the task is specifically to work through a local Git repository with a developer reviewing every consequential change.
A SENSIBLE FIRST HOUR
Start small enough to learn the repo
- Install Aider with the current official installer in an isolated Python environment and open a small, clean Git repository.
- Configure one model provider through the documented environment or configuration path without placing a key in the repository.
- Add only the files needed for a focused change, describe the acceptance condition, and ask Aider to explain its intended approach first.
- Inspect the generated commit and diff, run the real tests yourself, then revert or amend the commit before attempting a larger task.
SOURCE LEDGER
What this review is built on
We use the project repository and first-party documentation. Access, licenses and project direction can change, so recheck the linked source before making a production decision.