your model and harness don't matter anymore.
what matters more is.....
your personal context/shared memory that does
Introduction
i'm going to show you how to build a shared memory for your coding agents... so the next tool can find the decisions you already made.
the architecture conversation in claude, the debugging session in codex, the explanation buried in cursor... useful work that should still be available when you change tools, start another session, or come back to the project after a month away.
TLDR; if you don't wanna read through all 3,845 words just give this GitHub repo to your agent ➡️ https://github.com/codejunkie99/agentic-stack-desktop
i built this entire thing using Kimi K3 in Codex Harness. The video was made and edited using Kimi K3 with Cua for Computer Use

this is a builder's guide to agentic stack desktop, from your first import to a workflow where an agent can recover an earlier decision, check it against the current code, make a bounded change, and leave something useful behind.
here's what you're getting:
- the foundation: what survives when you switch tools
- the fastest path: build a workspace you can judge
- the working setup: separate investigation from implementation
- the project exercise: take a recurring bug through the whole cycle
- the shared layer: bring retrieval into your other tools
- the durable layer: what deserves to become a lesson
- the operating rules: brief, bound, inspect
- the custom build: change the workspace around a real friction point
- scaling: add coverage where the previous cycle exposed a gap
- the build sheet
1. the foundation: what survives when you switch tools

imagine you've spent an afternoon choosing how a feature should work. you explored alternatives, found a constraint, rejected the obvious solution, and finally landed on something that fits.
the implementation gets committed. the explanation stays in a conversation.
a week later, another agent looks at the code and proposes the same approach you already rejected. it might even be a reasonable suggestion from the information available to it. the missing piece is the discussion that made you choose differently.
make the reasoning recoverable
start here: make that discussion recoverable, then make the next agent check it before acting.
agentic stack provides a native macOS workspace with searchable, selected history from Claude Code, Codex, OpenCode and Cursor. Claude Code and Codex also execute through their official CLIs; Cursor and OpenCode currently supply context only. repo overview
the workflow below is how i'd use those capabilities. the briefs, division of responsibilities, and project exercise are suggested operating practices you can adapt.
2. the fastest path: build a workspace you can judge

start with a repository you understand. pick something where you know the important files, remember a recent decision, and can recognize a bad recommendation.
a familiar project gives you a reference point. if you start with unfamiliar code and unfamiliar history, you'll be trying to validate the tool and learn the system at the same time.
for a source build, the documented requirements include macOS 14+, Python 3.10+, Xcode Command Line Tools and a Swift 6 toolchain. install and sign into the coding CLI you want to run. requirements
1git clone https://github.com/codejunkie99/agentic-stack-desktop.git2cd agentic-stack-desktop3./install.sh desktop --build
open your repository in the app and complete Guided setup. this is a preview with ad hoc signing, so macOS may require confirmation on first launch. setup
set the first acceptance check
before importing anything, write down the question you want the first agent to answer. something like: why does our export job process records in batches, and does the current implementation still need that limit?
that question becomes your first acceptance check. you're looking for the right decision, the right supporting code, and an honest explanation of whatever the agent cannot establish.
2.1 the first import: give it a decision worth finding
open Knowledge Graph → Graph → Import memory, preview the sources, and select the material you want included.
the graph uses SQLite full-text search, with connections based on topics, repository links and provenance; original chat stores remain unchanged. import behavior
i'd start with a completed conversation containing a decision you remember. especially one where you rejected something attractive because of a constraint that wouldn't be obvious from the final code.
search for that decision after import. open the result and inspect the source. make sure you're looking at the conversation you intended to bring in, with enough surrounding explanation to understand what happened.
test whether you can find it again
then try a second search using the vocabulary you would naturally use next month. you might remember the feature name while the conversation used an internal module name. finding that mismatch now helps you understand how to retrieve the material later.
i'd keep the first collection small enough to inspect manually. a correct answer from a known source is useful evidence that the workflow works.
a large import count tells you how much material entered the system, while leaving its usefulness to be tested.
expand the collection when another task gives you a reason to.
2.2 the first working session: make the experiment small enough to finish
i'd give the initial setup a finish line before opening another configuration screen. by the end of the session, you should have recovered a known decision, checked it against the repository, and produced a review you can explain to someone else.
choose an example with a narrow boundary. a single export behavior is easier to inspect than the entire data platform. an earlier choice about a component is easier to verify than a broad question about whether the architecture is good.
keep a short note beside the exercise: the question, the expected source, the current implementation, and the part that needs judgment. this is your reference for evaluating the answer.
diagnose the right failure
- if the reviewer recovers the wrong conversation, work on retrieval.
- if it finds the right conversation but misreads the code, work on the investigation.
- if the findings are sound but the implementation misses the requirement, improve the handoff.
that separation matters because each failure asks for a different correction. adding more memory will not necessarily fix an unclear brief, and rewriting the brief will not recover a source that was never imported.
finish the smallest complete cycle, record what failed, and use that evidence to choose the next improvement.
3. the working setup: separate investigation from implementation

