Octopus
Multi-Area Deployments
A multi-area Octopus deployment serves multiple business domains from a single installation. This page covers architecture patterns, performance considerations, area-level monitoring, and the recommended approach for enterprise-scale deployments with 10+ areas.
Architecture Overview
// Typical enterprise multi-area deployment:
Octopus API Cluster (3 nodes)
├── Shared Infrastructure
│ ├── SQL Server (Octopus_* tables — all tenants, all areas)
│ ├── Qdrant (separate collection per agent → per area effectively)
│ └── Redis (session cache, distributed token counting)
└── Logic Layer
├── Area: HR → 3 agents × 5 knowledge docs × 8 tools
├── Area: Finance → 2 agents × 4 knowledge docs × 6 tools
├── Area: IT → 4 agents × 10 knowledge docs × 12 tools
├── Area: Legal → 1 agent × 8 knowledge docs × 3 tools
└── Area: Public → 1 agent × 3 knowledge docs × 0 tools (public chatbot)
Performance Considerations at Scale
| Concern | Impact | Mitigation |
|---|---|---|
| Many vector collections in Qdrant | Memory overhead per collection | Qdrant's collection memory is lazy-loaded; 50+ collections are fine on a 16GB instance |
| SQL connection pool | Concurrent agents share the same pool | Set appropriate pool size; read replicas for read-heavy areas |
| LLM API rate limits | High concurrent usage hits provider limits | Configure per-area rate limiting; use multiple API keys if needed |
| Embedding API calls | Every turn triggers an embedding call | Cache query embeddings for identical messages within a short window |
Area-Level Monitoring
// Per-area metrics exposed via /metrics (Prometheus format):
octopus_turns_total{area="HR", agent="hr_assistant"} 1247
octopus_turns_total{area="Finance", agent="expense_advisor"} 328
octopus_tool_calls_total{area="HR", tool="get_leave_balance"} 892
octopus_semantic_retrievals{area="HR", agent="hr_assistant", score_bucket="0.75-0.85"} 456
octopus_token_usage{area="HR", type="input"} 1_234_567
octopus_token_usage{area="HR", type="output"} 312_890
// Area-specific dashboards recommended in Grafana for area-by-area monitoring
Multi-Tenant vs. Multi-Area
| Dimension | Multi-Tenant | Multi-Area |
|---|---|---|
| Separation boundary | Company / organisation | Department / business domain |
| Data isolation | Hard isolation — different SQL rows by TenantId | Logical isolation — different agents within same tenant |
| Admin scope | Tenant admin cannot see other tenants | Area admin cannot see other areas (unless they have OctopusTenantAdmin) |
| Knowledge sharing | Not possible across tenants | Possible via shared agent collection |
Start Simple — Add Areas as Needed
Begin with a single area and add more areas as your deployment matures and distinct domain requirements emerge. Migrating agents between areas is straightforward — it is a configuration change, not a data migration.