# Installation Guide This guide covers installing Brainy and setting up your development environment. ## 📦 Package Installation ### Core Package ```bash npm install @soulcraft/brainy ``` The core package includes everything you need: - ✅ Vector database with HNSW indexing - ✅ Auto-configuration and optimization - ✅ All storage adapters (Memory, FileSystem, OPFS, S3) - ✅ TensorFlow.js integration - ✅ Cross-environment compatibility ### Optional Packages #### CLI Tools ```bash npm install -g @soulcraft/brainy-cli ``` Command-line interface for: - Database management - Bulk operations - Performance testing - Data visualization #### Web Service ```bash npm install @soulcraft/brainy-web-service ``` REST API wrapper for: - HTTP endpoints - Remote database access - Microservice integration ## 🌐 Environment Requirements ### Node.js - **Minimum**: Node.js 24.4.0+ - **Recommended**: Node.js 20+ or latest LTS - **Package Manager**: npm, yarn, or pnpm ```bash node --version # Should be 24.4.0+ npm --version # Any recent version ``` ### Browser Modern browsers with ES Modules support: - **Chrome**: 86+ - **Edge**: 86+ - **Opera**: 72+ - **Firefox**: 78+ - **Safari**: 14+ #### Optional Browser Features - **OPFS Support**: For persistent storage (Chrome 86+, Edge 86+) - **Web Workers**: For parallel processing (all modern browsers) - **WebGL**: For GPU acceleration (most modern browsers) ### Memory Requirements | Use Case | Minimum RAM | Recommended RAM | |----------|-------------|-----------------| | Development | 512MB | 2GB | | Small datasets (<10k vectors) | 1GB | 4GB | | Medium datasets (<100k vectors) | 2GB | 8GB | | Large datasets (1M+ vectors) | 4GB | 16GB+ | ### Storage Requirements | Dataset Size | Minimum Storage | Recommended Storage | |-------------|-----------------|-------------------| | <10k vectors | 100MB | 500MB | | <100k vectors | 1GB | 5GB | | <1M vectors | 10GB | 50GB | | 1M+ vectors | 50GB+ | Dataset size × 3 | ## ✅ Installation Verification ### Basic Verification ```typescript import { BrainyData } from '@soulcraft/brainy' console.log('Brainy installed successfully!') // Test auto-configuration import { createAutoBrainy } from '@soulcraft/brainy' const brainy = createAutoBrainy() console.log('Auto-configuration works!') ``` ### Environment Detection Test ```typescript import { environment } from '@soulcraft/brainy' console.log(`Environment: ${ environment.isBrowser ? 'Browser' : environment.isNode ? 'Node.js' : 'Unknown' }`) console.log(`Threading available: ${environment.isThreadingAvailable()}`) ``` ### Storage Test ```typescript import { createAutoBrainy } from '@soulcraft/brainy' const brainy = createAutoBrainy() // Add a test vector await brainy.addVector({ id: 'test-1', vector: [0.1, 0.2, 0.3], text: 'Installation test' }) // Search for it const results = await brainy.search([0.1, 0.2, 0.3], 1) console.log('Storage test passed:', results.length > 0) ``` ## 🔧 Development Setup ### TypeScript Configuration Add to your `tsconfig.json`: ```json { "compilerOptions": { "target": "ES2022", "module": "ESNext", "moduleResolution": "node", "lib": ["ES2022", "DOM", "WebWorker"], "allowSyntheticDefaultImports": true, "esModuleInterop": true, "skipLibCheck": true } } ``` ### Bundler Configuration #### Vite ```typescript // vite.config.ts import { defineConfig } from 'vite' export default defineConfig({ optimizeDeps: { include: ['@soulcraft/brainy'] }, define: { global: 'globalThis' } }) ``` #### Webpack ```javascript // webpack.config.js module.exports = { resolve: { fallback: { "buffer": require.resolve("buffer"), "util": require.resolve("util") } }, plugins: [ new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'], process: 'process/browser' }) ] } ``` #### Rollup ```javascript // rollup.config.js import { nodeResolve } from '@rollup/plugin-node-resolve' import { nodePolyfills } from 'rollup-plugin-polyfill-node' export default { plugins: [ nodePolyfills(), nodeResolve({ browser: true, preferBuiltins: false }) ] } ``` ## 🚀 Production Setup ### Environment Variables For S3 storage in production: ```bash # AWS Configuration AWS_ACCESS_KEY_ID=your_access_key AWS_SECRET_ACCESS_KEY=your_secret_key AWS_REGION=us-east-1 # Optional S3 Configuration S3_BUCKET_NAME=your-vector-storage S3_ENDPOINT=https://s3.amazonaws.com ``` ### Docker ```dockerfile FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 # Set memory limit for large datasets ENV NODE_OPTIONS="--max-old-space-size=8192" CMD ["node", "index.js"] ``` ### Performance Optimizations ```typescript // Production configuration import { createAutoBrainy } from '@soulcraft/brainy' const brainy = createAutoBrainy({ // S3 storage for persistence bucketName: process.env.S3_BUCKET_NAME, region: process.env.AWS_REGION }) // System auto-configures based on: // - Available memory // - CPU cores // - Dataset size // - Environment type ``` ## 🔍 Troubleshooting ### Common Issues #### "Module not found" errors **Solution**: Ensure your bundler is configured for ES modules: ```json { "type": "module" } ``` #### Out of memory errors **Solution**: Increase Node.js memory limit: ```bash node --max-old-space-size=8192 your-script.js ``` #### TensorFlow.js loading issues **Solution**: The auto-patcher handles this, but if needed: ```typescript import '@soulcraft/brainy/setup' // Import before other modules import { BrainyData } from '@soulcraft/brainy' ``` #### Browser compatibility issues **Solution**: Check browser requirements and enable feature detection: ```typescript import { environment } from '@soulcraft/brainy' if (!environment.isBrowser) { console.error('This app requires a modern browser') } ``` ### Getting Help - 📚 [Troubleshooting Guide](../troubleshooting/) - 🐛 [GitHub Issues](https://github.com/soulcraftlabs/brainy/issues) - 💬 [GitHub Discussions](https://github.com/soulcraftlabs/brainy/discussions) ## ✅ Next Steps Once installation is complete: 1. **[Quick Start Guide](quick-start.md)** - Your first Brainy app 2. **[Environment Setup](environment-setup.md)** - Optimize your environment 3. **[First Steps](first-steps.md)** - Learn core concepts