Session Memory Builder
Build structured XML session context for AI agents. Maintain a local ledger of project architecture, milestones, and active tasks. All data stored locally in your browser — zero database cost, 100% privacy.
📋 Project Metadata
🗂️ Architecture Map (Key Files)
No files added yet. Click "Add File" to start building your architecture map.
✅ Accomplished Milestones
No milestones recorded yet.
🎯 Active Task Instructions
No active tasks defined yet.
Related Tools
Collects a project's metadata, important files, finished milestones and open tasks and assembles them into one XML session-context document for an AI coding agent. Fields are saved into this browser as you type, and pressing Generate builds the XML in the page and offers it as a copyable block or a .xml download, with no request leaving the tab.
How to use it
- Fill in the project name, tech stack, repository URL and a short description. Every keystroke is stored in localStorage.
- Use + Add File to list the files an agent should know about, each with a one-line purpose and the date it last changed.
- Add milestones and tick Completed for the ones that actually shipped, because only ticked rows reach the XML.
- Add the open work with a status, a priority and an optional assignee, then press Generate XML Context and either Copy XML or Download .xml.
Worked example
name=TrendAgent; 1 file; 1 milestone; 1 taskbecomes<?xml version="1.0" encoding="UTF-8"?>
<session_context generated="2026-09-27T20:15:32.808Z" version="1.0">
<project_meta>
<name>TrendAgent</name>
<description>Trend tracking dashboard</description>
<tech_stack>Next.js, TypeScript</tech_stack>
<repo_url>https://github.com/acme/trendagent</repo_url>
</project_meta>
<architecture_map>
<files>
<file>
<path>src/lib/parse.ts</path>
<purpose>Parses upstream CSV feeds</purpose>
<last_modified>2026-09-20</last_modified>
</file>
</files>
</architecture_map>
<accomplished_milestones>
<milestone id="m1758400000000" date="2026-09-20">
<title>CSV parser shipped</title>
<description>Handles quoted fields and CRLF</description>
</milestone>
</accomplished_milestones>
<active_task_instructions>
<task id="t1758400100000" status="in-progress" priority="high" assignee="dev-2">
<title>Add retry to feed fetch</title>
<description>Exponential backoff, max 3 attempts</description>
</task>
</active_task_instructions>
</session_context>The form held the project name TrendAgent, the file src/lib/parse.ts with its purpose, one ticked milestone and one in-progress task. The generated attribute is the timestamp of the Generate click, 20:15:32 on 27 September 2026 in this run, and the ids are minted from the clock as rows are added, so your own file carries different values.
name=Ledger; 1 milestone left untickedbecomes<?xml version="1.0" encoding="UTF-8"?>
<session_context generated="2026-09-27T21:17:48.122Z" version="1.0">
<project_meta>
<name>Ledger</name>
<description></description>
<tech_stack></tech_stack>
<repo_url></repo_url>
</project_meta>
<architecture_map>
<files>
</files>
</architecture_map>
<accomplished_milestones>
</accomplished_milestones>
<active_task_instructions>
</active_task_instructions>
</session_context>One milestone was typed in but left unticked, so the accomplished_milestones block is empty. Empty form fields are still written as empty tags rather than being skipped.
When to use it
- Opening a fresh agent session on an existing repository and wanting the architecture summary loaded before any file is touched.
- Freezing a checkpoint of what was finished before a refactor, so a later session can tell which parts were already done.
- Handing work to a second agent or a colleague who needs the file map and the open tasks in a single paste.
What it does not do
- An unticked milestone is dropped from the XML entirely rather than appearing as open work, so the output never shows what is still in progress.
- Values are not properly escaped. The internal helper leaves &, <, > and the double quote untouched and only rewrites an apostrophe: escapeXml('a<b & c"d'e > f') returns a<b & c"d'e > f, so a description containing those characters can produce XML that a strict parser rejects.
- The architecture map is typed by hand. Nothing reads your repository, so the file list is a summary you maintain and it will not notice that a path has moved.
- Rows are kept in this browser's localStorage under one page-specific key. Clearing site data, or opening the page in another browser, starts you from an empty form, and there is no import or export of the form data itself.