memaxdocs
Core Concepts

Memories

The atomic unit of knowledge in Memax. Understand how memories are structured, classified, and stored.

A memory is the atomic unit of knowledge in Memax. It represents a single piece of information — a document, a decision, a code snippet, a URL reference, or any other content worth remembering.

Structure

Every memory has:

FieldDescription
idUnique identifier (e.g., mem_a1b2c3d4)
titleAuto-generated or user-provided title
contentThe raw content (markdown, text, code)
summaryAI-generated summary for quick scanning
categoryClassification (e.g., core, decisions, reference)
tagsUser or AI-assigned labels
boundaryAccess level: private, team, or public
stateProcessing state: active, archived, processing
sourceWhere it came from: cli, web, mcp, sync, hook
source_agentWhich agent pushed it (e.g., claude-code, cursor)

Categories

Memax automatically classifies memories into categories. You can override these during push.

CategoryDescriptionExamples
coreArchitecture, design, system fundamentalsSystem design docs, API specs
decisionsADRs, trade-off discussions, why-we-chose-XArchitecture Decision Records
referenceRunbooks, how-tos, quick-reference materialDeploy guides, API cheatsheets
processWorkflows, procedures, standard operationsCI/CD pipeline docs, review process
dailyEphemeral notes, standups, daily contextDebug sessions, status updates
researchInvestigation results, benchmarks, analysisPerformance reports, tool evaluations

Content types

Memax accepts many content types:

  • Markdown — docs, READMEs, specs (.md, .mdx)
  • Code files — any language, with syntax-aware chunking
  • Plain text — notes, chat logs, meeting transcripts
  • URLs — fetched, summarized, and stored as link references
  • PDFs and images — extracted text, stored with original file reference

Deduplication

Memax deduplicates by content hash. Pushing the same content twice is a no-op — the operation is idempotent. If content changes, a new version is created.

# First push — creates the memory
memax push -f ./ARCHITECTURE.md
# ✓ Saved — "Architecture Overview" (core · private) [48ms]

# Same content — deduplicated
memax push -f ./ARCHITECTURE.md
# ✓ Already exists — "Architecture Overview" (no change)

# Modified content — new version
echo "## Updated section" >> ./ARCHITECTURE.md
memax push -f ./ARCHITECTURE.md
# ✓ Updated — "Architecture Overview" v2 (core · private) [51ms]

Chunking

Large documents are automatically split into semantically coherent chunks for retrieval. The chunking strategy considers:

  • Heading structure — splits at ## and ### boundaries
  • Code blocks — kept intact, never split mid-block
  • Paragraph coherence — avoids splitting mid-thought
  • Size targets — chunks aim for 512–1024 tokens

Each chunk is independently embedded as a vector, so retrieval can return the most relevant section of a large document rather than the entire thing.

Chunking happens automatically during the background processing pipeline. You never need to chunk content manually.

Lifecycle

Push → Processing → Active → (Archived)
  1. Push — content arrives via CLI, web, MCP, or sync
  2. Processing — classification, chunking, embedding (async, typically <5s)
  3. Active — ready for retrieval
  4. Archived — soft-deleted, excluded from recall but recoverable