Skip to content

Memory Banks

A Memory Bank is an isolated Hindsight namespace. Banks are the main boundary that prevents unrelated memory from mixing.

A Project Bank is selected for the current repository. It stores repository-specific memory such as:

  • architecture decisions
  • bugs and fixes
  • project conventions
  • tools and libraries
  • import history
  • repo-local preferences

Project recall is scoped with repository tags so unrelated project memories do not leak in. In Git worktrees, Pi Hindsight resolves the main Git worktree root so linked worktrees of the same repository share the same Project Bank.

A User Bank is an optional cross-project bank for durable user-level memory such as:

  • stable preferences
  • recurring workflows
  • coding habits
  • assistant collaboration style

Guided setup configures the User Bank once in global Pi config for profiles that use user memory. Repository config then chooses whether the current project participates in user memory.

Automatic User Bank writes are disabled unless a setup profile or routing mode intentionally enables them. Use explicit retain when you want to write user memory manually.

Older config, tool aliases, and some internal fields may still say global. In user-facing docs, User Bank is the same cross-project memory concept. The global alias remains supported for compatibility.

A Bank Alias is a stable name that resolves to a real Hindsight bank ID:

  • project resolves to the selected Project Bank.
  • global resolves to the configured User Bank.

Aliases are useful in tools and documentation when the exact bank ID is not important.

Use tags to filter and isolate memory. Use metadata for provenance.

Examples:

  • source:pi
  • repo:pi-hindsight
  • session:<session-id>
  • profile:coding

Do not rely on metadata for filtering behavior when scope isolation matters.