Configure the voice AI: select models and providers, test in the playground, and monitor runtime health.
The AI Agent Console is the ready-made web app that runs the ClutchCall
inference fabric. The fabric is the self-hosted, OpenAI-compatible endpoint
behind your voice AI. From one place you can:
Deploy and manage served models.
Configure LLM/ASR/TTS vendor credentials.
Test completions live.
Monitor GPU and runtime health.
The console is for operators and developers who own an inference tenant.
KPI strip, your tenant-scoped OpenAI-compatible endpoint, cURL quickstart,
and the list of active models.
Models
The served-model registry. Deploy from HuggingFace or a weights path,
inspect the deploy config, and remove models.
Providers
Credential manager and default routing for your LLM, speech-to-text (ASR),
and text-to-speech (TTS) vendors.
Playground
Chat/completion console and voice-pipeline tester for live, streaming
requests against a deployed model.
Runtime
GPU/CPU/memory gauges, self-test diagnostics, and the runtime config for the
serving host.
Analytics
Token usage, latency percentiles, and per-model breakdowns over 24h / 7d / 30d.
Developers
Base URLs and copy-paste SDK quickstarts (Python, Node, cURL).
Usage & billing
Metered output-token usage, cost, and invoices for your tenant.
Most screens are scoped to the tenant that you are connected to (shown
in the Overview subtitle). If no tenant is connected, the base URL and the
quickstarts show a placeholder until you connect one.
Start on Overview. Check that the fabric is online. Copy the endpoint that
your apps will call.
1
Open Overview
The header shows your tenant and environment. Use the time-range toggle
(15m / 1h / 24h) to scope the KPI strip. Use Refresh to re-pull
the data.
2
Check the endpoint status
The OpenAI-compatible endpoint card shows an online / unavailable
pill and the supported routes: /chat/completions, /completions,
/embeddings, /models, /health.
3
Copy the tenant-scoped base URL and cURL
Copy the Base URL (tenant-scoped) with the copy button. Then copy the
cURL quickstart to make your first streaming request. Replace
<model-id> with one of your deployed models.
4
Jump to a workflow
Use Open playground to test live. Or click Manage on the Active
models card to go to the model registry.
The Models screen is your served-model registry. The stat strip summarizes
model count, GPUs requested, replicas, and engines. The table lists every
deployed model with its engine, namespace, GPUs, replicas, revision, and status.
Deploy model and Remove are disabled unless registry writes are
enabled for your fabric. When registry writes are disabled, the console
shows a banner and greys out the buttons. An operator must enable registry
writes first.
1
Open Models and start a deploy
Click Deploy model in the header. A Deploy model drawer opens on the
right.
2
Choose a source
Select HuggingFace Hub to pull a repo directly from the Hub. Or select
Custom path to serve from a weights path already on the node or image.
3
Name the model
Enter a Name. Use lowercase alphanumeric characters and dashes only
(for example, llama-3-8b). The form shows an inline warning if the name
is invalid.
4
Point at the weights
For HuggingFace, enter the repo id (for example,
meta-llama/Llama-3.1-8B-Instruct). For a custom path, enter the
weights path (for example, /models/llama-3-8b).
5
Add HuggingFace auth (gated/private repos only)
For a gated or private Hub repo, add an HF token. When you set a
token, you must also enter a Tenant / org. The console seals the token
under that tenant before it stores the token. Optionally, pin a
Revision (a Hub commit or branch).
HF tokens are encrypted at rest for each tenant. The engine opens them
into the pod only at deploy time.
6
Set serving details
Check the serving Image, Engine, and Namespace. Then check the
GPUs, Replicas, and Port. Defaults are prefilled.
7
Deploy
Click Deploy. This writes the desired state into the registry.
A deploy records the desired state. It does not hot-reload a running
module. The fabric applies the new model on its next hydrate (module
start).
Click any row in the Deployed models table to open its drawer. The
drawer shows capabilities, sealed-credential status, the weights path, and
the full deploy config (image, engine, namespace, replicas, GPUs, pinned
revision, service port).
2
Filter or rescan
Use Filter models… to narrow the table by name, path, engine, or
namespace. Use Rescan registry in the header to re-pull the registry.
3
Remove
Click Remove on a row, or click Remove from registry in the
drawer. This removes the model from the registry. Registry writes must be
enabled.
The Providers screen manages vendor credentials. It also sets which vendor
is the default route for each category: LLM providers, Speech-to-text
(ASR), and Text-to-speech (TTS). The summary cards at the top show the
current default route and the number of healthy vendors in each category.
1
Review the categories
Each category card lists its configured providers with name, base URL,
API key, a health pip, and (when known) latency and model count.
2
Add a provider
Click Add provider in the header to configure a new vendor credential.
3
Reveal a key
On a provider row, use the eye toggle next to API key to show or hide
the stored key. Providers that are served locally show no credential ·
local instead of a key.
4
Test a provider
Click Test on a row to run a health check against that vendor. Or
click Test all in the header to check every configured provider. You
cannot test offline providers.
5
Set the default route
Click Route on a provider to make it the default for its category.
The provider then shows a default tag and updates the summary card.
The Playground has two modes: Chat / completion and Voice
pipeline. Select a mode with the toggle in the header.
1
Open the Chat / completion tab
If no chat-capable model is deployed, the transcript shows No models
deployed yet with a shortcut to Models. Otherwise the console is ready.
2
Pick a model and set parameters
In the left panel, select a Model. Optionally, add a System
prompt. Set temperature and max_tokens with the sliders. Toggle
stream (SSE) on or off.
3
Send a message
Type in the composer. Press Enter or Send. The transcript renders
the exchange. During streaming, the header shows live time-to-first-token
(ttft) and elapsed time.
4
Track the session
The left panel’s This session block shows tokens in, the endpoint
(/v1/chat/completions), and the transport. Use Clear to reset the
transcript.
Switch to the Voice pipeline tab to test a mic-driven speech pipeline
and to see a stage-by-stage waterfall trace. If no voice pipeline is
configured, use Configure a voice pipeline to go to Providers.
The Runtime screen shows the live health of the serving host: a host banner
(host name, version, uptime, engine, listener), resource gauges, self-test
results, and the runtime config.
1
Read the resource gauges
Three cards show GPU (compute utilization, VRAM, temperature, power),
CPU (load, load average, tensor-parallel, max-model-len), and System
memory (used, models mapped, page cache, swap).
2
Run a self-test
Click Run self-test to re-pull the runtime and self-test diagnostics.
The Self-test results card lists each boot diagnostic with
pass/warn/fail status and timing. The banner pill shows whether all
systems are nominal.
3
Check the runtime config
The Runtime config card lists the effective serving arguments (served
model name, tensor-parallel size, GPU memory utilization, max model length,
dtype, tool-choice, host/port).
Restart worker is intentionally disabled in the console. Restarts are a
cluster-operator action, not a tenant capability.
Use the range toggle (24h / 7d / 30d) to scope token usage, latency
percentiles, per-model breakdowns, and utilization.
Analytics populate after your fabric starts to emit completion
telemetry. Until then, the screen shows an empty state instead of zeros.
2
Open Usage & billing
Review metered output-token usage, cost, and invoices. The
Metering card explains how charges accrue. Usage is counted per
request and scoped to your tenant for chargeback.
The Developers screen gives you everything that you need to call the
fabric from an app.
1
Copy a base URL
Copy the Global or Tenant-scoped base URL. The endpoint is
OpenAI-compatible. Point the official OpenAI SDK at it: only the base URL
changes.
2
Copy an SDK snippet
Switch the language toggle between Python, Node, and cURL.
Copy the streaming quickstart. Set your API key in the
CLUTCHCALL_CREDENTIALS environment variable. Replace <model-id> with a
deployed model.
3
Enable tool calling (optional)
You enable tool/function calling server-side, for each model, in the
deploy spec. After you enable it, the OpenAI SDK’s tools field works
unchanged.
You manage API keys under Developers. Treat them like passwords. Anyone
with a valid key can call your tenant-scoped endpoint and incur usage.