HeadKey Memory System - Developer Cheat Sheet
Documents a memory API system for AI agents built on the CIBFE architecture, covering setup, configuration, and usage.
What this file does
Documents a memory API system for AI agents built on the CIBFE architecture, covering setup, configuration, and usage.
When to use it
- You are onboarding to the HeadKey project
- You need to configure or extend the memory system
- You are troubleshooting embedding or database issues
- You want to understand the project's architecture and interfaces
Assumes this stack
HeadKey Memory System - Developer Cheat Sheet
This is a living document. Update it when the system is changed
IMPORTANT
This application is designed for large scale operations. Every architecture decision should be made with scalability, performance and extention capabilities in mind.
๐ฏ Project Overview
HeadKey is a sophisticated Memory API system for AI agents built on the Cognitive Ingestion & Belief Formation Engine (CIBFE) architecture. It provides intelligent memory management with automatic categorization, similarity search, belief tracking, and forgetting capabilities.
Core Value Proposition
- Intelligent Memory: Retains valuable information, discards irrelevant data
- Production Ready: JPA-based persistence with configurable databases
- AI-Powered: LangChain4J integration for state-of-the-art embeddings
- Scalable: Pluggable strategies and enterprise-grade architecture
๐๏ธ Architecture Overview
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CIBFE Architecture โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโค
โ Information โ Contextual โ Memory โ Belief โ
โ Ingestion โ Categorizationโ Encoding โ Reinforcement & โ
โ Module (IIM) โ Engine (CCE) โ System (MES) โ Conflict (BRCA) โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโค
โ Relevance โ Retrieval & โ โ โ
โ Evaluation & โ Response โ โ โ
โ Forgetting (REFA)โ Engine (RRE) โ โ โ
โโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโ
โ REST API โ
โ (Quarkus) โ
โโโโโโโโโโโโโโโโโโโ
๐ง Module Responsibilities
| Module | Purpose | Status |
|---|---|---|
| IIM | Orchestrates ingestion pipeline | โ Complete |
| CCE | Content categorization & tagging | โ Complete |
| MES | Persistent storage & retrieval | โ Complete (JPA) |
| BRCA | Belief consistency management | โ Complete |
| REFA | Memory lifecycle & forgetting | โ Complete |
| RRE | Search & response generation | โ Complete |
๐ Quick Start Commands
Development Setup
# Clone and build
git clone <repository>
cd headkey
./gradlew build
# Start development server (H2 in-memory)
cd rest
../gradlew quarkusDev
# API: http://localhost:8080
# Swagger: http://localhost:8080/swagger-ui
Production Setup
# Set environment variables
export DATABASE_URL=jdbc:postgresql://localhost:5432/headkey
export DATABASE_USER=headkey_user
export DATABASE_PASSWORD=secure_password
export OPENAI_API_KEY=your-api-key-here
# Start with production profile
../gradlew quarkusDev -Dquarkus.profile=prod
Testing
# All tests
./gradlew test
# Specific module tests
./gradlew :core:test
./gradlew :rest:test
# LangChain4J tests
./gradlew :rest:test --tests "*LangChain4J*"
๐ Project Structure
headkey/
โโโ api/ # Core interfaces & DTOs
โ โโโ interfaces/ # 6 core module interfaces
โ โโโ dto/ # Data transfer objects
โโโ core/ # Implementation layer
โ โโโ implementations/ # JPA, JDBC, In-Memory impls
โ โโโ strategies/ # Pluggable similarity strategies
โโโ rest/ # REST API (Quarkus)
โ โโโ config/ # CDI configuration
โ โโโ service/ # LangChain4J integration
โ โโโ controllers/ # REST endpoints
โโโ docs/ # Documentation & specs
๐ Key Interfaces
JpaBeliefStorageService with Vector Embeddings
// Create service with embedding generator for vector similarity search
VectorEmbeddingGenerator embeddingGenerator = text -> {
// Your embedding generation logic (OpenAI, LangChain4J, etc.)
return generateEmbedding(text);
};
BeliefStorageService storageService = JpaBeliefStorageServiceFactory.builder()
.withEntityManagerFactory(emf)
.withEmbeddingGenerator(embeddingGenerator)
.build();
// Store beliefs with automatic embedding generation
Belief belief = new Belief.Builder()
.statement("The sky is blue on clear days")
.agentId("agent-1")
.build();
storageService.storeBelief(belief); // Embedding automatically generated and stored
// Vector-based similarity search
List<SimilarBelief> similar = storageService.findSimilarBeliefs(
"What color is the sky?",
"agent-1",
0.7, // similarity threshold
5 // max results
);
Core Module Interfaces
// Information Ingestion
public interface InformationIngestionModule {
IngestionResult ingest(MemoryInput input);
IngestionResult dryRun(MemoryInput input);
}
// Memory Storage
public interface MemoryEncodingSystem {
MemoryRecord encodeAndStore(String content, CategoryLabel category, Metadata meta);
List<MemoryRecord> searchSimilar(String query, int limit);
Optional<MemoryRecord> getMemory(String id);
}
// Categorization
public interface ContextualCategorizationEngine {
CategoryLabel categorize(String content, String agentId);
List<CategoryLabel> categorizeAlternatives(String content, String agentId);
}
Data Models
// Core memory record
public class MemoryRecord {
private String id;
private String agentId;
private String content;
private CategoryLabel category;
private Metadata metadata;
private Instant createdAt;
private Double relevanceScore;
}
// Category classification
public class CategoryLabel {
private String primary; // e.g., "knowledge"
private String secondary; // e.g., "technology"
private Set<String> tags; // ["ai", "programming"]
private double confidence; // 0.0 - 1.0
}
๐๏ธ Database Configurations
H2 (Development - Default)
# Modern Quarkus Hibernate configuration (no persistence.xml)
quarkus.hibernate-orm.persistence-xml.ignore=true
quarkus.datasource.db-kind=h2
quarkus.datasource.jdbc.url=jdbc:h2:mem:headkey;DB_CLOSE_DELAY=-1
quarkus.hibernate-orm.database.generation=update
quarkus.hibernate-orm.packages=ai.headkey.memory.entities
headkey.memory.strategy=auto
PostgreSQL (Production)
# Environment variables
DATABASE_URL=jdbc:postgresql://localhost:5432/headkey
DATABASE_USER=headkey_user
DATABASE_PASSWORD=secure_password
# Application properties
quarkus.hibernate-orm.persistence-xml.ignore=true
quarkus.datasource.db-kind=postgresql
quarkus.hibernate-orm.database.generation=update
quarkus.hibernate-orm.packages=ai.headkey.memory.entities
headkey.memory.strategy=postgres
Strategy Selection
| Database | Strategy | Vector Support | Performance |
|---|---|---|---|
| PostgreSQL | postgres | โ (pgvector) | Excellent |
| H2 | text | โ | Good (dev) |
| MySQL | text | โ | Good |
| Auto | auto | โ ๏ธ (detected) | Optimal |
๐ค LangChain4J Integration
Configuration
# OpenAI Embeddings
quarkus.langchain4j.openai.api-key=${OPENAI_API_KEY:}
quarkus.langchain4j.openai.embedding-model.model-name=text-embedding-3-small
quarkus.langchain4j.openai.embedding-model.dimensions=1536
# Environment-specific
%dev.quarkus.langchain4j.openai.log-requests=true
%prod.quarkus.langchain4j.openai.embedding-model.model-name=text-embedding-3-large
Usage
// CDI injection
@Inject
LangChain4JVectorEmbeddingGenerator embeddingGenerator;
// Generate embeddings
double[] embedding = embeddingGenerator.generateEmbedding("AI text content");
Models Supported
- text-embedding-3-small: 1536 dims, cost-effective
- text-embedding-3-large: 3072 dims, highest quality
- Mock model: Development/testing (no API key needed)
๐ REST API Endpoints
Memory Operations
# Ingest memory
POST /api/v1/memory/ingest
{
"agent_id": "user-123",
"content": "Machine learning concepts",
"source": "conversation",
"metadata": {"importance": 0.8}
}
# Dry run validation
POST /api/v1/memory/dry-run
{
"agent_id": "user-123",
"content": "Test content"
}
# Input validation
POST /api/v1/memory/validate
{
"agent_id": "user-123",
"content": "Content to validate"
}
System Monitoring
# Basic health
GET /api/v1/memory/health
# Comprehensive health (JPA system)
GET /api/v1/system/health
# Current configuration
GET /api/v1/system/config
# Database capabilities
GET /api/v1/system/database/capabilities
# Performance statistics
GET /api/v1/system/statistics
๐ ๏ธ Development Patterns
Factory Pattern Usage
// In-memory (testing)
MemoryEncodingSystem testSystem = InMemoryMemorySystemFactory.forTesting();
// JPA (production)
JpaMemoryEncodingSystem jpaSystem = JpaMemorySystemFactory.builder()
.entityManagerFactory(emf)
.embeddingGenerator(generator)
.similarityStrategy(strategy)
.build();
// JDBC (alternative)
JdbcMemoryEncodingSystem jdbcSystem = JdbcMemorySystemFactory.createPostgreSQLSystem(
"localhost", 5432, "headkey", "user", "pass", embeddingGenerator
);
CDI Configuration
@ApplicationScoped
public class MemorySystemConfig {
@Inject
EntityManager entityManager; // Modern Quarkus injection
@Produces
@Singleton
public JpaMemoryEncodingSystem jpaMemoryEncodingSystem() {
return JpaMemorySystemFactory.builder()
.entityManagerFactory(entityManager.getEntityManagerFactory())
.embeddingGenerator(embeddingGenerator)
.build();
}
}
โ๏ธ Configuration Properties
Core Memory System
# Modern Quarkus Hibernate configuration
quarkus.hibernate-orm.persistence-xml.ignore=true
quarkus.hibernate-orm.database.generation=update
quarkus.hibernate-orm.packages=ai.headkey.memory.entities
quarkus.hibernate-orm.physical-naming-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
# Strategy selection
headkey.memory.strategy=auto|text|vector|postgres
# Performance tuning
headkey.memory.batch-size=100
headkey.memory.max-similarity-results=1000
headkey.memory.similarity-threshold=0.0
headkey.memory.enable-second-level-cache=true
# Embedding configuration
headkey.memory.embedding.enabled=true
headkey.memory.embedding.dimension=1536
headkey.memory.embedding.model=default
Database Optimization
# Connection pooling
headkey.memory.database.pool.min-size=5
headkey.memory.database.pool.max-size=20
headkey.memory.database.pool.timeout-ms=30000
# Performance settings
headkey.memory.performance.enable-statistics=true
headkey.memory.performance.cache-size=1000
headkey.memory.performance.enable-async=false
๐งช Testing Strategies
Unit Testing
// Mock embedding generator
VectorEmbeddingGenerator mockGenerator = content -> new double[1536];
// Test memory system
MemoryEncodingSystem system = new JpaMemoryEncodingSystem(emf, mockGenerator);
Integration Testing
@QuarkusTest
class MemoryIntegrationTest {
@Inject
MemoryEncodingSystem memorySystem;
@Test
void testEndToEndIngestion() {
// Test complete pipeline
}
}
Performance Testing
// Batch operations
for (int i = 0; i < 1000; i++) {
memorySystem.encodeAndStore(content, category, metadata);
}
๐ Similarity Search Strategies
JpaBeliefStorageService Vector Search
The JpaBeliefStorageService now supports vector-based similarity search through embedding generators:
// Automatic vector/text search selection
JpaBeliefStorageService service = new JpaBeliefStorageService(
beliefRepository,
conflictRepository,
embeddingGenerator // Optional: enables vector search
);
// Vector search (when embedding generator is provided)
List<SimilarBelief> vectorResults = service.findSimilarBeliefs(
"What is artificial intelligence?",
"agent-1",
0.7, // cosine similarity threshold
10 // max results
);
// Text search fallback (when no embedding generator)
List<SimilarBelief> textResults = service.findSimilarBeliefs(
"What is artificial intelligence?",
"agent-1",
0.3, // Jaccard similarity threshold
10 // max results
);
Search Method Comparison
| Method | Algorithm | Threshold Range | Semantic Understanding | Performance |
|---|---|---|---|---|
| Vector Search | Cosine Similarity | 0.0 - 1.0 | โ High | Excellent |
| Text Search | Jaccard Similarity | 0.0 - 1.0 | โ Basic | Good |
Strategy Implementations
// Text-based (H2, MySQL)
TextBasedJpaSimilaritySearchStrategy textStrategy = new TextBasedJpaSimilaritySearchStrategy();
// Vector-based (PostgreSQL)
PostgresJpaSimilaritySearchStrategy pgStrategy = new PostgresJpaSimilaritySearchStrategy();
// Auto-detection
JpaSimilaritySearchStrategy autoStrategy = JpaSimilaritySearchStrategyFactory.createStrategy(em);
Performance Characteristics
| Strategy | Database | Vector Support | Performance |
|---|---|---|---|
| DefaultJpaSimilaritySearchStrategy | Any | Basic | Good |
| TextBasedJpaSimilaritySearchStrategy | H2/MySQL | โ | Fast |
| PostgresJpaSimilaritySearchStrategy | PostgreSQL | โ | Excellent |
๐ Monitoring & Observability
Health Checks
# Quick health
curl http://localhost:8080/health
# Detailed system health
curl http://localhost:8080/api/v1/system/health | jq
{
"healthy": true,
"memorySystem": {
"strategy": "PostgresJpaSimilaritySearchStrategy",
"supportsVectorSearch": true
}
}
Performance Metrics
# System statistics
curl http://localhost:8080/api/v1/system/statistics | jq
{
"memorySystem": {
"totalMemories": 1543,
"totalOperations": 15430,
"uptime": "2h 34m"
}
}
Configuration Inspection
curl http://localhost:8080/api/v1/system/config | jq
{
"memory": {
"strategy": "auto",
"batchSize": 100
},
"runtime": {
"actualStrategy": "PostgresJpaSimilaritySearchStrategy"
}
}
๐จ Troubleshooting Guide
Common Issues
CDI Injection Failed (EntityManagerFactory)
# Fix: Use modern Quarkus configuration
quarkus.hibernate-orm.persistence-xml.ignore=true
quarkus.hibernate-orm.packages=ai.headkey.memory.entities
# Use EntityManager injection instead of @PersistenceUnit
@Inject EntityManager entityManager;
// Get factory: entityManager.getEntityManagerFactory()
Database Connection Failed
# Check connection
curl http://localhost:8080/api/v1/system/health
# Look for database.healthy: false
Embedding Generation Errors
# Check API key
echo $OPENAI_API_KEY
# Enable debug logging
quarkus.log.category."ai.headkey.rest.service.LangChain4JVectorEmbeddingGenerator".level=DEBUG
Poor Search Performance
# Check strategy
curl http://localhost:8080/api/v1/system/config | jq .runtime.actualStrategy
# For PostgreSQL, ensure pgvector extension
Debug Configuration
# Enable SQL logging
quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.log.format-sql=true
# Enable debug logs
quarkus.log.category."ai.headkey".level=DEBUG
quarkus.langchain4j.openai.log-requests=true
๐ฎ Implementation Status
โ Completed (Production Ready)
- All 6 core module interfaces
- In-memory implementations (testing)
- JDBC implementations (alternative)
- JPA implementations (primary)
- REST API with Quarkus
- LangChain4J integration
- Similarity search strategies
- JpaBeliefStorageService with vector embedding support
- Comprehensive testing
- Configuration management
- Health monitoring
- Performance optimization
- Modern Quarkus Hibernate configuration (no persistence.xml)
๐ Current Focus
- โ JpaBeliefStorageService embedding generator integration
- CDI integration fixes for EntityManagerFactory injection
- JPA integration test improvements
- Advanced vector search optimizations
- Performance benchmarking
๐ฏ Future Enhancements
- Additional embedding providers (HuggingFace, Ollama)
- Caching layers (Redis integration)
- Batch processing APIs
- Advanced conflict resolution
- Memory visualization tools
- Machine learning model training
๐ก Best Practices
Configuration
- Use modern Quarkus Hibernate config (no persistence.xml)
- Use environment variables for production secrets
- Leverage profile-based configuration (%dev, %test, %prod)
- Monitor database capabilities and adjust strategies
- Inject EntityManager directly instead of @PersistenceUnit
Performance
- Enable second-level cache for frequent reads
- Use appropriate batch sizes for bulk operations
- Choose optimal similarity search strategy for your database
Security
- Never commit API keys to version control
- Use secure database connections (SSL)
- Implement proper authentication for production APIs
Development
- Use H2 in-memory for rapid development
- Write unit tests with mock embedding generators
- Use integration tests with real database connections
๐ Key Documentation Files
SPECIFICATION.md- Complete system specificationrest/LANGCHAIN4J_IMPLEMENTATION.md- AI embedding integrationrest/README.md- REST API comprehensive guide
๐ฏ Success Metrics
Architecture Quality
- โ SOLID principles compliance
- โ 12-factor app methodology
- โ Clean separation of concerns
- โ Comprehensive error handling
Performance
- โ Sub-millisecond in-memory operations
- โ <10ms JPA operations (local DB)
- โ Configurable batch processing
- โ Database-specific optimizations
Testing
- โ 95%+ unit test coverage
- โ Integration tests for all components
- โ Performance benchmarks
- โ TDD implementation approach
Production Readiness
- โ Multiple database support
- โ Environment-based configuration
- โ Comprehensive monitoring
- โ Graceful error handling
- โ Health checks and metrics
HeadKey Memory System - Intelligent memory management for AI agents with enterprise-grade reliability and performance. ๐ง โจ
What's inside
15 sections including architecture diagram, quick start commands, project structure, interfaces, database configs, REST endpoints, and troubleshooting guide
Change this for your project
- Replace
savantly-net/headkey-legacy-pocwith your repository URL - Replace
ai.headkey.memory.entitieswith your own package name - Replace
OPENAI_API_KEYwith your actual API key environment variable - Replace
headkey.memory.strategy=autowith your chosen strategy
Where it goes
Keep it in your repository where the agent or team that needs it will read it.
Worth borrowing
- Factory pattern for creating storage services with different backends
- Strategy pattern for similarity search algorithms
- Profile-based configuration for dev vs production environments
Related Documents
Building SupportX AI Assist: A Multi-Agent IT Support System
Describes building a multi-agent IT support system with AutoGen, Azure AI Search, and Gemini embeddings for instant issue resolution and automatic escalation.
Intelligent Document Query Platform โ GitHub-ready Low-Level Design (LLD)
Provides a copy-ready low-level design for a serverless document query platform with vector search and LLM integration.
Graph Matching with Topological Features
Teaches enhanced graph matching by combining spatial distances with node2vec and commute times embeddings, then applying the Hungarian algorithm.
Pulse โ Life Cofounder | Build Log
Documents a full-stack monorepo that ingests LinkedIn and GitHub data, generates embeddings in-browser, and provides a RAG chat with an AI cofounder.