an image

Acorn Pal

The Busy Developer's Best Friend

Foreward

I am excited to participate in Backdrop Build v3, a program focused on helping builders go from "idea" to "launch" in just four weeks.

In this post, I'll recap what I've done in the first week of the program, both on the technical side and refining the product idea.

Motivation

LLM-based tools have penetrated my day-to-day workflows:

As helpful as these tools are, there's a lot of room for improvement. My two main pain points are:

These problems were floating around my head when I was invited to join Backdrop Build v3. When I applied, I pitched an idea for a self-managed server application with an emacs client that solved these problems. I'm calling it Acorn Pal.

Acorn Pal

Acorn PAL is a Project-Aware LLM. It is an “AI buddy” that helps developers navigate and understand unfamiliar codebases.

The interface for acorn-pal-emacs will be heavily inspired by magit, and emacs package for interacting with git repositories. Like org-mode, it's one of those packages that make outsides want to join the church of emacs. At the time of this writing, it's the second most popular emacs package, behind only dash, which I have never heard of before today, and which I imagine must be preinstalled in every popular emacs distribution (doom, spacemacs, etc):

Magit is an extremely popular emacs package

Magit adds several commands, buffers, and workflows to emacs. It doesn't just help the git wizards out there -- It also helps you learn. Its interface shows you what commands are available, what the options for those commands are for, and documentation for any command or option is always one keypress away.

magit status buffer
magit log buffer
magit dispatch
magit git pull command
magit git pull configuration

Magit's interface is so great that (by popular demand) they decided to package it separately into a package called transient. Others are invited to use it to build great emacs plugins -- and that's just what I plan to do!

As I was building the acorn-pal-brain backend, I realized that there was a TON of overlap with the needs of this project and the needs of a project I'm building for Mozilla called Memory Cache Hub. The goals of the project are different, but the basic capabilities are extremely similar. A big open question for me will be whether I should keep the two projects separate (which involves a non-trivial amount of duplicate work), or try to combine them in such a way that both acorn-pal-emacs and the Memory Cache Browser Client can use the same backend.

In the meantime, I'm excited to share what I've built out so far...

Acorn Pal Brain is the "server-side" application:

Acorn Pal Emacs is the emacs package that adds various commands to call the brain's APIs and will (soon!) provide dedicated buffers for interacting with the brain.

I'm sorry to say that screenshots will have to wait... But not for long! :wink:

FAQ

Does this work with Vim, VS Code, Sublime Text, Text Mate, etc?

The backend process (acorn-pal-brain) does most of the heavy lifting and is agnostic towards clients that interact with it. But at the moment, I only have plans to build an emacs client.

Why Emacs?

I'm not here for holy wars. Emacs is the editor I like to use, and I want to solve my problems before worrying about others.