Supafone Labs · Documentation

Oracle Models and Supervisor Controls#

The Oracle is the reasoning model behind Voice Watcher. It is independent from the model speaking on the call: an Ultravox, Vapi, Retell, OpenAI Realtime, Grok, or custom agent can be supervised by a different model without changing the caller-facing runtime.

Supafone-managed Oracle#

Customers should configure a stable Supafone alias rather than coupling their agent to a vendor model ID:

Public aliasCurrent managed modelIntended work
supafone-labs-oracleAnthropic Claude Haiku 4.5 (claude-haiku-4-5-20251001)Fast live belief updates and bounded silent directives
supafone-labs-oracle-proAnthropic Claude Sonnet 4.6Heavier QA, critique, scoring, and optimization

The alias is the contract. Supafone can upgrade or fail over its underlying model while preserving the API, safety gates, telemetry, and billing behavior. Use the explicit vendor model ID only when model pinning matters more than managed upgrades.

labs.enabled: true attaches the supervisor. In managed mode, the customer's sl_... Supafone key pays for the Oracle; no separate Anthropic, OpenAI, or xAI key is required.

json
{
  "labs": {
    "enabled": true,
    "mode": "supafone_managed",
    "model": "supafone-labs-oracle"
  }
}

BYOK Oracle providers#

The open SDK has first-class Oracle providers for:

ProviderSelect withCredentialExample model
Anthropicllm="anthropic"ANTHROPIC_API_KEYclaude-haiku-4-5-20251001
OpenAIllm="openai"OPENAI_API_KEYgpt-4.1-mini
xAI / Grokllm="xai"XAI_API_KEYgrok-4-fast
OpenAI-compatiblean OpenAIProvider instancevendor key + base_urlany compatible chat-completions model
Offline test doublellm="fake"nonedeterministic local fixtures

BYOK affects the supervisor model only. Agent runtime, telephony, STT, and TTS remain separate choices. For example, the speaking agent can use Ultravox with Telnyx telephony and Cartesia TTS while the Oracle uses a customer-owned OpenAI key.

python
from supafone_labs import SupafoneLabs
from supafone_labs.config import Settings

watcher = SupafoneLabs(
    provider="ultravox",
    llm="openai",
    oracle_model="gpt-4.1-mini",
    config=Settings(
        confidence_threshold=0.65,
        oracle_timeout_seconds=5.0,
    ),
)

For an OpenAI-compatible endpoint:

python
from supafone_labs import SupafoneLabs
from supafone_labs.llm import OpenAIProvider

oracle = OpenAIProvider(
    api_key="your-provider-key",
    base_url="https://provider.example/v1",
    model="provider-model-id",
)
watcher = SupafoneLabs(provider="vapi", llm=oracle)

Never put provider credentials in prompts, MCP tool arguments, dashboard URLs, or client-side bundles. Store them in environment variables or the private Supafone credential store.

What can be tuned#

ControlHosted completionFull watcherWhy it matters
Oracle modelYesYesCost, latency, and reasoning depth
max_tokens / maxTokensYesProvider/config dependentBounds response size and spend
temperatureYesProvider dependentControls variation for raw completions
Confidence thresholdYesSuppresses weak interventions
Oracle timeoutYesKeeps the supervisor off the latency-critical path
Operator guardrailswhisper()YesAdds firm-specific policy and behavior constraints
Oracle instructionsYesAdjusts the supervisor's priorities
Belief-state promptYesChanges how intent, urgency, emotion, language, trust, and progress are inferred
Directive promptYesChanges how a belief becomes one bounded silent instruction
Scenario presetYesAdds intake, sales, support, or other workflow guardrails
Apply/observe modeYesInject directives or score without changing the call
Injection adapterYesSelects the provider-native silent control channel
TelemetryYesRecords model, confidence, evidence, latency, and outcome
Post-call analysisYesScores the completed call against its objective
Agent labelYesConnects evidence to standing-directive optimization history

Raw hosted Oracle call:

ts
const result = await supafone.oracle({
  model: "supafone-labs-oracle",
  maxTokens: 256,
  temperature: 0.2,
  messages: [
    { role: "system", content: "Return one short corrective directive or nothing." },
    { role: "user", content: transcript },
  ],
});

The higher-level whisper() helper accepts model, maxTokens, temperature, and operator guardrails. The complete SupafoneLabs watcher additionally maintains belief state, applies confidence/timeout gates, compiles the directive for the selected framework, records evidence, and degrades to a no-op on error.

Next: Voice Watcher Framework, Framework Support, or BYOK Providers.

View raw Markdown