Introduction
We'd like to introduce you to Lore, an integrated development tool for managing agent and developer intent and experience.
What is Lore?
Any software application is the sum of thousands of tiny decisions. Many times, those decisions are readily apparent in the final product. But most of the decisions are the "no's" - we won't do it that way, we can't do it this way. These decisions are made by a team of developer's each with their own motivations, style, and preferences.
Lore is a way to track those decisions over the course of your application's and organization's lifetime.
Where Version Control Fails
Modern VCS (version control) tools like Git handle file changes elegantly, but often leave out important context.
There are two main areas where modern VCS solutions conceptually fail -
Survivorship Bias
When a PR is opened, or a commit is made, you are (usually) only seeing the finished set of changes. You don't see
- What planning went into the changes?
- What other files were consulted to design the changes?
- Were there any previous attempts at changes that were abandoned?
Context
In the modern day of AI-centric programming workflows, requiring a model to review file diffs is expensive in token costs. Generally speaking, you want a model to understand how you want code generated. Reviewing diffs or current files requires the model to expend tokens reasoning about style and implementation.
Of course, both of these issues can be resolved by the developer (or agent) writing detailed notes in commits. But this is unoptimal, as it requires
- The messages to actually be written
- The entire logs to be queried / searched when looking for context.
Your Project's Lore
What Lore Tracks
Instead of tracking file changes, Lore attempts to track your project's "story". You can kind of think of this like a quest log -
Developer A opens branch "hotfix/center-main-page-div"
Developer A attempted to center the div
Agent suggests a solution
Developer A determines this is an unoptimized solution
Developer A asks Agent: please recreate TailwindCSS
Agent generates TailwindCSS
Generated code fails
Developer A abandons this attempt and close branch
This isn't how Lore actually works, but you probably get the idea. With traditional version control, you might be able to infer those things from the code and file changes if the commits end up in an merged branch. More often than not, however, this is lost, held only in the developer's memory.
This is unfortunate - this series of steps provides valuable context that developers and coding agents can pull from.
- It shows that the Main Page div has had a bug in the past, and a developer attempted to fix it
- It shows that the solution provided to the developer by the Agent was not acceptable to that developer. In many cases, the developer may explain to the model why it's being rejected.
- It shows that creating a version of TailwindCSS was attempted.
- It showed that a task of that scale failed
- It shows that this path of developer / agent reasoning
- How should we center the div?
- Agent proposes a solution using TailwindCSS
- _Developer rejects an inline solution, opting for an internally developed library
- It shows that ultimately, this line of reasoning failed!
Lore provides tooling to integrate directly with coding agents to track this "quest log" for your project.
What Lore Does
In simple terms, Lore provides a subagent that your coding agent (like Claude or Codex) will use to track these state changes. As you work with your code agent, it will automatically use the lore subagent to condense / summarize key decision points and actions, categorize it, and store it remotely.
We store it remotely for several reasons.
- This experience should be available to all members of your team.
- All decisions and actions should be recorded.
- You shouldn't need to set up a persistent storage solution on your own machine.
Number 2 is the primary reason for storing the data remotely. If this data is version controlled, you only retain the final decisions, not the decisions that led up to it but were discarded.
You can self host, but we provide managed hosting with generous free tiers for individuals and public repos.
So the basic steps are
- You start working on something with a coding agent
- The subagent creates a new
Task. ATaskis almost always associated with a branch. - When the agent carries out an
Action(like generating code, implementing a feature), the subagent - When you make
Decisions, the subagent jots down a few notes about the decision and sends it to yourLibrary - When the task is complete, the subagent updates the state of the
Taskto "complete". - If a branch associated with a
Taskis destroyed, this sets theTaskto abandoned.