JetBrains implemented a centralized access and accounting layer, named Central CLI, to manage rapidly increasing AI-related development costs. This system acts as a control plane for AI tool usage, providing visibility, spending limits, and maintaining developer choice across various third-party and internal AI services. The architectural shift moved from post-facto observation to active participation in AI traffic generation.
Read original on InfoQ ArchitectureJetBrains faced a significant challenge with AI spending, which increased tenfold in six months. This was primarily due to a diverse ecosystem where developers independently used multiple AI tools, making it difficult to track and control costs. The initial approach involved manual data collection, which was inefficient and provided only a snapshot view of expenditures.
To address the issue, JetBrains evolved its architecture in several stages. First, they automated usage and expense data collection through provider APIs, offering real-time visibility via internal dashboards. While this improved transparency, it didn't provide a direct mechanism for intervention, as requests still went straight from individual tools to providers. The critical architectural shift was the introduction of Central CLI.
Central CLI: A Shared Control Point
Central CLI acts as a common abstraction layer and proxy, routing all AI tool requests through JetBrains' existing internal AI platform. This transforms the platform from a passive observer into an active participant in AI traffic, enabling centralized control over spending, access management, and the application of internal AI credit systems.
The new architecture provides several benefits, including granular control over spending (per developer, team, or group), improved visibility, and the flexibility to adapt to the rapidly changing AI tool landscape without imposing strict restrictions. A key trade-off is the initial development effort for the Central CLI and the continuous work required to integrate new tools and refine budget allocation policies. It also adds a layer of indirection, which, if not carefully managed, could introduce latency or single points of failure, though the article implies this is handled effectively.