2025-06-24 11:41:30 -07:00
< div align = "center" >
< img src = "./brainy.png" alt = "Brainy Logo" width = "200" / >
< br / > < br / >
[](LICENSE)
**feat(tests, docs, storage): add statistics storage tests and enhance documentation**
- **Tests**: Added new `statistics-storage.test.ts` to validate statistics storage functionality across scenarios including saving, retrieving, time-based partitioning, and backward compatibility. Ensured tests dynamically handle missing environment variables by skipping S3-related tests when credentials are unavailable.
- **Docs**: Enhanced `statistics.md` with detailed explanations of scalability improvements, including adaptive flush timing, batched updates, and time-based partitioning. Improved readability and structure.
- **Storage**: Updated all storage adapters to integrate time-based partitioning and maintain backward compatibility with legacy statistics storage formats.
- **Dependencies**: Added `dotenv` to support environmental variable management for storage adapter tests.
**Purpose**: Strengthen system reliability by adding comprehensive test coverage for statistics storage, improve scalability documentation, and ensure consistency across storage adapters with robust implementations.
2025-07-24 16:24:02 -07:00
[](https://nodejs.org/)
2025-07-04 12:19:48 -07:00
[](https://www.typescriptlang.org/)
2025-06-24 11:41:30 -07:00
[](CONTRIBUTING.md)
2025-08-04 08:56:05 -07:00
**A powerful graph & vector data platform for AI applications across any environment**
2025-06-24 11:41:30 -07:00
< / div >
2025-08-04 10:14:33 -07:00
## ✨ What is Brainy?
2025-06-24 11:41:30 -07:00
2025-08-04 14:33:39 -07:00
Imagine a database that thinks like you do - connecting ideas, finding patterns, and getting smarter over time. Brainy
is the **AI-native database** that brings vector search and knowledge graphs together in one powerful, ridiculously
easy-to-use package.
2025-06-24 11:41:30 -07:00
2025-08-04 12:18:58 -07:00
### 🆕 NEW: Distributed Mode (v0.38+)
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
**Scale horizontally with zero configuration!** Brainy now supports distributed deployments with automatic coordination:
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
- **🌐 Multi-Instance Coordination** - Multiple readers and writers working in harmony
- **🏷️ Smart Domain Detection** - Automatically categorizes data (medical, legal, product, etc.)
- **📊 Real-Time Health Monitoring** - Track performance across all instances
- **🔄 Automatic Role Optimization** - Readers optimize for cache, writers for throughput
- **🗂️ Intelligent Partitioning** - Hash-based partitioning for perfect load distribution
2025-08-04 10:14:33 -07:00
### 🚀 Why Developers Love Brainy
**feat(web-service): add new web service package and deployment scripts**
- **New Web Service Package**:
- Introduced `@soulcraft/brainy-web-service`, a REST API wrapper for the Brainy vector graph database.
- Added documentation and features to support secure, read-only search and retrieval operations.
- **Deployment Support**:
- Included comprehensive deployment instructions in the `web-service-package/README.md`:
- Options for Docker, serverless platforms, and cloud providers (AWS, GCP, Azure, Cloudflare).
- Example configurations for systemd, Nginx, and Docker Compose.
- **Scripts and Documentation Updates**:
- Added `deploy:web-service` script to `package.json` for streamlined build and publishing.
- Enhanced `README.md` to reflect the introduction of the web service package and its capabilities.
- **Purpose**:
- This update extends Brainy’s functionality by providing a production-ready, easy-to-deploy REST API for search operations. It ensures flexibility for diverse deployment scenarios while maintaining security and high performance.
2025-07-22 10:22:38 -07:00
2025-08-04 14:33:39 -07:00
- **🧠 Zero-to-Smart™** - No config files, no tuning parameters, no DevOps headaches. Brainy auto-detects your
environment and optimizes itself
- **🌍 True Write-Once, Run-Anywhere** - Same code runs in React, Angular, Vue, Node.js, Deno, Bun, serverless, edge
workers, and even vanilla HTML
2025-08-04 10:14:33 -07:00
- **⚡ Scary Fast** - Handles millions of vectors with sub-millisecond search. Built-in GPU acceleration when available
- **🎯 Self-Learning** - Like having a database that goes to the gym. Gets faster and smarter the more you use it
- **🔮 AI-First Design** - Built for the age of embeddings, RAG, and semantic search. Your LLMs will thank you
- **🎮 Actually Fun to Use** - Clean API, great DX, and it does the heavy lifting so you can build cool stuff
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
### 🚀 NEW: Ultra-Fast Search Performance + Auto-Configuration
**Your searches just got 100x faster AND Brainy now configures itself!** Advanced performance with zero setup:
- **🤖 Intelligent Auto-Configuration** - Detects environment and usage patterns, optimizes automatically
- **⚡ Smart Result Caching** - Repeated queries return in < 1ms with automatic cache invalidation
- **📄 Cursor-Based Pagination** - Navigate millions of results with constant O(k) performance
- **🔄 Real-Time Data Sync** - Cache automatically updates when data changes, even in distributed scenarios
- **📊 Performance Monitoring** - Built-in hit rate and memory usage tracking with adaptive optimization
- **🎯 Zero Breaking Changes** - All existing code works unchanged, just faster and smarter
```javascript
// Zero configuration - everything optimized automatically!
const brainy = new BrainyData() // Auto-detects environment & optimizes
await brainy.init()
// Caching happens automatically - no setup needed!
const results1 = await brainy.search('query', 10) // ~50ms first time
const results2 = await brainy.search('query', 10) // < 1ms cached hit !
// Advanced pagination works instantly
const page1 = await brainy.searchWithCursor('query', 100)
const page2 = await brainy.searchWithCursor('query', 100, {
cursor: page1.cursor // Constant time, no matter how deep!
})
// Monitor auto-optimized performance
const stats = brainy.getCacheStats()
console.log(`Auto-tuned cache hit rate: ${(stats.search.hitRate * 100).toFixed(1)}%` )
```
2025-08-04 10:14:33 -07:00
## 🚀 Quick Start (30 seconds!)
2025-07-24 11:13:03 -07:00
2025-08-04 10:14:33 -07:00
### Node.js TLDR
2025-08-04 14:33:39 -07:00
**feat(web-service): add new web service package and deployment scripts**
- **New Web Service Package**:
- Introduced `@soulcraft/brainy-web-service`, a REST API wrapper for the Brainy vector graph database.
- Added documentation and features to support secure, read-only search and retrieval operations.
- **Deployment Support**:
- Included comprehensive deployment instructions in the `web-service-package/README.md`:
- Options for Docker, serverless platforms, and cloud providers (AWS, GCP, Azure, Cloudflare).
- Example configurations for systemd, Nginx, and Docker Compose.
- **Scripts and Documentation Updates**:
- Added `deploy:web-service` script to `package.json` for streamlined build and publishing.
- Enhanced `README.md` to reflect the introduction of the web service package and its capabilities.
- **Purpose**:
- This update extends Brainy’s functionality by providing a production-ready, easy-to-deploy REST API for search operations. It ensures flexibility for diverse deployment scenarios while maintaining security and high performance.
2025-07-22 10:22:38 -07:00
```bash
2025-08-04 10:14:33 -07:00
# Install
npm install brainy
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
# Use it
2025-08-04 08:56:05 -07:00
```
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy, NounType, VerbType } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-03 17:22:32 -07:00
const brainy = createAutoBrainy()
2025-08-04 10:14:33 -07:00
// Add data with Nouns (entities)
2025-08-04 14:33:39 -07:00
const catId = await brainy.add("Siamese cats are elegant and vocal", {
2025-08-01 08:56:41 -07:00
noun: NounType.Thing,
2025-08-04 10:14:33 -07:00
breed: "Siamese",
2025-08-04 14:33:39 -07:00
category: "animal"
2025-06-24 11:41:30 -07:00
})
2025-08-04 14:33:39 -07:00
const ownerId = await brainy.add("John loves his pets", {
2025-08-04 10:14:33 -07:00
noun: NounType.Person,
2025-08-04 14:33:39 -07:00
name: "John Smith"
2025-06-24 11:41:30 -07:00
})
2025-08-04 10:14:33 -07:00
// Connect with Verbs (relationships)
2025-08-04 14:33:39 -07:00
await brainy.addVerb(ownerId, catId, {
2025-08-04 10:14:33 -07:00
verb: VerbType.Owns,
2025-08-04 14:33:39 -07:00
since: "2020-01-01"
2025-06-24 11:41:30 -07:00
})
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Search by meaning
const results = await brainy.searchText("feline companions", 5)
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Search JSON documents by specific fields
const docs = await brainy.searchDocuments("Siamese", {
fields: ['breed', 'category'], // Search these fields
weights: { breed: 2.0 }, // Prioritize breed matches
limit: 10
2025-08-01 08:27:39 -07:00
})
2025-08-04 10:14:33 -07:00
// Find relationships
const johnsPets = await brainy.getVerbsBySource(ownerId, VerbType.Owns)
2025-06-24 11:41:30 -07:00
```
2025-08-04 14:33:39 -07:00
That's it! No config, no setup, Zero-to-Smart™
2025-08-04 08:56:05 -07:00
2025-08-04 12:18:58 -07:00
### 🌐 Distributed Mode Example (NEW!)
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
```javascript
// Writer Instance - Ingests data from multiple sources
const writer = createAutoBrainy({
2025-08-04 14:33:39 -07:00
storage: { s3Storage: { bucketName: 'my-bucket' } },
2025-08-04 12:18:58 -07:00
distributed: { role: 'writer' } // Explicit role for safety
})
// Reader Instance - Optimized for search queries
const reader = createAutoBrainy({
2025-08-04 14:33:39 -07:00
storage: { s3Storage: { bucketName: 'my-bucket' } },
2025-08-04 12:18:58 -07:00
distributed: { role: 'reader' } // 80% memory for cache
})
// Data automatically gets domain tags
2025-08-04 14:33:39 -07:00
await writer.add("Patient shows symptoms of...", {
2025-08-04 12:18:58 -07:00
diagnosis: "flu" // Auto-tagged as 'medical' domain
})
// Domain-aware search across all partitions
const results = await reader.search("medical symptoms", 10, {
filter: { domain: 'medical' } // Only search medical data
})
// Monitor health across all instances
const health = reader.getHealthStatus()
console.log(`Instance ${health.instanceId}: ${health.status}` )
```
2025-08-04 10:14:33 -07:00
## 🎭 Key Features
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Core Capabilities
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- **Vector Search** - Find semantically similar content using embeddings
- **Graph Relationships** - Connect data with meaningful relationships
- **JSON Document Search** - Search within specific fields with prioritization
2025-08-04 12:18:58 -07:00
- **Distributed Mode** - Scale horizontally with automatic coordination between instances
2025-08-04 10:14:33 -07:00
- **Real-Time Syncing** - WebSocket and WebRTC for distributed instances
- **Streaming Pipeline** - Process data in real-time as it flows through
- **Model Control Protocol** - Let AI models access your data
### Smart Optimizations
2025-08-04 14:33:39 -07:00
- **🤖 Intelligent Auto-Configuration** - Detects environment, usage patterns, and optimizes everything automatically
- **⚡ Runtime Performance Adaptation** - Continuously monitors and self-tunes based on real usage
- **🌐 Distributed Mode Detection** - Automatically enables real-time updates for shared storage scenarios
- **📊 Workload-Aware Optimization** - Adapts cache size and TTL based on read/write patterns
- **🧠 Adaptive Learning** - Gets smarter with usage, learns from your data access patterns
- **#️ ⃣ Intelligent Partitioning** - Hash-based partitioning for perfect load distribution
- **🎯 Role-Based Optimization** - Readers maximize cache, writers optimize throughput
- **🏷️ Domain-Aware Indexing** - Automatic categorization improves search relevance
- **🗂️ Multi-Level Caching** - Hot/warm/cold caching with predictive prefetching
- **💾 Memory Optimization** - 75% reduction with compression for large datasets
2025-08-04 10:14:33 -07:00
### Developer Experience
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- **TypeScript Support** - Fully typed API with generics
- **Extensible Augmentations** - Customize and extend functionality
- **REST API** - Web service wrapper for HTTP endpoints
- **Auto-Complete** - IntelliSense for all APIs and types
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 📦 Installation
2025-08-04 08:56:05 -07:00
2025-08-05 09:32:15 -07:00
### Development: Quick Start
2025-08-04 08:56:05 -07:00
```bash
2025-08-05 09:32:15 -07:00
npm install @soulcraft/brainy
2025-08-04 08:56:05 -07:00
```
2025-08-05 09:32:15 -07:00
### Production: Add Offline Model Reliability
2025-08-04 08:56:05 -07:00
```bash
2025-08-05 09:32:15 -07:00
# For development (online model loading)
npm install @soulcraft/brainy
# For production (offline reliability)
npm install @soulcraft/brainy @soulcraft/brainy -models
2025-08-04 08:56:05 -07:00
```
2025-08-05 09:32:15 -07:00
**Why use offline models in production?**
- **🛡️ 100% Reliability** - No network timeouts or blocked URLs
- **⚡ Instant Startup** - Models load in ~100ms vs 5-30 seconds
- **🐳 Docker Ready** - Perfect for Cloud Run, Lambda, Kubernetes
- **🔒 Zero Dependencies** - No external network calls required
- **🎯 Zero Configuration** - Automatic detection with graceful fallback
2025-08-04 14:33:39 -07:00
2025-08-05 09:32:15 -07:00
The offline models provide the **same functionality** with maximum reliability. Your existing code works unchanged - Brainy automatically detects and uses bundled models when available.
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
import { BundledUniversalSentenceEncoder } from '@soulcraft/brainy -models'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Use the bundled model for offline operation
const brainy = createAutoBrainy({
embeddingModel: BundledUniversalSentenceEncoder
})
```
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 🎨 Build Amazing Things
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
**🤖 AI Chat Applications** - Build ChatGPT-like apps with long-term memory and context awareness
2025-08-04 14:33:39 -07:00
**🔍 Semantic Search Engines** - Search by meaning, not keywords. Find "that thing that's like a cat but bigger" →
returns "tiger"
2025-08-04 10:14:33 -07:00
**🎯 Recommendation Engines** - "Users who liked this also liked..." but actually good
**🧬 Knowledge Graphs** - Connect everything to everything. Wikipedia meets Neo4j meets magic
**👁️ Computer Vision Apps** - Store and search image embeddings. "Find all photos with dogs wearing hats"
**🎵 Music Discovery** - Find songs that "feel" similar. Spotify's Discover Weekly in your app
**📚 Smart Documentation** - Docs that answer questions. "How do I deploy to production?" → relevant guides
**🛡️ Fraud Detection** - Find patterns humans can't see. Anomaly detection on steroids
**🌐 Real-Time Collaboration** - Sync vector data across devices. Figma for AI data
**🏥 Medical Diagnosis Tools** - Match symptoms to conditions using embedding similarity
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 🧬 The Power of Nouns & Verbs
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
Brainy uses a **graph-based data model** that mirrors how humans think - with **Nouns** (entities) connected by **Verbs
** (relationships). This isn't just vectors in a void; it's structured, meaningful data.
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### 📝 Nouns (What Things Are)
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
Nouns are your entities - the "things" in your data. Each noun has:
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- A unique ID
- A vector representation (for similarity search)
- A type (Person, Document, Concept, etc.)
- Custom metadata
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
**Available Noun Types:**
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
| Category | Types | Use For |
|---------------------|-------------------------------------------------------------------|-------------------------------------------------------|
| **Core Entities** | `Person` , `Organization` , `Location` , `Thing` , `Concept` , `Event` | People, companies, places, objects, ideas, happenings |
| **Digital Content** | `Document` , `Media` , `File` , `Message` , `Content` | PDFs, images, videos, emails, posts, generic content |
| **Collections** | `Collection` , `Dataset` | Groups of items, structured data sets |
| **Business** | `Product` , `Service` , `User` , `Task` , `Project` | E-commerce, SaaS, project management |
| **Descriptive** | `Process` , `State` , `Role` | Workflows, conditions, responsibilities |
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### 🔗 Verbs (How Things Connect)
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
Verbs are your relationships - they give meaning to connections. Not just "these vectors are similar" but "this OWNS
that" or "this CAUSES that".
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
**Available Verb Types:**
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
| Category | Types | Examples |
|----------------|----------------------------------------------------------------------|------------------------------------------|
| **Core** | `RelatedTo` , `Contains` , `PartOf` , `LocatedAt` , `References` | Generic relations, containment, location |
| **Temporal** | `Precedes` , `Succeeds` , `Causes` , `DependsOn` , `Requires` | Time sequences, causality, dependencies |
| **Creation** | `Creates` , `Transforms` , `Becomes` , `Modifies` , `Consumes` | Creation, change, consumption |
| **Ownership** | `Owns` , `AttributedTo` , `CreatedBy` , `BelongsTo` | Ownership, authorship, belonging |
| **Social** | `MemberOf` , `WorksWith` , `FriendOf` , `Follows` , `Likes` , `ReportsTo` | Social networks, organizations |
| **Functional** | `Describes` , `Implements` , `Validates` , `Triggers` , `Serves` | Functions, implementations, services |
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### 💡 Why This Matters
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
// Traditional vector DB: Just similarity
const similar = await vectorDB.search(embedding, 10)
// Result: [vector1, vector2, ...] - What do these mean? 🤷
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Brainy: Similarity + Meaning + Relationships
2025-08-04 14:33:39 -07:00
const catId = await brainy.add("Siamese cat", {
2025-08-04 08:56:05 -07:00
noun: NounType.Thing,
2025-08-04 14:33:39 -07:00
breed: "Siamese"
2025-08-04 08:56:05 -07:00
})
2025-08-04 14:33:39 -07:00
const ownerId = await brainy.add("John Smith", {
noun: NounType.Person
2025-08-04 08:56:05 -07:00
})
2025-08-04 14:33:39 -07:00
await brainy.addVerb(ownerId, catId, {
2025-08-04 10:14:33 -07:00
verb: VerbType.Owns,
2025-08-04 14:33:39 -07:00
since: "2020-01-01"
2025-08-04 08:56:05 -07:00
})
2025-08-04 10:14:33 -07:00
// Now you can search with context!
const johnsPets = await brainy.getVerbsBySource(ownerId, VerbType.Owns)
const catOwners = await brainy.getVerbsByTarget(catId, VerbType.Owns)
```
2025-08-04 08:56:05 -07:00
2025-08-04 12:18:58 -07:00
## 🌍 Distributed Mode (New!)
2025-08-04 14:33:39 -07:00
Brainy now supports **distributed deployments** with multiple specialized instances sharing the same data. Perfect for
scaling your AI applications across multiple servers.
2025-08-04 12:18:58 -07:00
### Distributed Setup
```javascript
// Single instance (no change needed!)
const brainy = createAutoBrainy({
2025-08-04 14:33:39 -07:00
storage: { s3Storage: { bucketName: 'my-bucket' } }
2025-08-04 12:18:58 -07:00
})
// Distributed mode requires explicit role configuration
// Option 1: Via environment variable
process.env.BRAINY_ROLE = 'writer' // or 'reader' or 'hybrid'
const brainy = createAutoBrainy({
2025-08-04 14:33:39 -07:00
storage: { s3Storage: { bucketName: 'my-bucket' } },
2025-08-04 12:18:58 -07:00
distributed: true
})
// Option 2: Via configuration
const writer = createAutoBrainy({
2025-08-04 14:33:39 -07:00
storage: { s3Storage: { bucketName: 'my-bucket' } },
2025-08-04 12:18:58 -07:00
distributed: { role: 'writer' } // Handles data ingestion
})
const reader = createAutoBrainy({
2025-08-04 14:33:39 -07:00
storage: { s3Storage: { bucketName: 'my-bucket' } },
2025-08-04 12:18:58 -07:00
distributed: { role: 'reader' } // Optimized for queries
})
// Option 3: Via read/write mode (role auto-inferred)
const writer = createAutoBrainy({
2025-08-04 14:33:39 -07:00
storage: { s3Storage: { bucketName: 'my-bucket' } },
2025-08-04 12:18:58 -07:00
writeOnly: true, // Automatically becomes 'writer' role
distributed: true
})
const reader = createAutoBrainy({
2025-08-04 14:33:39 -07:00
storage: { s3Storage: { bucketName: 'my-bucket' } },
2025-08-04 12:18:58 -07:00
readOnly: true, // Automatically becomes 'reader' role
distributed: true
})
```
### Key Distributed Features
**🎯 Explicit Role Configuration**
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
- Roles must be explicitly set (no dangerous auto-assignment)
- Can use environment variables, config, or read/write modes
- Clear separation between writers and readers
**#️ ⃣ Hash-Based Partitioning**
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
- Handles multiple writers with different data types
- Even distribution across partitions
- No semantic conflicts with mixed data
**🏷️ Domain Tagging**
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
- Automatic domain detection (medical, legal, product, etc.)
- Filter searches by domain
- Logical separation without complexity
```javascript
// Data is automatically tagged with domains
2025-08-04 14:33:39 -07:00
await brainy.add({
symptoms: "fever",
diagnosis: "flu"
2025-08-04 12:18:58 -07:00
}, metadata) // Auto-tagged as 'medical'
// Search within specific domains
const medicalResults = await brainy.search(query, 10, {
filter: { domain: 'medical' }
})
```
**📊 Health Monitoring**
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
- Real-time health metrics
- Automatic dead instance cleanup
- Performance tracking
```javascript
// Get health status
const health = brainy.getHealthStatus()
// {
// status: 'healthy',
// role: 'reader',
// vectorCount: 1000000,
// cacheHitRate: 0.95,
// requestsPerSecond: 150
// }
```
**⚡ Role-Optimized Performance**
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
- **Readers**: 80% memory for cache, aggressive prefetching
- **Writers**: Optimized write batching, minimal cache
- **Hybrid**: Adaptive based on workload
### Deployment Examples
**Docker Compose**
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
```yaml
services:
writer:
image: myapp
environment:
BRAINY_ROLE: writer # Optional - auto-detects
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
reader:
image: myapp
environment:
BRAINY_ROLE: reader # Optional - auto-detects
scale: 5
```
**Kubernetes**
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
```yaml
# Automatically detects role from deployment type
apiVersion: apps/v1
kind: Deployment
metadata:
name: brainy-readers
spec:
replicas: 10 # Multiple readers
template:
spec:
containers:
2025-08-04 14:33:39 -07:00
- name: app
image: myapp
# Role auto-detected as 'reader' (multiple replicas)
2025-08-04 12:18:58 -07:00
```
**Benefits**
2025-08-04 14:33:39 -07:00
2025-08-04 12:18:58 -07:00
- ✅ **50-70% faster searches** with parallel readers
- ✅ **No coordination complexity** - Shared JSON config in S3
- ✅ **Zero downtime scaling** - Add/remove instances anytime
- ✅ **Automatic failover** - Dead instances cleaned up automatically
2025-08-04 10:14:33 -07:00
## 🤔 Why Choose Brainy?
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### vs. Traditional Databases
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
❌ **PostgreSQL with pgvector** - Requires complex setup, tuning, and DevOps expertise
✅ **Brainy** - Zero config, auto-optimizes, works everywhere from browser to cloud
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### vs. Vector Databases
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
❌ **Pinecone/Weaviate/Qdrant** - Cloud-only, expensive, vendor lock-in
✅ **Brainy** - Run locally, in browser, or cloud. Your choice, your data
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### vs. Graph Databases
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
❌ **Neo4j** - Great for graphs, no vector support
✅ **Brainy** - Vectors + graphs in one. Best of both worlds
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### vs. DIY Solutions
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
❌ **Building your own** - Months of work, optimization nightmares
✅ **Brainy** - Production-ready in 30 seconds
2025-06-24 11:41:30 -07:00
2025-08-04 10:14:33 -07:00
## 🚀 Getting Started in 30 Seconds
2025-06-24 11:41:30 -07:00
2025-08-04 10:14:33 -07:00
### React
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```jsx
import { createAutoBrainy } from 'brainy'
import { useEffect, useState } from 'react'
2025-06-24 11:41:30 -07:00
2025-08-04 10:14:33 -07:00
function SemanticSearch() {
const [brainy] = useState(() => createAutoBrainy())
const [results, setResults] = useState([])
2025-06-24 11:41:30 -07:00
2025-08-04 10:14:33 -07:00
const search = async (query) => {
const items = await brainy.searchText(query, 10)
setResults(items)
}
return (
2025-08-04 14:33:39 -07:00
< input onChange = {(e) = > search(e.target.value)}
2025-08-04 10:14:33 -07:00
placeholder="Search by meaning..." />
)
}
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
### Angular
2025-08-04 08:56:05 -07:00
```typescript
2025-08-04 10:14:33 -07:00
import { Component, OnInit } from '@angular/core '
import { createAutoBrainy } from 'brainy'
@Component ({
selector: 'app-search',
template: `
< input ( input ) = " search ( $ event . target . value ) "
placeholder="Semantic search...">
< div * ngFor = "let result of results" >
{{ result.text }}
< / div >
`
2025-08-04 08:56:05 -07:00
})
2025-08-04 10:14:33 -07:00
export class SearchComponent implements OnInit {
brainy = createAutoBrainy()
results = []
2025-06-24 11:41:30 -07:00
2025-08-04 10:14:33 -07:00
async search(query: string) {
this.results = await this.brainy.searchText(query, 10)
2025-08-01 08:56:41 -07:00
}
2025-08-04 10:14:33 -07:00
}
```
2025-06-24 11:41:30 -07:00
2025-08-04 10:14:33 -07:00
### Vue 3
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```vue
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
< script setup >
2025-08-04 14:33:39 -07:00
import { createAutoBrainy } from 'brainy'
import { ref } from 'vue'
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
const brainy = createAutoBrainy()
const results = ref([])
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
const search = async (query) => {
results.value = await brainy.searchText(query, 10)
}
2025-08-04 10:14:33 -07:00
< / script >
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
< template >
2025-08-04 14:33:39 -07:00
< input @input =" search ($ event . target . value )"
2025-08-04 10:14:33 -07:00
placeholder="Find similar content...">
< div v-for = "result in results" :key = "result.id" >
{{ result.text }}
< / div >
< / template >
```
### Svelte
```svelte
< script >
import { createAutoBrainy } from 'brainy'
const brainy = createAutoBrainy()
let results = []
async function search(e) {
results = await brainy.searchText(e.target.value, 10)
}
< / script >
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
< input on:input = {search} placeholder = "AI-powered search..." >
{#each results as result}
< div > {result.text}< / div >
{/each}
2025-06-24 11:41:30 -07:00
```
2025-08-04 10:14:33 -07:00
### Next.js (App Router)
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```jsx
// app/search/page.js
import { createAutoBrainy } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
export default function SearchPage() {
async function search(formData) {
'use server'
const brainy = createAutoBrainy({ bucketName: 'vectors' })
const query = formData.get('query')
return await brainy.searchText(query, 10)
}
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
return (
< form action = {search} >
< input name = "query" placeholder = "Search..." / >
< button type = "submit" > Search< / button >
< / form >
)
}
```
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Node.js / Bun / Deno
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
const brainy = createAutoBrainy()
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Add some data
await brainy.add("TypeScript is a typed superset of JavaScript", {
category: 'programming'
})
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Search for similar content
const results = await brainy.searchText("JavaScript with types", 5)
console.log(results)
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
### Vanilla JavaScript
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```html
<!DOCTYPE html>
< html >
< head >
< script type = "module" >
import { createAutoBrainy } from 'https://unpkg.com/brainy/dist/unified.min.js'
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
window.brainy = createAutoBrainy()
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
window.search = async function(query) {
const results = await brainy.searchText(query, 10)
2025-08-04 14:33:39 -07:00
document.getElementById('results').innerHTML =
2025-08-04 10:14:33 -07:00
results.map(r => `<div>${r.text}</div>` ).join('')
}
< / script >
< / head >
< body >
2025-08-04 14:33:39 -07:00
< input onkeyup = "search(this.value)" placeholder = "Search..." >
< div id = "results" > < / div >
2025-08-04 10:14:33 -07:00
< / body >
< / html >
```
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Cloudflare Workers
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
export default {
async fetch(request, env) {
2025-08-04 14:33:39 -07:00
const brainy = createAutoBrainy({
bucketName: env.R2_BUCKET
2025-08-04 10:14:33 -07:00
})
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
const url = new URL(request.url)
const query = url.searchParams.get('q')
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
const results = await brainy.searchText(query, 10)
return Response.json(results)
2025-08-04 08:56:05 -07:00
}
2025-08-04 10:14:33 -07:00
}
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
### AWS Lambda
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
export const handler = async (event) => {
2025-08-04 14:33:39 -07:00
const brainy = createAutoBrainy({
bucketName: process.env.S3_BUCKET
2025-08-04 10:14:33 -07:00
})
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
const results = await brainy.searchText(event.query, 10)
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
return {
statusCode: 200,
body: JSON.stringify(results)
2025-08-04 08:56:05 -07:00
}
2025-08-04 10:14:33 -07:00
}
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
### Azure Functions
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
module.exports = async function(context, req) {
2025-08-04 10:14:33 -07:00
const brainy = createAutoBrainy({
bucketName: process.env.AZURE_STORAGE_CONTAINER
})
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
const results = await brainy.searchText(req.query.q, 10)
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
context.res = {
body: results
2025-08-04 08:56:05 -07:00
}
2025-08-04 10:14:33 -07:00
}
2025-08-04 08:56:05 -07:00
```
2025-06-24 11:41:30 -07:00
2025-08-04 10:14:33 -07:00
### Google Cloud Functions
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
export const searchHandler = async (req, res) => {
const brainy = createAutoBrainy({
bucketName: process.env.GCS_BUCKET
})
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
const results = await brainy.searchText(req.query.q, 10)
res.json(results)
}
2025-06-24 11:41:30 -07:00
```
2025-08-04 10:14:33 -07:00
### Google Cloud Run
2025-08-01 08:56:41 -07:00
2025-08-04 10:14:33 -07:00
```dockerfile
# Dockerfile
FROM node:20-alpine
USER node
WORKDIR /app
COPY package*.json ./
RUN npm install brainy
COPY . .
CMD ["node", "server.js"]
```
2025-07-31 17:57:14 -07:00
2025-08-04 10:14:33 -07:00
```javascript
// server.js
import { createAutoBrainy } from 'brainy'
import express from 'express'
2025-07-31 17:57:14 -07:00
2025-08-04 10:14:33 -07:00
const app = express()
const brainy = createAutoBrainy({
bucketName: process.env.GCS_BUCKET
2025-08-04 08:56:05 -07:00
})
2025-07-31 17:57:14 -07:00
2025-08-04 10:14:33 -07:00
app.get('/search', async (req, res) => {
const results = await brainy.searchText(req.query.q, 10)
res.json(results)
})
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
const port = process.env.PORT || 8080
app.listen(port, () => console.log(`Brainy on Cloud Run: ${port}` ))
2025-08-04 08:56:05 -07:00
```
2025-07-31 17:57:14 -07:00
2025-07-28 10:04:45 -07:00
```bash
2025-08-04 10:14:33 -07:00
# Deploy to Cloud Run
gcloud run deploy brainy-api \
--source . \
--platform managed \
--region us-central1 \
--allow-unauthenticated
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
### Vercel Edge Functions
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
2025-07-31 13:40:28 -07:00
2025-08-04 10:14:33 -07:00
export const config = {
runtime: 'edge'
}
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
export default async function handler(request) {
const brainy = createAutoBrainy()
const { searchParams } = new URL(request.url)
const query = searchParams.get('q')
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
const results = await brainy.searchText(query, 10)
return Response.json(results)
}
```
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Netlify Functions
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
export async function handler(event, context) {
const brainy = createAutoBrainy()
const query = event.queryStringParameters.q
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
const results = await brainy.searchText(query, 10)
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
return {
statusCode: 200,
body: JSON.stringify(results)
2025-08-04 08:56:05 -07:00
}
2025-08-04 10:14:33 -07:00
}
2025-07-31 13:40:28 -07:00
```
2025-08-04 10:14:33 -07:00
### Supabase Edge Functions
2025-08-04 08:56:05 -07:00
```typescript
2025-08-04 10:14:33 -07:00
import { createAutoBrainy } from 'brainy'
import { serve } from 'https://deno.land/std@0 .168.0/http/server.ts'
serve(async (req) => {
const brainy = createAutoBrainy()
const url = new URL(req.url)
const query = url.searchParams.get('q')
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
const results = await brainy.searchText(query, 10)
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
return new Response(JSON.stringify(results), {
headers: { 'Content-Type': 'application/json' }
})
2025-08-04 08:56:05 -07:00
})
```
2025-08-04 10:14:33 -07:00
### Docker Container
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```dockerfile
FROM node:20-alpine
USER node
WORKDIR /app
COPY package*.json ./
RUN npm install brainy
COPY . .
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
CMD ["node", "server.js"]
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
```javascript
// server.js
import { createAutoBrainy } from 'brainy'
import express from 'express'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
const app = express()
const brainy = createAutoBrainy()
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
app.get('/search', async (req, res) => {
const results = await brainy.searchText(req.query.q, 10)
res.json(results)
})
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
app.listen(3000, () => console.log('Brainy running on port 3000'))
```
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Kubernetes
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: brainy-api
spec:
replicas: 3
template:
spec:
containers:
2025-08-04 14:33:39 -07:00
- name: brainy
image: your-registry/brainy-api:latest
env:
- name: S3_BUCKET
value: "your-vector-bucket"
2025-08-04 10:14:33 -07:00
```
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Railway.app
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
// server.js
import { createAutoBrainy } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
const brainy = createAutoBrainy({
bucketName: process.env.RAILWAY_VOLUME_NAME
})
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Railway automatically handles the rest!
```
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Render.com
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```yaml
# render.yaml
services:
- type: web
name: brainy-api
env: node
buildCommand: npm install brainy
startCommand: node server.js
envVars:
- key: BRAINY_STORAGE
value: persistent-disk
```
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 🚀 Quick Examples
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Basic Usage
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { BrainyData, NounType, VerbType } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Initialize
2025-08-04 08:56:05 -07:00
const db = new BrainyData()
await db.init()
2025-08-04 10:14:33 -07:00
// Add data (automatically vectorized)
const catId = await db.add("Cats are independent pets", {
noun: NounType.Thing,
category: 'animal'
})
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Search for similar items
const results = await db.searchText("feline pets", 5)
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Add relationships
await db.addVerb(catId, dogId, {
verb: VerbType.RelatedTo,
description: 'Both are pets'
})
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
### AutoBrainy (Recommended)
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createAutoBrainy } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Everything auto-configured!
const brainy = createAutoBrainy()
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Just start using it
await brainy.addVector({ id: '1', vector: [0.1, 0.2, 0.3], text: 'Hello' })
const results = await brainy.search([0.1, 0.2, 0.3], 10)
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
### Scenario-Based Setup
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
```javascript
import { createQuickBrainy } from 'brainy'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Choose your scale: 'small', 'medium', 'large', 'enterprise'
const brainy = await createQuickBrainy('large', {
bucketName: 'my-vector-db'
2025-08-04 08:56:05 -07:00
})
```
2025-07-31 13:40:28 -07:00
2025-08-04 10:14:33 -07:00
### With Offline Models
2025-08-04 08:56:05 -07:00
```javascript
2025-08-04 10:14:33 -07:00
import { createAutoBrainy } from 'brainy'
import { BundledUniversalSentenceEncoder } from '@soulcraft/brainy -models'
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Use bundled model for offline operation
const brainy = createAutoBrainy({
embeddingModel: BundledUniversalSentenceEncoder,
// Model loads from local files, no network needed!
})
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
// Works exactly the same, but 100% offline
2025-08-04 14:33:39 -07:00
await brainy.add("This works without internet!", {
noun: NounType.Content
2025-08-04 10:14:33 -07:00
})
2025-08-04 08:56:05 -07:00
```
2025-08-04 10:14:33 -07:00
## 🌐 Live Demo
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
**[Try the interactive demo ](https://soulcraft-research.github.io/brainy/demo/index.html )** - See Brainy in action with
animations and examples.
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 🔧 Environment Support
2025-08-04 08:56:05 -07:00
2025-08-04 14:33:39 -07:00
| Environment | Storage | Threading | Auto-Configured |
|----------------|---------------|----------------|-----------------|
| Browser | OPFS | Web Workers | ✅ |
| Node.js | FileSystem/S3 | Worker Threads | ✅ |
| Serverless | Memory/S3 | Limited | ✅ |
| Edge Functions | Memory/KV | Limited | ✅ |
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 📚 Documentation
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Getting Started
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- [**Quick Start Guide** ](docs/getting-started/ ) - Get up and running in minutes
- [**Installation** ](docs/getting-started/installation.md ) - Detailed setup instructions
- [**Environment Setup** ](docs/getting-started/environment-setup.md ) - Platform-specific configuration
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### User Guides
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- [**Search and Metadata** ](docs/user-guides/ ) - Advanced search techniques
- [**JSON Document Search** ](docs/guides/json-document-search.md ) - Field-based searching
- [**Production Migration** ](docs/guides/production-migration-guide.md ) - Deployment best practices
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### API Reference
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- [**Core API** ](docs/api-reference/ ) - Complete method reference
- [**Configuration Options** ](docs/api-reference/configuration.md ) - All configuration parameters
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Optimization & Scaling
2025-08-04 14:33:39 -07:00
- [**Performance Features Guide** ](docs/PERFORMANCE_FEATURES.md ) - Advanced caching, auto-configuration, and
optimization
2025-08-04 10:14:33 -07:00
- [**Large-Scale Optimizations** ](docs/optimization-guides/ ) - Handle millions of vectors
- [**Memory Management** ](docs/optimization-guides/memory-optimization.md ) - Efficient resource usage
- [**S3 Migration Guide** ](docs/optimization-guides/s3-migration-guide.md ) - Cloud storage setup
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Examples & Patterns
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- [**Code Examples** ](docs/examples/ ) - Real-world usage patterns
- [**Integrations** ](docs/examples/integrations.md ) - Third-party services
- [**Performance Patterns** ](docs/examples/performance.md ) - Optimization techniques
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
### Technical Documentation
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- [**Architecture Overview** ](docs/technical/ ) - System design and internals
- [**Testing Guide** ](docs/technical/TESTING.md ) - Testing strategies
- [**Statistics & Monitoring** ](docs/technical/STATISTICS.md ) - Performance tracking
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 🤝 Contributing
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
We welcome contributions! Please see:
2025-08-04 14:33:39 -07:00
2025-08-04 10:14:33 -07:00
- [Contributing Guidelines ](CONTRIBUTING.md )
- [Developer Documentation ](docs/development/DEVELOPERS.md )
- [Code of Conduct ](CODE_OF_CONDUCT.md )
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 📄 License
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
[MIT ](LICENSE )
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
## 🔗 Related Projects
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
- [**Cartographer** ](https://github.com/sodal-project/cartographer ) - Standardized interfaces for Brainy
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
---
2025-08-04 08:56:05 -07:00
2025-08-04 10:14:33 -07:00
< div align = "center" >
< strong > Ready to build something amazing? Get started with Brainy today!< / strong >
< / div >