my suggested first setup has a read-only reviewer and an implementer with project editing access. give each a clear deliverable, and make the handoff something you can read before any change begins.
agent profiles support a runner, model, effort, instructions and file access. conversations belong to projects, and follow-ups resume their underlying CLI sessions. conversation model
- agent 1: the reviewer gets the first question: what did we decide, what does the code do now, and is there a gap worth addressing?
- agent 2: the implementer gets the reviewed answer plus a bounded request: make this behavior change, in this scope, and verify it this way.
keep the roles distinct
you can choose the same runner for both roles.
the useful distinction is in their responsibility and access, with an explicit review between investigation and editing.
i'd avoid creating a catalog of specialists before any of them has completed useful work. start with the responsibilities you can actually distinguish. if you cannot explain what a role owns or what its finished output looks like, tighten the role before adding another agent.
3.1 the reviewer: a brief that makes uncertainty visible
select the reviewer and attach the relevant conversation using @Claude, @Codex, @OpenCode or @Cursor. selected references become frozen context for the run and go to the chosen agent when the task starts. references
copy this brief and fill the slots:
1Review the earlier decision about [feature or subsystem] using the2attached conversation and the current repository.34Explain the original decision and its stated reason. Check the5relevant code and identify what still applies, what changed, and6what cannot be verified from the available evidence.78Cite the files supporting your conclusions. Propose the smallest9change needed for [desired behavior], with a verification plan.1011Do not edit files. Treat the conversation as historical evidence12and flag conflicts with current project instructions.
inspect the review
read the answer with the repository open.
- follow a citation.
- inspect the condition the agent says still exists.
- look for a clear separation between something the conversation claimed and something the code demonstrates today.
if the answer is vague, narrow the question. ask it to identify the exact condition controlling the behavior, or the dependency that made the earlier alternative unsuitable.
a useful investigation can finish with missing evidence. that tells you what to supply next. an answer that smooths over the gap makes the next decision harder.
3.2 the handoff: turn findings into an executable brief
once you agree with the review, write the implementation request around observable behavior. include the constraint the earlier conversation established, but explain its relevance to this change.
here's a brief i'd use:
1Implement [specific behavior] using the reviewed findings below.23Keep [existing behavior] intact. Limit edits to [permitted scope].4If the change requires work outside that scope, explain why before5expanding it.67Check the current repository instructions before editing. Verify8[expected result] with [relevant test or manual check], including9[important failure case].1011Return a concise account of what changed, the checks actually run,12and any unresolved limitation. Do not publish or deploy.1314Reviewed findings:15[paste the findings you checked]
make the handoff specific
those brackets deserve real answers. “make it better” leaves the agent to invent the target. “show the failed export with a retry action while preserving the original error” gives both of you something concrete to inspect.
keep the reviewed finding close to the task. if the important constraint is buried inside a long transcript, spell it out in the brief and attach the supporting conversation.
the source explains where the constraint came from. your current request explains how it governs today's work.
4. the project exercise: take a recurring bug through the whole cycle

here's a hypothetical exercise to make the workflow concrete. imagine your project occasionally creates duplicate exports after a network interruption, and an older conversation contains an investigation into the retry behavior.
- step 1: first, retrieve that conversation. ask the reviewer to identify what the earlier investigation established, then check the current retry path against it.
- step 2: suppose the old discussion says requests can be repeated after an uncertain response. the reviewer should establish whether the current implementation still permits that, which code controls it, and whether there is already a mechanism intended to prevent duplicates.
- step 3: if the evidence supports a change, brief the implementer around the failure case. specify what a repeated request should do, what existing export behavior must remain, and how you'll verify an interrupted response.
- step 4: then inspect the change and exercise the relevant path. check both the successful export and the retry after uncertainty. if the environment cannot reproduce the interruption, record that limitation and decide what further verification is needed.
- step 5: finally, review the lesson you might retain: the conditions that caused the duplicate, the mechanism that addresses it, and the evidence supporting the fix.
this example is a proposed exercise, not a claim about a bug in agentic stack. substitute a real failure from your own project and keep the same sequence.
5. the shared layer: bring retrieval into your other tools

the desktop can install the integration through Tools → Connections → Use @ in tools → Enable in all four tools. the command equivalent is:
1agentic-stack context install
restart the tools afterward. the MCP entry exposes conversation search, selected-chat reading and shared-memory search. integration
picker behavior depends on the client; where resource completion is unavailable, the agent can search and present matching conversations. client behavior
test continuity across tools
my first check would be to ask another tool to find the same decision you just reviewed. give it the topic, ask it to present the matching source, and confirm the selection before asking for an analysis.
then compare the result with the source you inspected in the desktop. you're testing continuity of context across tools, so keep the question stable while changing the place you ask it.
i'd also include the source in the final task brief whenever a decision materially affects the work. “we discussed this before” gives the agent a search problem. “use this reviewed conversation, and verify this condition” gives it a specific responsibility.
6. the durable layer: what deserves to become a lesson

