grepai-storage-gob
GrepAI Storage with GOB
This skill covers using GOB (Go Binary) as the storage backend for GrepAI, the default and simplest option.
When to Use This Skill
- Single developer projects
- Small to medium codebases
- Simple setup without external dependencies
- Local development environments
What is GOB Storage?
GOB is Go's native binary serialization format. GrepAI uses it to store:
- Vector embeddings
- File metadata
- Chunk information
Everything is stored in a single local file.
Advantages
| Benefit | Description |
|---|---|
| 🚀 Simple | No external services needed |
| ⚡ Fast setup | Works immediately |
| 📁 Portable | Single file, easy to backup |
| 💰 Free | No infrastructure costs |
| 🔒 Private | Data stays local |
Limitations
| Limitation | Description |
|---|---|
| 📏 Scalability | Not ideal for very large codebases |
| 👤 Single user | No concurrent access |
| 🔄 No sharing | Can't share index across machines |
| 💾 Memory | Loads into RAM for searches |
Configuration
Default Configuration
GOB is the default backend. Minimal config:
# .grepai/config.yaml
store:
backend: gob
Explicit Configuration
store:
backend: gob
# Index stored in .grepai/index.gob (automatic)
Storage Location
GOB storage creates files in your project's .grepai/ directory:
.grepai/
├── config.yaml # Configuration
├── index.gob # Vector embeddings
└── symbols.gob # Symbol index for trace
File Sizes
Approximate .grepai/index.gob sizes:
| Codebase | Files | Chunks | Index Size |
|---|---|---|---|
| Small | 100 | 500 | ~5 MB |
| Medium | 1,000 | 5,000 | ~50 MB |
| Large | 10,000 | 50,000 | ~500 MB |
Operations
Creating the Index
# Initialize project
grepai init
# Start indexing (creates index.gob)
grepai watch
Checking Index Status
grepai status
# Output:
# Index: .grepai/index.gob
# Files: 245
# Chunks: 1,234
# Size: 12.5 MB
# Last updated: 2025-01-28 10:30:00
Backing Up the Index
# Simple file copy
cp .grepai/index.gob .grepai/index.gob.backup
Clearing the Index
# Delete and re-index
rm .grepai/index.gob
grepai watch
Moving to a New Machine
# Copy entire .grepai directory
cp -r .grepai /path/to/new/location/
# Note: Only works if using same embedding model
Performance Considerations
Memory Usage
GOB loads the entire index into RAM for searches:
| Index Size | RAM Usage |
|---|---|
| 10 MB | ~20 MB |
| 50 MB | ~100 MB |
| 500 MB | ~1 GB |
Search Speed
GOB provides fast searches for typical codebases:
| Codebase Size | Search Time |
|---|---|
| Small (100 files) | <50ms |
| Medium (1K files) | <200ms |
| Large (10K files) | <1s |
When to Upgrade
Consider PostgreSQL or Qdrant when:
- Index exceeds 1 GB
- Need concurrent access
- Want to share index across team
- Codebase has 50K+ files
.gitignore Configuration
Add .grepai/ to your .gitignore:
# GrepAI (machine-specific index)
.grepai/
Why: The index is machine-specific because:
- Contains binary embeddings
- Tied to the embedding model used
- Each machine should generate its own
Sharing Index (Not Recommended)
While you can copy the index file, it's not recommended because:
- Must use identical embedding model
- File paths are absolute
- Different machines may have different code versions
Better approach: Each developer runs their own grepai watch.
Migrating to Other Backends
To PostgreSQL
- Update config:
store:
backend: postgres
postgres:
dsn: postgres://user:pass@localhost:5432/grepai
- Re-index:
rm .grepai/index.gob
grepai watch
To Qdrant
- Update config:
store:
backend: qdrant
qdrant:
endpoint: localhost
port: 6334
- Re-index:
rm .grepai/index.gob
grepai watch
Common Issues
❌ Problem: Index file too large ✅ Solution: Add more ignore patterns or migrate to PostgreSQL/Qdrant
❌ Problem: Slow searches on large codebase ✅ Solution: Migrate to Qdrant for better performance
❌ Problem: Corrupted index ✅ Solution: Delete and re-index:
rm .grepai/index.gob .grepai/symbols.gob
grepai watch
❌ Problem: "Index not found" error
✅ Solution: Run grepai watch to create the index
Best Practices
- Use for small/medium projects: Up to ~10K files
- Add to .gitignore: Don't commit the index
- Backup before major changes: Copy index.gob before experiments
- Re-index after model changes: If you change embedding models
- Monitor file size: Migrate if index exceeds 1GB
Output Format
GOB storage status:
✅ GOB Storage Configured
Backend: GOB (local file)
Index: .grepai/index.gob
Size: 12.5 MB
Contents:
- Files: 245
- Chunks: 1,234
- Vectors: 1,234 × 768 dimensions
Performance:
- Search latency: <100ms
- Memory usage: ~25 MB