# SympoziumInstance #sympozium #crd #instance ## Definicja `SympoziumInstance` to centralny CRD reprezentujący **jednego tenanta/użytkownika**. Deklaruje konfigurację kanałów, agentów, skillów, polityk i memory. **Plik:** `api/v1alpha1/sympoziuminstance_types.go` ## Spec ```yaml apiVersion: sympozium.ai/v1alpha1 kind: SympoziumInstance metadata: name: my-agent spec: channels: # Podłączone kanały - type: telegram configRef: secret: telegram-creds accessControl: allowedSenders: ["123456"] agents: default: model: gpt-4.1 baseURL: "" # Override dla OpenAI-compat thinking: "medium" # off/low/medium/high sandbox: enabled: false agentSandbox: # Kernel-level isolation enabled: true runtimeClass: gvisor warmPool: size: 3 subagents: maxDepth: 2 maxConcurrent: 5 maxChildrenPerAgent: 3 nodeSelector: # Pinning do GPU node'ów gpu-type: "a100" skills: # SkillPacks do montowania - skillPackRef: k8s-ops params: CLUSTER: production - skillPackRef: memory policyRef: restrictive # Polityka bezpieczeństwa authRefs: # Klucze API - provider: openai secret: openai-key memory: # Legacy ConfigMap memory enabled: true maxSizeKB: 256 observability: # OpenTelemetry enabled: true otlpEndpoint: "otel-collector.observability.svc:4317" mcpServers: # External tool providers - name: github toolsPrefix: gh timeout: 30 ``` ## Status ```yaml status: phase: Running|Serving|Pending|Error channels: - type: telegram status: Connected|Disconnected|Error activeAgentPods: 2 totalAgentRuns: 150 webEndpoint: status: Ready url: "alice.sympozium.example.com" ``` ## Kluczowe koncepty ### Multi-tenancy Każda SympoziumInstance to osobny tenant z: - Własnymi kanałami - Własnymi credentials (AuthRefs) - Własną polityką - Własną memory - Własnymi MCP serverami ### Reconciliation `SympoziumInstanceReconciler` zarządza: 1. **Channel Deployments** - tworzy/aktualizuje Deployment per kanał 2. **Memory ConfigMap** - legacy `-memory` ConfigMap 3. **Memory PVC** - SQLite DB dla memory SkillPack 4. **Memory Deployment** - memory-server Deployment + Service 5. **Web Endpoints** - server-mode AgentRun dla web-endpoint skill ### Finalizery Przy usunięciu instancji controller: - Czyści channel deployments - Czyści memory ConfigMap - Czyści memory deployment ### Channel Access Control Kanały mogą ograniczać kto może komunikować się z agentem: - `allowedSenders` - whitelist ID nadawców - `deniedSenders` - blacklist (nadpisuje whitelist) - `allowedChats` - whitelist ID czatów/grup - `denyMessage` - wiadomość dla odrzuconych --- Powiązane: [[AgentRun]] | [[PersonaPack]] | [[SympoziumPolicy]] | [[Kanały - Telegram Slack Discord WhatsApp]]