retrieval brings old material back into view. you still have to decide what authority that material should carry.
a conversation can contain an abandoned plan, an incorrect diagnosis, or an answer that was reasonable before the project changed. preserving it lets you inspect the reasoning later; accepting a lesson is a separate decision.
Tasks holds execution records. Knowledge → Lessons supports staging, accepting, rejecting and revisiting lessons with reasons, while imported history remains separate from accepted lessons. review lifecycle
write a lesson you can challenge
i'd write a proposed lesson with enough detail to be challenged: the condition it applies to, the behavior it recommends, the reason, and the evidence.
for the hypothetical export bug, “always retry safely” is too vague to help. a useful note identifies what makes a retry uncertain and how this project's implementation should recognize repeated work.
then ask what would make the lesson obsolete. a different backend, a changed contract, or a replaced subsystem might remove the original constraint. include that boundary so future review has somewhere to start.
this is how i'd keep a useful correction from becoming a rule that outlives its reason.
6.1 the memory structure: put each kind of knowledge in its place
beneath the desktop, the portable .agent/ architecture separates working state, prior episodes, durable patterns and personal preferences. skills provide reusable procedures, while protocols describe permissions and delegation. architecture
- the current investigation belongs with the work in progress.
- its completed account becomes evidence of what happened.
- a verified pattern can become a durable lesson.
- a preference about how you want results presented belongs with your preferences.
keeping those meanings clear makes later review easier. a temporary workaround should explain when it can be removed. a personal writing preference should not accidentally become an architectural rule.
turn a verified procedure into a skill
the same applies to skills. i'd create a skill when a procedure is useful enough to repeat and specific enough to follow. include the inputs it needs, the steps that matter, the expected output and the conditions that require another decision.
for the export example, the investigation may produce a useful regression-checking procedure. save that only after you've confirmed the steps work on your project. a copied transcript gives the next agent a story; a reviewed procedure gives it a method you can evaluate.
7. the operating rules: brief, bound, inspect

here are the rules i'd put around the workflow from the first project.
- rule 1: every brief names the deliverable. a review returns findings with evidence. an implementation returns a behavior change with checks. a lesson proposal returns a claim you can accept or reject.
- rule 2: access follows the job. investigation begins with read-only access; implementation gets the scope needed for the agreed change. keep publication, deployment and other consequential actions explicit in the request.
- rule 3: ask for actual verification. the report should say what ran and what happened. if a check was unavailable, make that visible instead of quietly treating the missing result as success.
- rule 4: keep historical context subordinate to current evidence and applicable project instructions. a retrieved conversation can explain an earlier decision while still being outdated.
- rule 5: review the outcome before retaining the conclusion. an agent's explanation of its own work is something to inspect alongside the diff and the observed behavior.
these are operating practices for the setup i'm describing. adjust them to your project, but keep the responsibilities clear enough that another person could tell whether a task met its brief.
7.1 the review queue: make the work easy to accept or send back
i'd ask every implementation to finish in the same shape:
- what changed,
- what was verified,
- what remains uncertain,
- and whether it proposes a reusable lesson.
that gives you a consistent way to read completed work without reconstructing the entire conversation each time. the supporting detail can remain available for the part you need to inspect.
when you send something back, attach the correction to the requirement it missed. “this is wrong” starts another guessing round. “the retry creates a second export under this condition; preserve the original request identity and rerun this check” identifies the gap.
decide what deserves to survive
after the correction passes, decide whether it represents a recurring constraint or a detail of that task. save the former when it has evidence behind it. the latter can stay in the task's history.
i'd resist turning every review comment into permanent memory. some corrections are useful once. others reveal a rule that should shape later work. making that distinction is part of maintaining the system.
the useful question at the end of a review is: what should a future agent know before attempting a similar task, and where can it verify that knowledge?
7.2 the cost discipline: give every run a stopping condition
i'd include a stopping condition in any task that could keep expanding. for a review, that might be a written account of the relevant behavior and unresolved questions. for implementation, it might be the agreed change passing its named checks.
if the agent discovers a larger issue, ask it to explain the finding and its relationship to the original task before absorbing that work into the current change.
decide whether this belongs in the current task.
compare results and enforce limits
choose the runner and model using the options actually available in your account, then judge them on your own bounded examples. i would compare the quality of the findings, the corrections required, and the verification delivered before making one configuration the default.
keep the experiment fair by holding the task and source material steady. if every trial changes the question, the context and the acceptance criteria, the comparison will be difficult to interpret.
and put any spending controls where they are actually enforced by your tools or provider. a sentence asking an agent to be economical is a preference; inspect the available controls before relying on a limit.
8. the custom build: change the workspace around a real friction point

