# .gbdrive File Storage

The `.gbdrive` system manages file storage and retrieval using MinIO (S3-compatible object storage).

## What is .gbdrive?

`.gbdrive` provides:
- Centralized file storage for all packages
- Versioning and backup capabilities
- Access control and organization
- Integration with knowledge bases and tools

## Storage Structure

Files are organized in a bucket-per-bot structure:

```
org-prefixbot-name.gbai/
├── .gbdialog/
│   └── [script files]
├── .gbkb/
│   └── [collection folders]
├── .gbot/
│   └── config.csv
├── .gbtheme/
│   └── [theme files]
└── user-uploads/
    └── [user files]
```

## File Operations

### Uploading Files
```basic
REM Files can be uploaded via API or interface
REM They are stored in the bot's MinIO bucket
```

### Retrieving Files  
```basic
REM Get file content as text
GET ".gbdialog/start.bas"

REM Download files via URL
GET "user-uploads/document.pdf"
```

### File Management
- Automatic synchronization on bot start
- Change detection for hot reloading
- Version history maintenance
- Backup and restore capabilities

## Integration Points

### Knowledge Bases
- Documents are stored in .gbkb collections
- Automatic processing and embedding
- Version tracking for updates

### Themes
- Static assets served from .gbtheme
- CSS, JS, and HTML files
- Caching for performance

### Tools
- Tool scripts stored in .gbdialog
- AST and compiled versions
- Dependency management

## Access Control

Files have different access levels:
- **Public**: Accessible without authentication
- **Authenticated**: Requires user login
- **Bot-only**: Internal bot files
- **Admin**: Configuration and sensitive files

## Storage Backends

Supported storage options:
- **MinIO** (default): Self-hosted S3-compatible
- **AWS S3**: Cloud object storage
- **Local filesystem**: Development and testing
- **Hybrid**: Multiple backends with fallback
