Personal IDE keys
Devs sign in via your company SSO. Their CLIs (Claude Code, Codex,
Cursor, Gemini CLI) talk to the gateway with a per-user virtual
key. Per-user attribution, per-user budgets, one revoke kills it
everywhere.
Admin policy plane
Connect providers once, publish routing policies once, define
budgets once. Users inherit it all without picking a model
provider, an order, or a fallback chain.
LangWatch CLI
The
langwatch binary wraps every coding-assistant
CLI. langwatch login handles SSO; langwatch
claude exec’s Claude Code with the right env vars
pre-injected.What problem this solves
Enterprises rolling out AI tooling hit the same wall, in this order:- Devs use Claude Code, Codex, Cursor, Gemini CLI. Each tool wants its own API key. Ops are now distributing dozens of long-lived raw keys via tickets and Slack DMs.
- Per-engineer cost attribution becomes impossible. Anthropic’s admin console shows one big workspace bill; you can’t tell if it was your senior engineer or a runaway loop.
- Off-boarding is a manual sweep. When someone leaves, who tracks down all the keys they had?
- Security gets uncomfortable. A key on someone’s laptop is one stolen laptop away from being the company’s API bill.
Architecture at a glance
organization_id, project_id,
principal_id, personal: true) so dashboards, audit, and budgets
attribute usage to the right person without leaking tokens.
What stays the same vs the existing AI Gateway
- Virtual keys still drive every request. Personal VKs are the
same shape as service VKs — same
vk-lw-…secret format, same gateway code path. The discriminator is the project the VK lives in (Project.isPersonal=true). - The OpenAI-compatible API at
/api/v1/*is unchanged. Any tool that already speaks the gateway speaks personal keys with no code change. - Existing project + service-account flows keep working. Personal keys are an addition, not a replacement.
What’s new
- Routing policies decouple the credential from the provider chain — see Routing policies.
- The dispatcher now filters the credential chain by the request’s resolved model so a personal VK with multiple providers doesn’t waste fallback budget hitting wrong-provider creds first.
- Per-user JWT claims and trace attribution land everywhere automatically.
Rollout & permissions
Governance ships behind two independent feature flags so pilots can turn on the data plane (gateway) without committing to the full governance UI surface:release_ui_ai_gateway_menu_enabled— exposes the AI Gateway nav surface (virtual keys, providers, routing policies). Ships first.release_ui_ai_governance_enabled— unlocks the Governance home (/governance), ingestion sources, anomaly rules, compliance export. Ships after gateway adoption is proven in the org.
FEATURE_FLAG_FORCE_ENABLE=release_ui_ai_gateway_menu_enabled
in langwatch/.env.
When a gateway is wired up, the chrome is persona-aware: admins
land on the org switcher + governance KPIs; engineers using a CLI
land on personal-key management; LLMOps users (the majority) see the
existing dashboard with zero chrome change. See
Personal IDE keys for the
full storyboard.
Permissions are governed by an RBAC catalog (not by ADMIN/MEMBER
role alone): governance:view/manage, ingestionSources:manage,
anomalyRules:manage, complianceExport:manage,
activityMonitor:view — assignable via the existing
CustomRolePermissions JSON column for delegation. Default role
attachments + delegation surface are documented in
Compliance architecture.
Where Personal IDE keys sit in the bigger picture
Personal IDE keys are Tier 1 — the proxy tier — of LangWatch’s five-tier control plane. The same primitives feed audit-log ingestion, OpenTelemetry, BYOK endpoint routing, and the sandboxed runtime. See Control plane & integration tiers for the full taxonomy and where each enterprise platform (Claude Code, Copilot Studio, Cowork, Workato, …) fits.Where to next
- For a dev who just wants to use the CLI: Personal IDE keys
- For the broader 5-tier control-plane story: Control plane & integration tiers
- For an admin onboarding their org: Admin setup
- For the full CLI reference:
langwatchCLI - For the model-aware routing policy: Routing policies