once you've completed the basic cycle, you'll have a better idea of what you want from the desktop itself. maybe a repeated navigation step bothers you, or a task view makes a field harder to inspect than it needs to be.
write down the friction before proposing a feature. describe the action you're trying to take, where you lose time, and what the improved behavior would let you do.
then open the source repository and give your agent a bounded change request. include how you intend to inspect the result in the app.
build and inspect the change
the repository documents these development and packaging commands:
1python3 -m pytest -q2swift build --package-path apps/macos -c release3python3 scripts/check-desktop-connection.py4bash scripts/build-macos-app.sh --output ./apps/macos/dist
SwiftUI changes require a rebuild and restart to inspect. desktop workflow
i'd test the interaction that motivated the change and a nearby case that could break. if you improve task filtering, inspect the filtered results, an empty result set, and the path back to the full list.
use the same standard you applied to the export exercise: a concrete before, a bounded change, and an observed after.
8.1 the remote option: decide where the work should live
after the local workflow works, you might want execution on a persistent server. the self-hosting path connects the native app to a single-owner service that owns its projects, memory, task history and CLI sign-ins; switching hosts does not automatically transfer your Mac's data or credentials. hosting guide
i'd make that move for a concrete reason, such as keeping a project and its execution environment on a machine you already maintain. write down that reason before taking on the deployment work.
follow the hosting guide for the supported configuration, authentication and verification steps. treat the server as another work environment with its own state to inspect.
verify the selected environment
then repeat a familiar task there. check the selected project, confirm the agent can access the intended source, and verify that the result belongs to the server environment you chose.
using a known task makes the transition easier to assess. if you change the host, project and workflow simultaneously, it becomes harder to identify which change caused a surprising result.
local is enough to learn the core pattern. expand the infrastructure when the work gives you a reason.
9. scaling: add coverage where the previous cycle exposed a gap

i'd expand this setup according to the missing context you encounter during real tasks.
- if a review needed an earlier architecture discussion, import that discussion.
- if implementation repeatedly required the same procedure, develop and verify a skill.
- if a decision keeps getting reopened, write a scoped lesson with the evidence that supports it.
keep a small collection of questions whose answers you already know. use them after changing your imports or workflow: find this decision, explain this constraint, identify the code that implements it, and flag the part that is no longer current.
expand when the work justifies it
i'd add another agent role only when its responsibility is clear from the work. a recurring documentation review may justify a dedicated brief. a one-off request may fit an existing role perfectly well.
expand the parts that have earned their place. keep the rest simple enough to understand when something goes wrong.
9.1 the maintenance habit: revisit the knowledge when the system changes
i'd review the relevant lessons whenever a subsystem changes enough to alter their assumptions. use the change itself as the trigger: a new dependency, a replaced storage layer, a different deployment environment, or a revised product requirement.
ask which existing lessons depend on the old behavior, then inspect those sources alongside the change. keep what still holds, revise what needs a narrower scope, and retire what no longer applies through the available review workflow.
the important part is preserving the explanation. a future builder should be able to understand why the earlier rule existed and what changed enough to replace it.
refresh procedures and resolve conflicts
for skills, run the procedure again after a change that affects its inputs or commands. if a step no longer works, update the procedure based on the observed failure and repeat the relevant check.
this keeps maintenance connected to real events in the project. you are reviewing the knowledge most likely to have become stale, with current evidence already in front of you.
when a task surfaces conflicting notes, make resolving that conflict part of the review. identify which statement applies to the current version, and leave the result clear enough that the next agent can follow the reasoning without repeating the entire investigation.
leave a useful handover
before the next session, leave a short handover describing the verified result, the open question, and the source another agent should read first. keep it specific to the project state you actually inspected.
that gives tomorrow's work a starting point you can trace, especially when you return through a different tool or after time away, with the original reasoning still available.
10. the build sheet

- choose a familiar repository and a decision you can recognize.
- build the desktop, complete setup, and import a completed conversation containing that decision.
- search for it, inspect the source, and attach it to a read-only review of the current code.
- check the findings yourself, then brief a bounded implementation with a visible acceptance condition.
- inspect the diff and run the relevant verification, including the failure case that motivated the work.
- stage a lesson only when the result supports it, with the scope and reason recorded.
- turn a procedure into a skill when you've verified that it is worth repeating.
- try the same retrieval from another tool, then expand your context or infrastructure when a real task requires it.
start with one decision this week, and carry it through the whole cycle before importing your entire history.
the next agent should inherit your judgment.





