VMware Tanzu Platform - CLI Testing Guide
Prerequisites
- goose CLI built from the
feat/tanzu-ai-providerbranch - A Tanzu AI Services endpoint and API key (single-model or multi-model plan)
Locate the CLI Binary
macOS:
# If built from source:
export GOOSE_CLI=~/claude/goose-fork/target/release/goose
# Verify:
$GOOSE_CLI --version
Linux:
# If installed via .deb:
export GOOSE_CLI=/usr/bin/goose
# If built from source:
export GOOSE_CLI=~/goose-fork/target/release/goose
# Verify:
$GOOSE_CLI --version
Test 1: Configure VMware Tanzu Platform Provider
goose configure
- Select Configure Providers
- Scroll to / search for VMware Tanzu Platform
- When prompted for TANZU_AI_ENDPOINT, enter your endpoint URL:
- Single-model:
https://genai-proxy.sys.example.com/tanzu-my-model-abc1234 - Multi-model:
https://genai-proxy.sys.example.com/tanzu-all-models-abc1234
- Single-model:
- When prompted for TANZU_AI_API_KEY, paste the JWT token from your service key
- Select a model from the dynamically fetched list
Expected: Models are fetched from the endpoint and displayed for selection.
Test 2: Start a Session (Single-Model Plan)
export TANZU_AI_ENDPOINT="https://genai-proxy.sys.tas-tdc.kuhn-labs.com/tanzu-Qwen3-Coder-30B-A3B-vllm-v1-f3b0d18"
export TANZU_AI_API_KEY="<your-jwt-token>"
goose session
Type a simple prompt:
> What is 2 + 2?
Expected: The model responds with an answer. If streaming is enabled, tokens appear incrementally.
Test 3: Start a Session (Multi-Model Plan)
export TANZU_AI_ENDPOINT="https://genai-proxy.sys.tas-tdc.kuhn-labs.com/tanzu-all-models-a8a9e22"
export TANZU_AI_API_KEY="<your-jwt-token>"
goose session
Expected: Session starts with whichever model was selected during goose configure.
Test 4: Verify Streaming
With streaming enabled (supports_streaming: true), responses should appear token-by-token rather than all at once.
> Write a short poem about clouds
Expected: Text streams in progressively, not appearing all at once after a delay.
Test 5: Verify Dynamic Model Fetching
goose configure
Select Configure Providers > VMware Tanzu Platform.
Expected for single-model plan: One model appears (e.g., Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8)
Expected for multi-model plan: Multiple models appear (e.g., Qwen3.5-122B, Qwen3-Coder-30B, gpt-oss-120b)
Test 6: Verify Error Messages
Missing API Key
unset TANZU_AI_API_KEY
goose session
Expected: Clear error message: "Required API key TANZU_AI_API_KEY is not set."
Missing Endpoint
unset TANZU_AI_ENDPOINT
goose session
Expected: Clear error message about TANZU_AI_ENDPOINT not being set.
Wrong Endpoint
export TANZU_AI_ENDPOINT="https://genai-proxy.sys.example.com/nonexistent"
export TANZU_AI_API_KEY="invalid-key"
goose session
Expected: Connection or authentication error, not a crash.
Test 7: Switch Between Plans
- Configure with multi-model endpoint, select a model, start a session, verify it works
- Run
goose configureagain - Change TANZU_AI_ENDPOINT to the single-model endpoint
- Select the single model
- Start a new session, verify it works
Expected: Both plans work without needing to restart goose.
Quick Curl Verification
Before testing with goose, you can verify endpoints directly:
# Test models endpoint
curl -s -H "Authorization: Bearer $TANZU_AI_API_KEY" \
"$TANZU_AI_ENDPOINT/openai/v1/models" | python3 -m json.tool
# Test chat completions
curl -s -X POST "$TANZU_AI_ENDPOINT/openai/v1/chat/completions" \
-H "Authorization: Bearer $TANZU_AI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8","messages":[{"role":"user","content":"hello"}],"max_tokens":10}'
# Test streaming
curl -s -N -X POST "$TANZU_AI_ENDPOINT/openai/v1/chat/completions" \
-H "Authorization: Bearer $TANZU_AI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8","messages":[{"role":"user","content":"hello"}],"max_tokens":10,"stream":true}'