VITTO FEATURE SUMMARY
Documentation for Vitto
Vitto Platform: Feature Summary and Testing Guide
Session: 109-111
Last Updated: February 17, 2026
Status: Backend complete, Frontend UI in progress
Table of Contents
- Architecture Overview
- Backend Services Built
- Frontend Components Built
- Existing Components Being Leveraged
- API Endpoint Reference
- Testing Each Feature
- Per-App Feature Matrix
- Infrastructure and Configuration
Architecture Overview
flowchart TD
subgraph frontends [Frontend Apps]
GSpace[gograb-space :5200]
GAdmin[gograb-admin :5100]
GDev[gograb-dev :5300]
SAdmin[space-admin :5500]
end
subgraph sharedLibs [Shared Libraries]
SpaceAssistant["@libs-ai/vitto-hub"]
VittoChat["@libs-ai/vitto-chat"]
GoGrabAiLib["@libs-ai/gograb-ai-lib"]
AgentOrch["@libs-ai/agent-orchestrator"]
AgentMind["@libs-ai/agent-mind"]
end
subgraph vittoBackend [Vitto Engine - backend-vitto-api :3003]
Engine[VittoEngineService]
Skills[SkillManagerService]
Channels[ChannelGatewayService]
Webhooks[WebhookIngestionService]
Scheduler[TaskSchedulerService]
SubAgents[SubAgentService]
Voice[VoiceService]
Compliance[ComplianceService]
SmartRouter[SmartRouterService]
CostTracker[CostTrackerService]
ToolSecurity[ToolSecurityService]
Memory[VittoMemoryService]
Ollama[OllamaProviderService]
end
subgraph otherBackends [Other Backends]
BackendAPI[backend-api :3000]
BackendAI[backend-ai-api :3001]
BackendDocs[backend-docs-api :3002]
end
frontends --> sharedLibs
sharedLibs --> vittoBackend
sharedLibs --> otherBackends
vittoBackend --> BackendAI
Backend Services Built
P0: Security, Cost, and Reliability
| Service |
File |
Purpose |
Status |
| SmartRouterService |
apis/backend-vitto-api/src/app/llm/smart-router.service.ts |
Model failover (Claude -> OpenAI -> Gemini) + smart routing by task complexity |
Complete |
| CostTrackerService |
apis/backend-vitto-api/src/app/strategy/cost-tracker.service.ts |
Per-task cost estimation, per-user budgets, spending analytics |
Complete |
| ToolSecurityService |
apis/backend-vitto-api/src/app/tools/tool-security.service.ts |
Sandbox levels (safe/guarded/dangerous), command allowlists, approval gates |
Complete |
| CostGuardService |
apis/backend-vitto-api/src/app/strategy/cost-guard.service.ts |
Iteration/token/time limits per task complexity |
Complete |
P1: Skills, Training, and Command Hub
| Service |
File |
Purpose |
Status |
| SkillManagerService |
apis/backend-vitto-api/src/app/engine/skill-manager.service.ts |
CRUD + security vetting + publishing + rating for skills |
Complete |
| VittoMemoryService |
apis/backend-vitto-api/src/app/mind/vitto-memory.service.ts |
Tiered memory (hot cache + vector search + text search) + edit/delete/export |
Complete |
P2: Channels, Voice, Webhooks, Scheduling
| Service |
File |
Purpose |
Status |
| ChannelGatewayService |
apis/backend-vitto-api/src/app/connectivity/channel-gateway.service.ts |
Multi-channel message routing (web, Slack, Discord, WhatsApp, email, webhook) |
Complete |
| VoiceService |
apis/backend-vitto-api/src/app/connectivity/voice.service.ts |
Speech-to-Text (OpenAI Whisper) + Text-to-Speech (OpenAI TTS) |
Complete |
| WebhookIngestionService |
apis/backend-vitto-api/src/app/connectivity/webhook-ingestion.service.ts |
External webhook event processing + action triggering |
Complete |
| TaskSchedulerService |
apis/backend-vitto-api/src/app/engine/task-scheduler.service.ts |
Recurring task scheduling (once/hourly/daily/weekly/monthly/cron) |
Complete |
P3: Sub-Agents and Enterprise
| Service |
File |
Purpose |
Status |
| SubAgentService |
apis/backend-vitto-api/src/app/engine/sub-agent.service.ts |
Sub-agent spawning, monitoring, coordination, mesh state |
Complete |
| ComplianceService |
apis/backend-vitto-api/src/app/engine/compliance.service.ts |
Enterprise audit logging, compliance reporting, data retention |
Complete |
P4: Local Models
| Service |
File |
Purpose |
Status |
| OllamaProviderService |
apis/backend-vitto-api/src/app/llm/ollama.provider.ts |
Local model support via Ollama (zero API cost fallback) |
Complete |
Frontend Components Built
New Components (Session 109)
| Component |
Library |
File |
Purpose |
| VittoCommandHubComponent |
@libs-ai/vitto-hub |
libs/libs-ai/vitto-hub/src/lib/components/vitto-command-hub/ |
Tabbed interface: Chat, Skills, Channels, Webhooks, Schedules, Memory, Observatory |
| SkillStudioComponent |
@libs-ai/vitto-hub |
libs/libs-ai/vitto-hub/src/lib/components/skill-studio/ |
Skill marketplace, visual builder, test chat |
| VittoApiService |
@libs-ai/vitto-hub |
libs/libs-ai/vitto-hub/src/lib/services/vitto-api.service.ts |
40+ API methods for all Vitto backend endpoints |
| AiErrorBoundaryComponent |
@libs-ai/vitto-hub |
libs/libs-ai/vitto-hub/src/lib/components/ai-error-boundary/ |
Graceful error handling with retry |
Components Being Built (Session 111)
| Component |
Purpose |
Existing Component Leveraged |
| ChannelManagerComponent |
Setup wizards for WhatsApp/Slack/Discord/Email/Webhook |
New (no existing channel UI) |
| WebhookBuilderComponent |
Visual webhook management + event history |
New |
| VisualSchedulerComponent |
Recurring tasks with visual frequency picker |
New |
| MemoryManagerComponent |
Browse, edit, delete, export memories |
Wraps existing MemoryBrowserComponent |
| CostDashboardComponent |
Spending overview, budgets, routing stats |
Extends existing BillingDashboardComponent |
| ApprovalCenterComponent |
Human-in-the-loop approval UI |
Consolidates existing approval patterns |
| SecurityAuditComponent |
Audit log viewer + compliance reports |
New |
Existing Components Being Leveraged
These components were built in previous sessions and are being integrated into the Vitto Command Hub:
Memory System
| Component/Service |
Library |
Purpose |
| MemoryBrowserComponent |
@libs-ai/gograb-ai-lib |
Browse/search agent memories with filters |
| MemoryClustersComponent |
@libs-ai/agent-mind |
Visualize memory clusters |
| AIMemoryService |
@libs-ai/gograb-ai-lib |
Semantic memory with embeddings, IndexedDB |
| HierarchicalMemoryService |
@libs-ai/gograb-ai-lib |
4-tier memory (working -> short-term -> long-term -> crystallized) |
| AgentMemoryStorageService |
@libs-ai/agent-orchestrator |
Hybrid flash persistence + MongoDB sync |
Agent and Intelligence
| Component/Service |
Library |
Purpose |
| TrainingCenterComponent |
@libs-ai/ai-agents-training-center |
Agent training, pattern library, live testing |
| AgentMeshVisualizationComponent |
@libs-ai/gograb-ai-lib |
Real-time agent mesh graph |
| BillingDashboardComponent |
@libs-ai/gograb-ai-lib |
Subscription management, usage tracking |
| CommandCenterComponent |
@libs-ai/gograb-ai-lib |
Real-time command center with WebSocket |
| VittoChatShellComponent |
@libs-ai/vitto-chat |
Main chat interface with streaming |
API Endpoint Reference
All endpoints are on backend-vitto-api at /engine/*.
Skills
| Method |
Path |
Purpose |
| GET |
/engine/skills |
List skills (filter: category, status, trustLevel, search) |
| GET |
/engine/skills/stats |
Skill statistics |
| GET |
/engine/skills/:id |
Get single skill |
| POST |
/engine/skills |
Create skill |
| PUT |
/engine/skills/:id |
Update skill |
| DELETE |
/engine/skills/:id |
Delete skill |
| POST |
/engine/skills/:id/publish |
Publish skill |
| POST |
/engine/skills/:id/rate |
Rate skill (1-5) |
Channels
| Method |
Path |
Purpose |
| GET |
/engine/channels |
List channels (filter: userId) |
| GET |
/engine/channels/:id |
Get single channel |
| POST |
/engine/channels |
Create channel |
| PUT |
/engine/channels/:id |
Update channel |
| DELETE |
/engine/channels/:id |
Delete channel |
| POST |
/engine/channels/inbound |
Process inbound message |
Webhooks
| Method |
Path |
Purpose |
| GET |
/engine/webhooks |
List webhooks (requires userId) |
| GET |
/engine/webhooks/:webhookId |
Get webhook details |
| POST |
/engine/webhooks |
Create webhook |
| PUT |
/engine/webhooks/:webhookId |
Update webhook |
| DELETE |
/engine/webhooks/:webhookId |
Delete webhook |
| POST |
/engine/webhooks/:webhookId/ingest |
Ingest event payload |
| GET |
/engine/webhooks/:webhookId/events |
Get event history |
Schedules
| Method |
Path |
Purpose |
| GET |
/engine/schedules |
List schedules (requires userId) |
| GET |
/engine/schedules/:id |
Get schedule |
| POST |
/engine/schedules |
Create schedule |
| PUT |
/engine/schedules/:id |
Update schedule |
| DELETE |
/engine/schedules/:id |
Delete schedule |
Memory
| Method |
Path |
Purpose |
| GET |
/engine/memories/browse |
Browse memories (userId, spaceId, type, tags, minImportance) |
| GET |
/engine/memories/search |
Semantic search (query, userId, spaceId, type, limit) |
| GET |
/engine/memories/recent |
Recent memories (userId, spaceId, limit) |
| POST |
/engine/memories |
Create memory |
| PUT |
/engine/memories/:memoryId |
Edit memory |
| POST |
/engine/memories/:memoryId/forget |
Delete single memory |
| POST |
/engine/memories/bulk-delete |
Bulk delete (memoryIds[]) |
| DELETE |
/engine/memories/user/:userId |
Delete ALL user memories |
| GET |
/engine/memories/export/:userId |
Export memories as JSON |
| GET |
/engine/memories/stats |
Memory statistics |
Voice
| Method |
Path |
Purpose |
| GET |
/engine/voice/status |
Check voice availability |
| POST |
/engine/voice/transcribe |
Audio -> text (Whisper STT) |
| POST |
/engine/voice/synthesize |
Text -> audio (OpenAI TTS) |
Cost and Routing
| Method |
Path |
Purpose |
| GET |
/engine/costs/stats |
Spending summary (days) |
| GET |
/engine/costs/estimate |
Estimate task cost (summary, complexity) |
| GET |
/engine/costs/budget/:userId |
Get user budget |
| PUT |
/engine/costs/budget/:userId |
Set user budget |
| GET |
/engine/routing/stats |
Routing statistics |
| GET |
/engine/routing/decisions |
Recent routing decisions |
Security and Compliance
| Method |
Path |
Purpose |
| GET |
/engine/security/audit |
Audit log (limit, toolName, success) |
| GET |
/engine/security/stats |
Security stats |
| GET |
/engine/security/policies |
Tool security policies |
| GET |
/engine/security/approvals |
Pending approval requests |
| POST |
/engine/security/approvals/:id |
Resolve approval (approved/rejected) |
| GET |
/engine/compliance/audit |
Compliance audit trail |
| GET |
/engine/compliance/report |
Generate compliance report |
Sub-Agents
| Method |
Path |
Purpose |
| POST |
/engine/agents/spawn |
Spawn sub-agent |
| GET |
/engine/agents/task/:taskId |
Get agents for task |
| GET |
/engine/agents/mesh/:taskId |
Get agent mesh state |
| POST |
/engine/agents/:agentId/cancel |
Cancel sub-agent |
| GET |
/engine/agents/stats |
Agent statistics |
Local Models (Ollama)
| Method |
Path |
Purpose |
| GET |
/engine/local-models/status |
Check Ollama health |
| POST |
/engine/local-models/pull |
Pull model from Ollama registry |
Testing Each Feature via UI
Prerequisites
- Start backend:
yarn serve:backend-ai (port 3001) and ensure backend-vitto-api is running (port 3003)
- Start frontend app:
yarn serve:gograb-dev (port 5300) for full developer access
- MongoDB must be running (connection string in
.env.local)
- Log in (required -- all Vitto features need authentication for userId resolution)
Testability Matrix
| Feature |
Has UI? |
Route (gograb-dev) |
How to reach |
| Skills |
YES |
http://localhost:5300/vitto |
Sidebar: Vitto AI > Command Hub > Skills tab |
| Channels |
YES |
http://localhost:5300/vitto or /channels |
Sidebar: Vitto AI > Command Hub > Channels tab, OR Vitto AI > Channels |
| Webhooks |
YES |
http://localhost:5300/vitto |
Command Hub > Webhooks tab |
| Schedules |
YES |
http://localhost:5300/vitto |
Command Hub > Schedules tab |
| Memory |
YES |
http://localhost:5300/vitto |
Command Hub > Memory tab |
| Cost Dashboard |
YES |
http://localhost:5300/vitto |
Command Hub > Observatory tab > Costs sub-tab |
| Smart Routing Stats |
YES |
http://localhost:5300/vitto |
Command Hub > Observatory tab > Costs sub-tab > Routing sub-tab |
| Budget Controls |
YES |
http://localhost:5300/vitto |
Command Hub > Observatory tab > Costs sub-tab > Budget sub-tab |
| Approvals |
YES |
http://localhost:5300/vitto |
Command Hub > Observatory tab > Approvals sub-tab |
| Security Audit |
YES |
http://localhost:5300/vitto |
Command Hub > Observatory tab > Security Audit sub-tab (admin/dev only) |
| Voice (STT/TTS) |
NO |
API only |
No UI yet -- API-only via POST /engine/voice/transcribe |
| Sub-Agent Mesh |
PARTIAL |
http://localhost:5300/agents/control-center |
Sidebar: Agents > Control Center (existing, not in Command Hub) |
| Compliance Reports |
NO |
API only |
No UI yet -- API-only via GET /engine/compliance/report |
| Local Models (Ollama) |
NO |
API only |
No UI yet -- API-only via GET /engine/local-models/status |
| Chat (Vitto) |
PARTIAL |
http://localhost:5300/vitto |
Chat tab exists but needs VittoChatShell wiring via ng-content |
Route Map by App
| App |
Port |
Vitto Hub Route |
Channels Route |
Sidebar Link? |
| gograb-dev |
5300 |
/vitto |
/channels |
YES (Vitto AI section) |
| gograb-admin |
5100 |
/vitto |
/channels |
Depends on AppConfigService |
| gograb-space |
5200 |
/space/:slug/vitto |
/space/:slug/channels |
Not yet in space-builder tools |
| space-admin |
5500 |
/vitto |
/channels |
No sidebar yet |
Step-by-Step UI Testing
Cost Management (Observatory > Costs)
- Open
http://localhost:5300/vitto
- Click the Observatory tab (last tab, monitor icon)
- Click the Costs sub-tab
- You should see three sub-sections: Overview, Routing, Budget
- Overview: Shows total tasks, total tokens, estimated cost, and cost breakdown by model
- Routing: Shows total routed, failovers triggered, cache savings, and tasks by complexity
- Budget: Shows daily token limit, monthly budget, remaining. Click "Edit Budget" to set limits
- NOTE: If data is empty, submit some tasks via the Chat tab first to generate cost data
Skill Management (Skills tab)
- Open
http://localhost:5300/vitto
- Click the Skills tab
- Click "Create Skill" to open the builder
- Fill in: name, description, category, triggers, system prompt
- Save and verify it appears in the marketplace grid
- Click a skill to see details; use the Test tab to test it
- Publish and rate (1-5 stars)
Channel Management (Channels tab)
- Open
http://localhost:5300/vitto > Channels tab (or navigate to /channels)
- Click Add Channel
- Select a channel type (WhatsApp, Slack, Discord, Email, or Custom Webhook)
- Follow the step-by-step wizard: Configure > Test Connection > Save
- For WhatsApp: enter Twilio Account SID, Auth Token, and WhatsApp number
- For quick testing without credentials: use "Custom Webhook" type
- After saving, see the channel in the list with enable/disable toggle
Webhook Management (Webhooks tab)
- Open
http://localhost:5300/vitto > Webhooks tab
- Click New Webhook
- Enter name, select source (GitHub/GitLab/Stripe/etc.), add event filters
- Choose action: Run a prompt, Trigger a skill, or Send notification
- Click Create. The webhook URL will be available in the list view (copy icon)
- Send a test payload to that URL and check the event history
Schedule Management (Schedules tab)
- Open
http://localhost:5300/vitto > Schedules tab
- Click New Schedule
- Enter task name and describe what Vitto should do
- Pick frequency: One Time, Every Hour, Every Day, Every Week, Every Month
- Set time/day as needed. Click Create Schedule
- Verify the schedule appears with next run time and toggle to pause/resume
Memory Management (Memory tab)
- Open
http://localhost:5300/vitto > Memory tab
- Browse memories with search and type filter
- Click edit (pencil icon) on any memory to inline-edit content and tags
- Click delete (trash icon) to remove a single memory
- Click "Select" to enter bulk mode, select multiple, click "Delete Selected"
- Click "Export" to download all memories as JSON
Approvals (Observatory > Approvals)
- Open
http://localhost:5300/vitto > Observatory tab > Approvals sub-tab
- See pending approval requests for dangerous tool executions
- Click Approve or Reject for each request
Security Audit (Observatory > Security Audit, admin/dev only)
- Open
http://localhost:5300/vitto > Observatory tab > Security Audit sub-tab
- View audit log of all tool executions
- Filter by tool name
- See sandbox level, approval status, success status, duration
Features Without UI (API-Only Testing)
These features have backend services but no dedicated frontend UI yet:
Voice (STT/TTS):
# Check voice availability
curl http://localhost:3003/engine/voice/status
# Transcribe audio (requires OPENAI_API_KEY)
curl -X POST http://localhost:3003/engine/voice/transcribe \
-H "Content-Type: application/json" \
-d '{"audioBase64": "...", "language": "en"}'
Compliance Reports:
curl "http://localhost:3003/engine/compliance/report?startDate=2026-01-01&endDate=2026-02-17"
Local Models (Ollama):
curl http://localhost:3003/engine/local-models/status
curl -X POST http://localhost:3003/engine/local-models/pull -H "Content-Type: application/json" -d '{"modelName": "llama3"}'
Sub-Agent Spawning:
curl -X POST http://localhost:3003/engine/agents/spawn \
-H "Content-Type: application/json" \
-d '{"taskId": "task-1", "role": "researcher", "goal": "Find best practices"}'
Per-App Feature Matrix
What's available and how to reach it
| Feature |
gograb-dev (5300) |
gograb-admin (5100) |
gograb-space (5200) |
space-admin (5500) |
| Vitto Command Hub |
/vitto (sidebar link) |
/vitto (needs nav config) |
/space/:slug/vitto (needs tool filter) |
/vitto (needs sidebar) |
| Skill Studio |
Hub > Skills tab |
Hub > Skills tab |
Hub > Skills tab |
Hub > Skills tab |
| Channel Manager |
Hub > Channels tab, /channels |
Hub > Channels tab, /channels |
Hub > Channels tab, /space/:slug/channels |
Hub > Channels tab, /channels |
| Webhook Builder |
Hub > Webhooks tab |
Hub > Webhooks tab |
Hub > Webhooks tab |
Hub > Webhooks tab |
| Visual Scheduler |
Hub > Schedules tab |
Hub > Schedules tab |
Hub > Schedules tab |
Hub > Schedules tab |
| Memory Manager |
Hub > Memory tab |
Hub > Memory tab |
Hub > Memory tab |
Hub > Memory tab |
| Cost Dashboard |
Hub > Observatory > Costs |
Hub > Observatory > Costs |
Hub > Observatory > Costs |
Hub > Observatory > Costs |
| Approvals |
Hub > Observatory > Approvals |
Hub > Observatory > Approvals |
Hub > Observatory > Approvals |
Hub > Observatory > Approvals |
| Security Audit |
Hub > Observatory > Audit |
Hub > Observatory > Audit |
Hidden (builder role) |
Hidden (builder role) |
| Voice |
No UI |
No UI |
No UI |
No UI |
| Sub-Agent Mesh |
/agents/control-center |
/agents/mesh |
Not available |
Not available |
| Compliance Reports |
No UI |
No UI |
No UI |
No UI |
| Local Models (Ollama) |
No UI |
No UI |
No UI |
No UI |
Navigation accessibility status
| App |
Has sidebar link to /vitto? |
User can click to get there? |
| gograb-dev |
YES (Vitto AI section) |
YES |
| gograb-admin |
NO (needs AppConfigService update) |
No, must type URL |
| gograb-space |
NO (not in space-builder tools filter) |
No, must type URL |
| space-admin |
NO (no sidebar component exists) |
No, must type URL |
Role mapping (auto-detected from AuthService)
| Auth Role |
Hub Role |
What they see |
admin |
admin |
Full access + Security Audit + budget editing |
editor |
developer |
Full access + Security Audit |
viewer |
builder |
Simplified wizards, no Security Audit, per-space scope |
guest |
builder |
Simplified wizards (but most API calls will fail without userId) |
Remaining navigation gaps (to fix)
- gograb-admin: Add "Vitto" to
AppConfigService navigation config
- gograb-space: Add
'vitto' to SPACE_BUILDER_MODULE_IDS in MainLayoutComponent
- space-admin: Build a basic sidebar/nav component with Vitto link
Infrastructure and Configuration
Environment Variables Required
# In .env.local
BACKEND_VITTO_API_URL =http://localhost:3003/vitto-api # Vitto backend
AI_API_URL=http://localhost:3001 # AI backend
API_BASE_URL=http://localhost:3000 # Main backend
# For voice features
OPENAI_API_KEY=sk-...
# For WhatsApp (Twilio)
TWILIO_ACCOUNT_SID=AC...
TWILIO_AUTH_TOKEN=...
TWILIO_NUMBER=+1...
# For local models
OLLAMA_HOST=http://localhost:11434
Shared Library Dependencies
@libs-ai/vitto-hub
├── VittoCommandHubComponent (container)
│ ├── SkillStudioComponent
│ ├── ChannelManagerComponent
│ ├── WebhookBuilderComponent
│ ├── VisualSchedulerComponent
│ ├── MemoryManagerComponent (wraps MemoryBrowserComponent)
│ ├── CostDashboardComponent (extends BillingDashboardComponent)
│ ├── ApprovalCenterComponent
│ └── SecurityAuditComponent
└── VittoApiService (40+ methods)
@libs-ai/gograb-ai-lib
├── MemoryBrowserComponent (existing, reused)
├── BillingDashboardComponent (existing, extended)
├── AgentMeshVisualizationComponent (existing, reused)
└── AIMemoryService (existing, reused)
@libs-ai/vitto-chat
└── VittoChatShellComponent (existing, used in Chat tab)
Test Suite Status
| Suite |
Tests |
Status |
| SmartRouterService |
10 |
Pass |
| CostTrackerService |
10 |
Pass |
| ToolSecurityService |
10 |
Pass |
| SubAgentService |
8 |
Pass |
| SkillManagerService |
8 |
Pass |
| TaskSchedulerService |
8 |
Pass |
| ChannelGatewayService |
6 |
Pass |
| OllamaProviderService |
6 |
Pass |
| AgentLoopService |
12 |
Pass |
| PhaseExecutorService |
20 |
Pass |
| VittoController |
17 |
Pass |
| + 15 other suites |
199 |
Pass |
| Total |
314 |
All Pass |