Core Concepts

Tenax organizes knowledge into five distinct types, each serving a specific purpose in maintaining project continuity.

Knowledge Types

Decision

Architecture & Technology Choices

Decisions capture architecture choices, technology selections, and design approaches. They answer "what did we choose and why?"

FieldDescription
topicCategory (e.g., "database", "auth", "api")
decisionWhat was decided
rationaleWhy this choice was made

Example: "Using PostgreSQL for relational data" with rationale "Team has expertise, strong ACID compliance"

Pattern

Coding Conventions & Best Practices

Patterns capture coding conventions, architectural patterns, and established best practices for the project.

FieldDescription
namePattern identifier (e.g., "error-handler")
descriptionWhat the pattern does
usageWhen to apply this pattern

Example: "error-boundary" - Wrap async route handlers in try-catch with standardized error response

Task

Work Items & TODOs

Tasks track work items, pending todos, and follow-up actions that emerge during development.

FieldDescription
titleTask description
statuspending, in-progress, completed, cancelled
prioritylow, medium, high, critical

Example: "Add unit tests for authentication module" - high priority, pending

Insight

Discoveries & Learnings

Insights capture discoveries, learnings, gotchas, and important observations that don't fit other categories.

FieldDescription
contentThe insight or observation
contextOptional context about when this applies

Example: "Rate limiting is per-user, not per-app, which affects our caching strategy"

Session

Complete Conversation Snapshots

Sessions are complete conversation snapshots with metadata. They contain the raw transcript and extracted knowledge.

FieldDescription
idSession identifier (e.g., "001")
summaryBrief description of conversation
tokenCountTokens in session
filesModifiedFiles changed during session

How Knowledge Flows

Knowledge flows through the system in three stages:

1

Capture

During your session, hooks track file changes. When the session ends (or auto-compacts), the full transcript is saved.

2

Extract

The extractor scans for compact markers ([D], [P], [T], [I]) and uses heuristics to identify knowledge. Quality scoring filters noise.

3

Index

Extracted knowledge is embedded using a local ML model and stored in a vector database for semantic search.

Proactive History Checking

When you discuss architecture, libraries, or patterns, Claude automatically searches Tenax first. This surfaces existing decisions with their rationale, preventing re-deciding the same topics.

Storage Structure

All data is stored locally in your project's .claude/tenax/ directory:

Directory Structure
.claude/tenax/
├── config.json           # User configuration
├── index.json            # Accumulated knowledge index
├── embeddings.db         # Vector store (sqlite-vec)
└── sessions/
    ├── 001.json          # Processed session data
    ├── 001.jsonl         # Raw transcript
    ├── 002.json
    ├── 002.jsonl
    └── ...
FilePurpose
config.jsonYour settings (token budget, auto-load, etc.)
index.jsonAll decisions, patterns, tasks, insights across sessions
embeddings.dbSQLite database with vector embeddings for semantic search
*.jsonlRaw conversation transcript (full fidelity)
*.jsonProcessed session with extracted knowledge

Token Economics

Understanding token costs helps you manage your context budget effectively. Tenax uses progressive disclosure to minimize overhead:

ComponentTokensWhen Loaded
Skill description~50Always (at startup)
SKILL.md (full)~800First trigger on architecture discussion
Search result (typical)200-500Each search query
Quick summary~500Auto-load or /status
Full session (typical)5,000-20,000Explicit load only

Budget-Aware Loading

The /tenax:load-sessions command respects your configured token budget. It loads sessions in order until the budget would be exceeded, then stops.

Every load operation reports exact token counts, so you always know what you're spending:

Loaded 3 of 5 sessions (12,450 tokens - 15.6% of budget)