Generated banner for PRO-LONG
Generated logo for PRO-LONG

PRO-LONG

Memory framework

Created by Alexis Fox

Published in alexisfox7/PRO-LONG. Publisher page

465 GitHub stars

What it is

Append-only, searchable memory for long coding-agent sessions.
— the description by Alexis Fox

AutoGineer overview, from the brain’s own files

PRO-LONG provides a persistent, local memory layer for coding agents by maintaining a comprehensive, append-only interaction log. By offloading session history outside the agent's immediate context window, it enables agents to perform long-horizon tasks by programmatically searching their own past actions, observations, and outcomes. The system integrates directly with various coding agents via hooks and extensions, allowing for seamless retrieval of historical data across sessions or after context compaction.

How it works

Memory model: Not stated

AutoGineer overview, from the brain’s own files

PRO-LONG functions by recording every event in a session to a JSONL log file stored in a local .prolong directory. It installs retrieval skills that allow the agent to query this log using standard tools like grep or Python. The framework includes CLI commands to initialize projects, configure supported clients, and manage the memory state, ensuring that historical context remains accessible to the agent even when the primary context window is cleared.

Folders
FolderRoleFiles
srcsource-code19
templatestemplates5
teststests1
researchfolder213

Requirements

Runtimes: Node.js >=20

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)

Set it up

  1. Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/alexisfox7/PRO-LONG/blob/d87233c9128d7b9dc5d780e83b4aeb8377dd8805/README.md#quick-start
  2. Created by Alexis Fox. Published in alexisfox7/PRO-LONG. Licence: MIT License.

Usage

AutoGineer overview, from the brain’s own files

  • Initialize memory in a project directory
  • Integrate with supported coding agents
  • Search historical session logs
  • Manage and purge memory logs
“Search the memory log for the last time I modified the authentication module.”
The agent uses the installed retrieval skill to query the .prolong/log.jsonl file and returns the specific event details from the past session.
“What was the outcome of the previous attempt to fix the build error?”
The agent searches the append-only log for relevant error-handling actions and provides a summary of the previous attempt's results.

Documentation by Alexis Fox

PRO-LONG

Programmatic memory for long-horizon agents! PRO-LONG is a minimal memory addition for LLM agents on long-horizon tasks that keeps a complete interaction log outside the accessed context window; the agent searches this log programmatically when it needs earlier history. Our harness achieves 97.4% best@2 on ARC-AGI-3 at a total cost of $1,750.

Coding Agent Memory · Research · Paper

Image: PRO-LONG context framework

Figure 1 from our paper.

Coding Agent Memory Tool

We find that PRO-LONG works beyond ARC-AGI-3 and NetHack, and can aid standard coding agent usage. Add local, persistent, and searchable memory (i.e., PRO-LONG) to Codex, Claude Code, OpenCode, or pi. PRO-LONG records session events in .prolong/log.jsonl and installs a retrieval skill so the agent can recover relevant history after compaction or across sessions.

Quick start
git clone https://github.com/alexisfox7/PRO-LONG.git
cd PRO-LONG
npm ci && npm run build && npm link

cd /path/to/your/project
prolong init

Requires Node.js 20 or later. Then use your coding agent normally; it searches the log with tools such as rg, jq, or Python when prior context is needed.

Commands
CommandPurpose
prolong initDetect supported clients and configure them for this project.
prolong statusCheck the installation; add --json for machine-readable output.
prolong uninstallRemove integrations and preserve the log.
prolong uninstall --purgeRemove integrations and delete the recorded history.

To choose clients explicitly:

prolong init --client codex,claude-code,opencode,pi
Client support
ClientProject integration
Codex.codex/hooks.json
Claude Code.claude/settings.json
OpenCode.opencode/plugins/prolong.ts
pi.pi/extensions/prolong.ts

Hooks and extensions run with your user permissions. Review the integration and accept the client's project or hook trust prompt before use.

<details> <summary>Installed files and privacy</summary>

  • .prolong/: recording code, installation record, and history log.

  • .agents/skills/prolong/: instructions for searching the log.

  • AGENTS.md: a note pointing to the log; Claude Code also receives CLAUDE.md.

  • Client files listed above and a .prolong/ entry in .gitignore.

The log is local and gitignored by default. It can contain prompts, tool inputs, outputs, and secrets that appeared in a session. Only enable it in projects where you can keep this history on disk.

</details>

Research

Our research harness records every observation, action, and outcome in one log. The agent reads and searches log.txt using its coding tools. We use no subagents or specialized retrieval mechanisms, and our core prompt is about 30 lines.

Our paper evaluates this approach on ARC-AGI-3 and NetHack:

  • ARC-AGI-3: an average +18.0 percentage points over matched coding agents without the log, across GPT-5.5, Opus 4.6, and Fable 5 at 500 actions per game.

  • Extended action budget: 97.4% best@2 with Fable 5 at 2,000 actions per game, for a total cost of $1,750.

  • NetHack: up to 2.2× higher mean best-of-five progression than the no-log baseline when memory is retained across episodes.

Image: ARC-AGI-3 scores and billed-token efficiency across coding agents and harnesses

Figure 2 from our paper. Filled bars show pass@1; outlined bars show best@2. Comparisons use 500 actions per game, except the 97.4% diamond at 2,000 actions. See the paper for scoring and token-accounting details.

See research results or run the ARC-AGI-3 harness.

Read the paper · Citation · MIT license

246 files · 243 not served here

Advantages

  • Enables long-horizon task performance by maintaining context outside the limited LLM window. evidence: README.md
  • Provides a simple, programmatic search interface for agents to recover past interactions. evidence: README.md

Limitations

  • The log may store sensitive information such as prompts, tool outputs, and secrets locally. evidence: README.md
  • Requires manual review of integration hooks and trust prompts before enabling in projects. evidence: README.md

Security

Risk level: No risk found

This brain runs

Agent instructions that run or fetch something (25)

  • research/arc-agi-3/release_logs/fable5/ar25/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/bp35/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/cd82/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/cn04/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/dc22/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/ft09/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/g50t/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/ka59/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/lf52/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/lp85/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/ls20/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/m0r0/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/r11l/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/re86/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/s5i5/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/sb26/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/sc25/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/sk48/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/sp80/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/su15/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/tn36/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/tr87/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/tu93/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/vc33/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.
  • research/arc-agi-3/release_logs/fable5/wa30/rep1/workspace/CLAUDE.md: **Write `/workspace/actions.json`** with a JSON object `{"actions": ["ACTION6(30,40)", "ACTION1", "RESET"]}` — a list of 1–20 actions to execute in order.

Attribution and licence

Created by
Alexis Fox
Declared authors
  • Alexis Fox (declared in CITATION.cff)
Publisher
Alexis Fox (Community)
Source
alexisfox7/PRO-LONG · commit d87233c
Licence
MIT License (files served here)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Alexis Fox.

Install from source

243 of its files are not served here, so there is no ZIP. alexisfox7/PRO-LONG at d87233c