An Org Babel library for sending prompts to an already running Aider.el comint buffer directly from Org mode source blocks.
ob-aider.el
allows you to interact with aider.el directly from Org mode documents. This enables you to:
- Document your AI-assisted coding sessions in Org mode
- Send prompts to Aider from within your Org documents
- Capture Aider’s responses as results in your Org document
- Create reproducible AI-assisted coding workflows
- Emacs 27.1 or later
- Org mode 9.4 or later
- aider.el
(use-package ob-aider
:ensure t)
- Clone this repository:
git clone https://github.com/localredhead/ob-aider.el.git
- Add the following to your Emacs configuration:
(add-to-list 'load-path "/path/to/ob-aider") (require 'ob-aider) ;; Enable aider in org-babel (with-eval-after-load 'org (org-babel-do-load-languages 'org-babel-load-languages (append org-babel-load-languages '((aider . t)))))
(use-package ob-aider
:straight (:host github :repo "levistrope/ob-aider.el")
:after org
:config
(org-babel-do-load-languages
'org-babel-load-languages
(append org-babel-load-languages
'((aider . t)))))
In your ~/.doom.d/packages.el
file, add:
(package! ob-aider
:recipe (:host github :repo "levistrope/ob-aider.el"))
In your ~/.doom.d/config.el
file, add:
(use-package! ob-aider
:after org
:config
(add-to-list 'org-babel-load-languages '(aider . t))
(org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages))
Then run doom sync
to install the package.
- Start an Aider session using
M-x aider-start
or your preferred method. - In your Org document, create an Aider source block:
Please refactor this function to be more efficient...
- Execute the block with
C-c C-c
to send the prompt to the active Aider session. - The response from Aider will be captured and displayed as the result of the source block.
For long-running prompts, you can use asynchronous execution:
Your complex prompt here...
You can customize the behavior of ob-aider
through the following variables:
;; Set timeout for waiting for Aider responses (in seconds)
(setq ob-aider-timeout 60)
;; Set delay between checks for Aider response completion
(setq ob-aider-response-delay 0.1)
;; Set default async behavior
(setq ob-aider-default-async nil)
- No active Aider conversation buffer found: Make sure you have started an Aider session before executing an Aider source block.
- Response timeout: If Aider takes longer than expected to respond, you can increase the
ob-aider-timeout
value.
One of the most powerful workflows enabled by ob-aider
is the combination with GPTel or similar Emacs LLM interfaces. This creates a seamless AI-assisted development environment:
The combination of GPTel and ob-aider creates a synergistic workflow where:
- GPTel helps you craft and refine prompts within your Org document
- ob-aider sends those refined prompts to your Aider session for code generation and modification
- Org mode documents the entire process in a single, executable document
This workflow allows you to leverage different AI tools for their respective strengths - using a general-purpose LLM to help formulate effective prompts for the code-focused Aider tool. The entire conversation history, thought process, and resulting code changes are preserved in a single Org document that can be shared, revisited, or modified later.
This integration transforms your Org documents into interactive AI-assisted development environments, where you can seamlessly move between brainstorming, prompt refinement, code generation, and documentation - all while maintaining a complete record of your development process.
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
This project would not be possible without the following amazing tools:
- GPTel - An elegant and efficient Emacs interface to OpenAI’s GPT and other LLMs
- Aider.el - Emacs interface for Aider, the AI pair programming tool
- Org Mode - For its incredible Babel framework that makes this integration possible
Special thanks to the developers of these tools for their contributions to the Emacs ecosystem and for making AI-assisted development more accessible within our favorite editor.
- aider.el for the Aider Emacs integration
- Org Babel for the literate programming framework
- This project was 100% developed with the assistance of Claude 3 Opus and Claude 3 Sonnet, demonstrating the potential of AI-assisted development
- The entire project was developed using GPTel to write prompts and Aider.el, showcasing the power of AI pair programming