Files
Mai/.planning/codebase/INTEGRATIONS.md
Mai Development f238a958a0 docs: map existing codebase
- STACK.md - Technologies and dependencies
- ARCHITECTURE.md - System design and patterns
- STRUCTURE.md - Directory layout
- CONVENTIONS.md - Code style and patterns
- TESTING.md - Test structure
- INTEGRATIONS.md - External services
- CONCERNS.md - Technical debt and issues
2026-01-26 23:14:44 -05:00

130 lines
4.2 KiB
Markdown

# External Integrations
**Analysis Date:** 2026-01-26
## APIs & External Services
**Model Inference:**
- LMStudio - Local model server for inference and model switching
- SDK/Client: LMStudio Python API
- Auth: None (local service, no authentication required)
- Configuration: model_path env var, endpoint URL
- Ollama - Alternative local model management system
- SDK/Client: Ollama REST API (HTTP)
- Auth: None (local service)
- Purpose: Model loading, switching, inference with resource detection
**Communication & Approvals:**
- Discord - Bot interface for conversation and change approvals
- SDK/Client: discord.py library
- Auth: DISCORD_BOT_TOKEN env variable
- Purpose: Multi-turn conversations, approval reactions (thumbs up/down), status updates
## Data Storage
**Databases:**
- SQLite3 (local file-based)
- Connection: Local file path, no remote connection
- Client: Python sqlite3 (stdlib) or SQLAlchemy ORM
- Purpose: Persistent conversation history, memory compression, learned patterns
- Location: Local filesystem (.db files)
**File Storage:**
- Local filesystem only - Git-tracked code changes, conversation history backups
- No cloud storage integration in v1
**Caching:**
- In-memory caching for current conversation context
- Redis: Not used in v1 (local-first constraint)
- Model context window management: Token-based cache within model inference
## Authentication & Identity
**Auth Provider:**
- Custom local auth - No external identity provider
- Implementation:
- Discord user ID as conversation context identifier
- Optional local password/PIN for CLI access
- No OAuth/cloud identity providers (offline-first requirement)
## Monitoring & Observability
**Error Tracking:**
- None (local only, no error reporting service)
- Local audit logging to SQLite instead
**Logs:**
- File-based logging to `.logs/` directory
- Format: Structured JSON logs with timestamp, level, context
- Rotation: Size-based or time-based rotation strategy
- No external log aggregation (offline-first)
## CI/CD & Deployment
**Hosting:**
- Local machine only (desktop/laptop with RTX 3060+)
- No cloud hosting in v1
**CI Pipeline:**
- GitHub Actions for Discord webhook on push
- Workflow: `.github/workflows/discord_sync.yml`
- Trigger: Push events
- Action: POST to Discord webhook for notification
**Git Integration:**
- All Mai's self-modifications committed automatically with git
- Local git repo tracking all code changes
- Commit messages include decision context and review results
## Environment Configuration
**Required env vars:**
- `DISCORD_BOT_TOKEN` - Discord bot authentication
- `LMSTUDIO_ENDPOINT` - LMStudio API URL (default: localhost:8000)
- `OLLAMA_ENDPOINT` - Ollama API URL (optional alternative, default: localhost:11434)
- `DISCORD_USER_ID` - User Discord ID for approval requests
- `MEMORY_DB_PATH` - SQLite database file location
- `MODEL_CACHE_DIR` - Directory for model files
- `CPU_CORES_AVAILABLE` - System CPU count for resource management
- `GPU_VRAM_AVAILABLE` - VRAM in GB for model selection
- `SANDBOX_DOCKER_IMAGE` - Docker image ID for code sandbox execution
**Secrets location:**
- `.env` file (Python-dotenv) for local development
- Environment variables for production/runtime
- Git-ignored: `.env` not committed
## Webhooks & Callbacks
**Incoming:**
- Discord message webhooks - Handled by discord.py bot event listeners
- No external webhook endpoints in v1
**Outgoing:**
- Discord webhook for git notifications (configured in GitHub Actions)
- Endpoint: Stored in GitHub secrets as WEBHOOK
- Triggered on: git push events
- Payload: Git commit information (author, message, timestamp)
**Model Callback Handling:**
- LMStudio streaming callbacks for token-by-token responses
- Ollama streaming responses for incremental model output
## Code Execution Sandbox
**Sandbox Environment:**
- Docker container with resource limits
- SDK: Docker SDK for Python (docker-py)
- Environment: Isolated Linux container
- Resource limits: CPU cores, RAM, network restrictions
**Risk Assessment:**
- Multi-level risk evaluation (LOW/MEDIUM/HIGH/BLOCKED)
- AST validation before container execution
- Second-agent review via Claude/OpenCode API
---
*Integration audit: 2026-01-26*