Manage users, monitor usage, control access
Your account is not authorized to use this portal.
Contact cloudops@vituity.com to request access.
| User | Top Model | Tokens | Usage |
|---|
| Model | Tokens | Share | Bar |
|---|
| Name ⇅ | Email ⇅ | Key (click to copy) | Tier | Status ⇅ | Last Active ⇅ | Actions |
|---|
| App Name | App ID | Status | Actions |
|---|
| Time | User | Model | Tokens |
|---|
/model <name> · if one is overloaded (529) try anotherLoading...| Model | Provider | RPM | TPM | Live Health (30m) | Status |
|---|---|---|---|---|---|
| User | Input | Output | Cache Read | Total Tokens | Est. Cost | Share |
|---|
| Model | Input | Output | Cache Read | Cache Write | Est. Cost |
|---|
ANTHROPIC_API_KEY. See the Setup tab for full configuration guide.You don't have an API subscription yet. Activate to get your key and start using Foundry AI.
| Date | Input | Output | Total | Est. Cost |
|---|
| Time | Code | Reason | User |
|---|
/model <name> if one is overloaded (529) — idle (0 req) models are safe targets| Model | Requests | Success | Overload (529) | Health |
|---|
One terminal-based flow for every OS — follow the quick-start below.
| 1. | Unzip the package — you'll get a haute-apim-sdk-setup folder in your Downloads. |
| 2. | Migrate — let Claude do it.
|
| 3. | Restart — close all terminals and fully quit VS Code, then reopen. |
| 4. | Set your model — run /model → Sonnet 5 (1M). In each old chat window, switch to Sonnet 5 before typing anything — typing on a window still on Opus throws the "log in to Claude" screen and can lock you out of that session. |
| 5. | Verify — open a fresh terminal, run claude, then /status. It should show API-key auth and apim-haute-sdk.azure-api.net. Then check Per User for your usage. |
haute-apim-sdk-setup folder:
haute-apim-sdk-setup folder → Open in Terminal, then paste powershell -ExecutionPolicy Bypass -File .\fix-vscode-windows.ps1 (if "blocked," first run Unblock-File .\fix-vscode-windows.ps1)cd → drag the folder in → Enter, then paste bash ./fix-vscode-mac-linux.shsettings.json file will open. Add these lines before the last closing }:[{name, value}] shown above — the object {} format crashes the extension. The disableLoginPrompt line is also required or the extension shows the Claude.ai login screen.Full example of what your file should look like:
Open PowerShell and run:
Sets claude-sonnet-5 as your default model. Run in PowerShell:
Open Claude Code in VS Code and test it — if it responds, you're all set!
— or —
Open a new PowerShell window and run:
If you see Claude's response with "text":"Hello...", you're all set!
settings.json file will open. Add these lines before the last closing }:"claudeCode.environmentVariables" from a Claude AI subscription, replace it.Full example of what your file should look like:
Open Terminal and run:
Sets claude-sonnet-5 as your default model. Run in Terminal:
Open a new Terminal window and run:
If you see Claude's response with "text":"Hello...", you're all set!
Open a terminal and run:
Sets claude-sonnet-5 as your default model:
Open a new terminal and run:
If you see Claude's response with "text":"Hello...", you're all set!
| Error | Cause | Fix |
|---|---|---|
| 403 Forbidden | Model isn't included for your tier (e.g., Opus on a Standard key) | Switch model (/model claude-sonnet-5) or request a tier upgrade on the Per User tab |
| 401 Unauthorized | Key not set or wrong header | Check env vars are set, use x-api-key header |
| Timeout / TLS reset | Zscaler not connected | Connect Zscaler ZPA — gateway is a private endpoint |
| "model may not exist" | Old URL in .env file | Check .env files in project folder, update to /v2/anthropic |
| 429 Too Many Requests | Rate limited | Wait 1 minute. Check your tier (Standard=500K, Power=750K, Unlimited=1M TPM) |
| 500 / 502 / 503 | Backend issue | Check the Health tab |
| 400 "thinking.type.adaptive" | Opus 4.8 + old thinking vars | Remove CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING and MAX_THINKING_TOKENS |
| Login screen appears (Windows) | disableLoginPrompt not set | Add "claudeCode.disableLoginPrompt": true to VS Code settings |
| Extension crashes (Windows) | Object format for env vars | Use array format [{name,value}] not object {} |
| "Claude Team" in header | Still logged into Claude.ai | Type /logout in Claude Code, restart VS Code |
Windows — Fix ANTHROPIC_BASE_URL everywhere:
Mac / Linux — Fix ANTHROPIC_BASE_URL everywhere:
After Claude Code auto-updates, you may see a "Remote Control" / claude.ai sign-in prompt. This is expected — ignore it. Remote Control only works over a direct api.anthropic.com connection, so it can't run through the gateway — your APIM connection is unaffected. The setting below stops the prompt from reappearing.
claude auth login — it overrides your Foundry APIM key setup.Mac / Linux: Add to ~/.claude/settings.json:
Windows (PowerShell):
| Model | Use Case | Why |
|---|---|---|
| claude-haiku-4-5 | Quick tasks | Fastest, cheapest |
| claude-sonnet-5 | Everyday coding/reasoning | Best balance, most versatile — the migration default |
| claude-opus-4-8 | Complex tasks | Only needed for the more complex planning/architecture/coding tasks |
Q: Claude Code still uses my Claude.ai account?
Sign out first: Claude Code panel → account icon → Sign Out. Restart VS Code.
Q: Updated settings.json but nothing changed?
Restart VS Code completely — just saving isn't enough.
Q: It worked yesterday but not today?
Zscaler ZPA has a 7-day session timeout. Check system tray → reconnect.
Q: How do I check which connection I'm using?
Terminal: echo $env:ANTHROPIC_BASE_URL (Win) or echo $ANTHROPIC_BASE_URL (Mac). Should show the gateway URL.
Q: Migrating from Azure Foundry direct? (Mac/Linux)
Remove from ~/.zshrc: CLAUDE_CODE_USE_FOUNDRY, ANTHROPIC_FOUNDRY_RESOURCE, ANTHROPIC_FOUNDRY_API_KEY. Run source ~/.zshrc.
Q: Should I set ANTHROPIC_MODEL?
No — leave unset. It overrides model selection and may disable features like extended context.
Q: Can I use the same models?
Models available depend on your tier — Standard = Sonnet 5 + Haiku (no Opus); Opus needs Power or higher. See "Recommended Models" above, and request an upgrade on the Per User tab if you need more.
docs/migration.md in the repoUse Codex (GPT models) through the same Vituity AI Gateway. Same key as Claude Code.
VS Code Extension:
CLI (optional): Open PowerShell and run:
Open PowerShell and paste this — it sets your API key and creates the config file in one go:
Restart VS Code, then open the Codex panel and ask it something. If it responds, you're all set!
VS Code Extension:
CLI (optional): Open Terminal and run:
Open Terminal and paste this — it sets your API key and creates the config file in one go:
Restart VS Code, then open the Codex panel and ask it something. If it responds, you're all set!
Paste this into your terminal:
Open a new terminal and run:
If Codex responds, you're all set!
Call the AI Gateway from custom apps, SDKs, and pipelines — choose your API format (Anthropic / OpenAI) below. Auth via API key (x-api-key) or Entra token (no keys).
The gateway supports two auth methods. Use whichever fits your app:
| Method | Best For | Credentials | Token Expires |
|---|---|---|---|
| API Key | Claude Code, Codex CLI | APIM subscription key | Never (until rotated) |
| Entra Token | Custom apps, SDKs, pipelines | Entra identity (no keys) | 1 hour (auto-refreshes) |
For apps running on Azure VM, App Service, AKS, or Functions — no credentials needed at all.
Prerequisites:
sg-haute-foundry-apps via the portal (Operations → Add App)Code (no secrets):
Install:
Developer laptop (picks up az login session):
Service Principal (automated apps):
Prerequisites: Azure CLI installed, Vituity account, member of sg-sdk-sandbox-users
Step 1 — Login (one-time):
Step 2 — Get token and call API:
Claude (Anthropic):
OpenAI / GPT:
x-api-key for the API key. The OpenAI & Azure-OpenAI SDKs send the key as Authorization: Bearer or api-key by default — the gateway rejects both (401). Send the APIM key in the x-api-key header instead (override via default_headers). Entra tokens do use Authorization: Bearer.max_completion_tokens (not max_tokens). Chat path needs ?api-version=2025-04-01-preview.Identity must be in sg-haute-foundry-apps (Operations → Add App). Entra tokens use Authorization: Bearer, so the SDK works without header overrides.
API key (note the default_headers override — required):
Chat completions (GPT) — API key:
Responses API (Codex):
Entra token (apps) — swap the key header for a Bearer token:
| Format | Endpoint | Use For |
|---|---|---|
| Anthropic | https://apim-haute-sdk.azure-api.net/v2/anthropic/v1/messages | Claude models |
| OpenAI (chat) | https://apim-haute-sdk.azure-api.net/v2/openai/deployments/{model}/chat/completions | GPT models |
| OpenAI (responses) | https://apim-haute-sdk.azure-api.net/v2/openai/v1/responses | Codex CLI |
Authorization: Bearer <token> or x-api-key: <subscription-key>| Group | For | How to Join |
|---|---|---|
| sg-sdk-sandbox-users | Human users | Admin adds via portal → Operations → Add User |
| sg-foundry-admins | Admins | Entra admin adds directly |
| sg-haute-foundry-apps | Service principals / managed identities | Admin adds via portal → Operations → Add App |
The gateway is a private endpoint — reachable only over the private network, not the public internet. Laptops reach it via Zscaler ZPA; servers reach it via VNet routing (not ZPA). A server/VNet needs both:
privatelink.azure-api.net to the private IP (link the private DNS zone to the VNet, or conditionally forward that zone to Azure DNS from a linked VNet).Download approved packages and setup guides. Unzip and follow the instructions inside.
Ready-to-edit config files — Claude CLI settings.json and VS Code settings.json (with key placeholder) plus a setup guide and where each file goes.
__APIM_KEY__ with your key
Complete setup guide for the Haute AI platform. Step-by-step instructions for getting started.
Full Haute platform package — includes ht CLI (Mac/Windows/Linux), MCP configs, setup guides, skills guide, and install scripts.
Access Outlook email, Teams chat, SharePoint documents, and calendar from Claude Code.
Search incidents, view tickets, check change requests, and query the CMDB from Claude Code.
Enterprise AI platform providing secure, governed access to AI models with full cost visibility and self-service onboarding.
Without centralization, individual API keys across teams create shadow AI spend — no visibility into who is using what, no cost controls, no audit trail, and no compliance posture. Every team managing their own keys means duplicated costs, security gaps, and zero governance.
Real-time spend tracking per user and per model. Tiered usage limits prevent runaway costs. Full audit trail for compliance and reporting.
Users onboard themselves in under 2 minutes. No tickets, no provisioning delays. Administrators retain full control over access and permissions.
Dashboard with usage metrics, health status, and per-user analytics. See exactly where every token goes across all teams and models.
| Phase | Milestone | What It Delivered | Status |
|---|---|---|---|
| 1 | AI Gateway & Admin Portal | Centralized APIM gateway with API key authentication, RBAC-based admin console, self-service user onboarding, and private endpoint networking via Zscaler ZPA. | Live |
| 2 | Multi-Model Support | Added OpenAI and Codex models alongside Claude. Single API key works across all providers. Same monitoring, same rate limits, same audit trail. | Live |
| 3 | Tool Catalog | MCP package catalog with downloadable tool packages for M365, ServiceNow, and platform setup. One-click install for approved integrations. | Live |
| 4 | Dual Authentication | Added Microsoft Entra token authentication alongside API keys — making the gateway dual-auth (API key + developer Entra token). Lets developer apps, SDKs, and pipelines call the gateway with no stored keys (managed identity / service principals). | Live |
| 5 | Tiered Usage Controls | Three usage tiers (Standard, Power, Unlimited) with per-user rate limits. Self-service upgrade requests. Admins manage tiers from the dashboard. | Live |
| 6 | Model Governance | Gateway-enforced model allow-lists per tier. Standard: Sonnet + Haiku. Power: all deployed models. Unlimited: everything. Blocks premium models (e.g. Opus at ~5x Sonnet cost) for lower tiers to prevent unintended spend. | Live |