Aller au contenu principal

Project memory and usage

Share durable facts across your project. Keep each worker's conversation and provider cache with the provider that owns it.

Early access

These features have been in every SpecWithCode build since 0.2.0. SpecWithCode is free for every developer and team (what stays free) and in early access (download for macOS, Windows or Linux); each machine that runs work needs the current version installed. See SpecWithCode projects for availability.

Kind of contextWhat belongs there
Project goal and instructionsThe outcome, standing rules and constraints.
Project memoryDecisions, useful facts, pitfalls and links to evidence.
Project planAcceptance criteria, assignments, progress and verification results.
Native thread historyThe worker's messages, tool calls and provider-managed compaction.
Provider cacheTemporary reuse of processed input, when the provider reports it.

Keep memory small and useful​

Open Settings → Memory. Add a Markdown file, edit its contents and save. Use MEMORY.md as a short index, with topic files such as architecture.md for details. Include the source and date for facts that can change. Store a link to a test receipt rather than pasting an entire log into every thread.

Files are scoped to this SpecWithCode project. Saving checks the revision you edited; a conflicting change is rejected so another writer's work is preserved. Read the current version and reconcile the changes before retrying. The same revision check protects deletion.

The current limits are 64 KiB per memory file and 256 KiB per project. Memory names must be plain Markdown filenames, not directory paths. Context sent to a provider is bounded, so a large memory collection does not mean every file is loaded into every turn.

Memory records context, not permission or proof. A note saying “approved” does not answer a pending tool approval. A note saying “finished” does not verify a task.

Native conversations and caching​

Claude Code and Codex keep independent native session histories. Compaction summarizes a conversation to fit its context window; project memory preserves selected facts outside that conversation. Changing providers does not transfer opaque conversation state, native cache entries or account credentials. Carry a concise brief and evidence into a new thread when changing tools.

Reuse a relevant thread for related work, keep standing instructions concise and avoid copying large logs into every request. These practices reduce repeated context. Cache reuse still depends on the native provider, model and prompt. SpecWithCode does not promise cache hits or a percentage saving. Claude Code documents matching prefixes and invalidation in its prompt caching guide.

Read the usage breakdown​

Click Usage in the project header. The page shows recorded tokens by model, the coordinator's share and clickable thread rows. A model change does not reattribute old turns to the thread's current model.

Input includes cache reads and cache writes. Those columns describe subsets of input; adding them again would double-count usage. Output is separate. The cache read ratio is weighted by input tokens and shown only when the required reporting is complete.

Not reported means the provider or stored turn did not supply enough information. Incomplete-usage notices identify missing threads or turns; totals cover known data. Separate subagent usage is excluded from the displayed main-agent totals. An empty synthetic thread has no usage evidence, rather than proof that execution was free.

Estimated equivalent API cost is an estimate based on available per-turn usage and pricing information. It is not your subscription bill, money paid or remaining plan allowance. Unknown estimates stay unknown. Check the provider's own billing and quota controls for those quantities.

Return to SpecWithCode projects or continue with plans and routines.

Video walkthroughs​

Keep working when a provider runs out​

Length 1:39Captions

Recorded headlessly in one take on a private SpecWithCode 1.0.43 server with a disposable home and a sample repo, 18 October 2026. A real usage limit cannot be forced, so the limit is simulated with the app's documented test switch, STUDIO_SIMULATE_USAGE_LIMIT=claudeAgent, which makes every Claude Code turn stop with a limit that resets in one hour. T-01 was a real Claude Code turn, started off camera through the coordinator before the switch was turned on. T-02 was a real Codex turn, and the handoff, banner and ledger are the app's own. Both agents were signed in with the author's accounts through short-lived tokens copied into that home. Full access was chosen for the demo only. Nothing in Codex's turn is sped up; two still screens (the limit banner and the open plan list) play slower to fit the narration, and nothing moves in them. After the switch the composer's last frame is held for about 2 s, marked Still frame, and the walk to Project settings, Usage limits plays at 3×, marked Sped up 3×. The ledger beat is a captured terminal run of `specweave task list` and `git log --oneline -3`. Its first line, '0001-personal-greeting — agent cli@demo', is left out: cli@demo is the capture shell's own identity, not a third agent. Known issues in 1.0.43, shown in the video: the model picker returns to Claude Code after the automatic switch (the docs say it follows the switch), so the next message bounces back to Claude Code and hands off again; and the row 'Usage limit resolved — chat continued' does not mean Claude Code's limit has reset. Narration is an AI voice (ElevenLabs, the author's cloned voice); captions are timed from the voice service's character timestamps. Open the guide with steps and transcript

Shared facts, honest usage​

Length 1:06Captions

Actual application footage with synthetic projects, recorded headlessly on 9 October 2026. AI narration in Anton’s voice, with captions. Open the guide with steps and transcript

Narrated walkthrough with English captions and synthetic project data. On a phone, use fullscreen or the guide page for the dense desktop interface.

Steps and full transcript: Shared facts, honest usage