Skip to main content

Overview

Shannon’s internal architecture uses gRPC (HTTP/2 + Protocol Buffers) for high-performance inter-service communication. This document provides complete Protocol Buffer definitions for all 5 services and 39 RPC methods.
Public vs Internal APIs: gRPC services are internal and not exposed by the public SDK. For application integration, use the Gateway REST API (http://localhost:8080/api/v1/*) or the Python SDK (ShannonClient(base_url=...)).
Services:
  • OrchestratorService (20 RPCs) - Task orchestration, workflow management, and scheduling
  • StreamingService (1 RPC) - Real-time event streaming
  • AgentService (6 RPCs) - Agent execution and tool management
  • LLMService (5 RPCs) - LLM provider gateway
  • SessionService (7 RPCs) - Multi-turn conversation management
Total: 39 RPC methods

Common Types

Shared types used across all services.

ExecutionMode

Usage: Determines task execution strategy
  • SIMPLE: Direct tool invocation or cache lookup (fastest)
  • STANDARD: Single-agent LLM-powered execution (balanced)
  • COMPLEX: Multi-agent DAG with parallel execution (most capable)

ModelTier

Cost Optimization: Shannon automatically selects models within tier to optimize cost
  • Small: $0.001-0.002 per 1K tokens
  • Medium: $0.01-0.03 per 1K tokens
  • Large: $0.03-0.075 per 1K tokens

StatusCode


TaskMetadata

Example:

TokenUsage


ExecutionMetrics


OrchestratorService

Task orchestration and workflow management service.

Service Definition


SubmitTask

Submit a new task for execution. Request:
Response:
Example (gRPC CLI):
Response:

GetTaskStatus

Retrieve current status and result of a task. Request:
Response:
Example:
Response:

CancelTask

Cancel a running task. Request:
Response:

ListTasks

List tasks with optional filtering. Request:
Response:

GetSessionContext

Retrieve session context and history. Request:
Response:

ListTemplates

List available task templates. Request:
Response:

ApproveTask

Approve or deny a task requiring human approval. Request:
Response:

GetPendingApprovals

List pending approval requests. Request:
Response:

StreamingService

Real-time event streaming service.

Service Definition


StreamTaskExecution

Stream real-time events for a task (server-streaming RPC). Request:
Response (stream):
Example (gRPC CLI):
Response Stream:
Event Type Filtering:
Stream Resumption:
See Event Types Catalog for all event types.

AgentService

Agent execution and tool management service.

Service Definition


ExecuteTask

Execute a task with a single agent (unary RPC). Request:
Response:

StreamExecuteTask

Execute task with streaming updates (server-streaming RPC). Request: Same as ExecuteTask Response (stream):

GetCapabilities

Get agent capabilities. Request:
Response:

HealthCheck

Check agent service health. Request:
Response:

DiscoverTools

Discover available tools by query or category. Request:
Response:
Example:

GetToolCapability

Get detailed capability of a specific tool. Request:
Response:

LLMService

LLM provider gateway service.

Service Definition


GenerateCompletion

Generate LLM completion (unary RPC). Request:
Response:

StreamCompletion

Generate streaming LLM completion (server-streaming RPC). Request: Same as GenerateCompletion Response (stream):

EmbedText

Generate text embeddings. Request:
Response:

AnalyzeComplexity

Analyze query complexity and recommend execution mode. Request:
Response:
Example:
Response:

ListModels

List available LLM models. Request:
Response:

SessionService

Multi-turn conversation management service.

Service Definition


CreateSession

Create a new conversation session. Request:
Response:

GetSession

Retrieve session details. Request:
Response:

UpdateSession

Update session context or extend TTL. Request:
Response:

DeleteSession

Delete a session. Request:
Response:

ListSessions

List user sessions. Request:
Response:

AddMessage

Add message to session history. Request:
Response:

ClearHistory

Clear session message history. Request:
Response:

Error Handling

Status Codes

All responses include a StatusCode:
  • STATUS_CODE_OK (1) - Success
  • STATUS_CODE_ERROR (2) - Generic error
  • STATUS_CODE_TIMEOUT (3) - Operation timeout
  • STATUS_CODE_RATE_LIMITED (4) - Rate limit exceeded
  • STATUS_CODE_BUDGET_EXCEEDED (5) - Token/cost budget exceeded

gRPC Status Codes

Standard gRPC status codes used:
  • OK (0) - Success
  • CANCELLED (1) - Request cancelled
  • INVALID_ARGUMENT (3) - Invalid request parameters
  • DEADLINE_EXCEEDED (4) - Timeout
  • NOT_FOUND (5) - Resource not found
  • ALREADY_EXISTS (6) - Resource already exists
  • PERMISSION_DENIED (7) - Insufficient permissions
  • RESOURCE_EXHAUSTED (8) - Rate limit/quota exceeded
  • UNAUTHENTICATED (16) - Missing/invalid credentials
  • UNAVAILABLE (14) - Service unavailable
  • INTERNAL (13) - Internal server error

Example Error Handling (Python)


Service Endpoints

Gateway REST API also available on port 8080 (HTTP/REST wrapper around gRPC). See REST API Reference for HTTP endpoints.

Code Generation

Generate client code from .proto files:

Python

Go

TypeScript


REST API

HTTP REST endpoints

Event Types

Streaming event catalog

Python SDK

Python client library

Database Schema

Data persistence