# What Programming Languages Does CodexBar Support?

> Discover the extensive programming language support in CodexBar. It works with any language your LLM provider supports, like Python, JavaScript, Java, C++, and more. Learn about its flexible capabilities.

- Repository: [Peter Steinberger/CodexBar](https://github.com/steipete/CodexBar)
- Tags: api-reference
- Published: 2026-07-07

---

**CodexBar supports any programming language that the underlying Large Language Model (LLM) provider can generate—including Python, JavaScript, TypeScript, Java, C++, C#, Go, Rust, Swift, and Ruby—because the Swift 6 macOS application acts as a thin client that forwards requests to AI providers without imposing language restrictions.**

CodexBar is a native macOS menu-bar application written in **Swift 6** (defined in the top-level [`Package.swift`](https://github.com/steipete/CodexBar/blob/main/Package.swift)) that provides quick access to AI coding assistance. When developers ask what programming languages does CodexBar support, the answer depends entirely on which LLM provider is active, as the app functions as a universal interface to multiple AI backends rather than a language-specific compiler or interpreter.

## How CodexBar Handles Language Support

Although CodexBar itself is implemented in **Swift 6** and targets macOS 14+, the application does not process code or impose syntax limitations. Instead, it forwards usage-data requests and queries to external LLM providers. Consequently, the programming language support is **inherited from the selected provider's model**. Any language that the underlying AI understands—from compiled languages like C and Rust to scripting languages like Python and Bash—can be used through CodexBar.

The core provider registry that enumerates these backends lives in [`Sources/CodexBarCore/Providers/ProviderDescriptorRegistry.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/ProviderDescriptorRegistry.swift). This file defines the complete list of available integrations, while specific provider implementations reside in their respective subdirectories under `Sources/CodexBarCore/Providers/`.

## Supported LLM Providers and Their Language Coverage

CodexBar integrates with eight primary LLM providers, each offering broad multi-language support:

- **OpenAI / ChatGPT** ([`Sources/CodexBarCore/Providers/ProviderDescriptorRegistry.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/ProviderDescriptorRegistry.swift)): Supports Python, JavaScript, TypeScript, Java, C++, Go, Ruby, PHP, Rust, and most mainstream languages.

- **Claude (Anthropic)** ([`Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/Claude/ClaudeProviderDescriptor.swift)): Covers Python, JavaScript, Java, C#, C++, Rust, Swift, Kotlin, and others.

- **Gemini (Google)** ([`Sources/CodexBarCore/Providers/Gemini/GeminiProviderDescriptor.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/Gemini/GeminiProviderDescriptor.swift)): Includes Python, JavaScript, Go, C++, Java, Kotlin, Swift, and more.

- **Vertex AI** ([`Sources/CodexBarCore/Providers/VertexAI/VertexAIProviderDescriptor.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/VertexAI/VertexAIProviderDescriptor.swift)): Same language coverage as Gemini, leveraging Google's ML stack.

- **Azure OpenAI** ([`Sources/CodexBarCore/Providers/AzureOpenAI/AzureOpenAIProviderDescriptor.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/AzureOpenAI/AzureOpenAIProviderDescriptor.swift)): Supports Python, JavaScript/TypeScript, C#, Java, Go, and enterprise-focused languages.

- **Perplexity** ([`Sources/CodexBarCore/Providers/Perplexity/PerplexityProviderDescriptor.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/Perplexity/PerplexityProviderDescriptor.swift)): Broad coverage across most mainstream programming languages.

- **Windsurf** ([`Sources/CodexBarCore/Providers/Windsurf/WindsurfProviderDescriptor.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/Windsurf/WindsurfProviderDescriptor.swift)): Language support matches the underlying model (typically Claude or Gemini).

- **Additional Providers**: The [`ProviderDescriptorRegistry.swift`](https://github.com/steipete/CodexBar/blob/main/ProviderDescriptorRegistry.swift) file also registers support for Alibaba, Mistral, Kimi, and other specialized providers, each inheriting their respective model's language capabilities.

Because these models are trained on diverse codebases, they also handle domain-specific languages like SQL, HTML/CSS, and Markdown.

## Technical Implementation and Provider Switching

The app uses an enum-based registry system to manage provider implementations. The `UsageProvider` enum (defined in [`Sources/CodexBarCore/Providers/UsageProvider.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/UsageProvider.swift)) lists all supported backends, while [`ProviderCatalog.swift`](https://github.com/steipete/CodexBar/blob/main/ProviderCatalog.swift) ([`Sources/CodexBarWidget/ProviderCatalog.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarWidget/ProviderCatalog.swift)) provides the public façade that maps these enum cases to concrete implementations.

To query usage statistics or switch providers programmatically, the CLI and UI layers interact with these registries:

```swift
// Query usage for a specific provider via CLI
let args = ["codexbar", "--provider", "claude", "--show-usage"]
await Process.run("/usr/local/bin/CodexBarCLI", args)

// Switch active provider from the UI layer
await StatusItemController.shared.setActiveProvider(.gemini)

// Lookup provider implementation programmatically
if let impl = ProviderCatalog.implementation(for: .openai) {
    print("Found OpenAI implementation: \(type(of: impl))")
}

```

Command-line provider selection is handled by [`Sources/CodexBarCLI/CLIOptions.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCLI/CLIOptions.swift), which parses the `--provider <name>` flag. The menu-bar UI logic resides in `Sources/CodexBar/StatusItemController+ProviderSwitcher.swift`, allowing users to toggle providers dynamically.

## Summary

- CodexBar is written in **Swift 6** and runs on macOS 14+, but imposes no language restrictions on code generation.
- Language support is determined by the active **LLM provider** (OpenAI, Claude, Gemini, Azure OpenAI, Perplexity, Windsurf, etc.).
- Provider definitions are centralized in [`Sources/CodexBarCore/Providers/ProviderDescriptorRegistry.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/ProviderDescriptorRegistry.swift).
- Users can switch providers via the CLI ([`Sources/CodexBarCLI/CLIOptions.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCLI/CLIOptions.swift)) or menu-bar UI (`Sources/CodexBar/StatusItemController+ProviderSwitcher.swift`).
- All major programming languages—from Python and JavaScript to C++, Rust, and Swift—are supported depending on the backend model selected.

## Frequently Asked Questions

### Does CodexBar only support Swift and Apple ecosystem languages?

No. While CodexBar itself is a native Swift 6 application defined in [`Package.swift`](https://github.com/steipete/CodexBar/blob/main/Package.swift), it acts as a client to external LLM providers. These providers support dozens of languages including Python, Java, C++, Go, Ruby, and JavaScript, independent of the client's implementation language.

### How do I switch providers to access different language capabilities?

You can switch providers using the `--provider` flag in the CLI (defined in [`Sources/CodexBarCLI/CLIOptions.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCLI/CLIOptions.swift)) or through the menu-bar interface handled by `StatusItemController+ProviderSwitcher.swift`. The [`ProviderCatalog.swift`](https://github.com/steipete/CodexBar/blob/main/ProviderCatalog.swift) facade manages the mapping between user selection and the concrete provider implementation.

### Can I use CodexBar for SQL, HTML, or Bash scripting?

Yes. Because CodexBar forwards requests to general-purpose LLMs like GPT-4 and Claude, it supports domain-specific languages including SQL, HTML/CSS, Markdown, and shell scripting (Bash/Zsh), provided the selected provider's model has been trained on these syntaxes.

### Where is the provider configuration defined in the source code?

The complete list of supported providers is enumerated in [`Sources/CodexBarCore/Providers/UsageProvider.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/UsageProvider.swift), with their implementations registered in [`Sources/CodexBarCore/Providers/ProviderDescriptorRegistry.swift`](https://github.com/steipete/CodexBar/blob/main/Sources/CodexBarCore/Providers/ProviderDescriptorRegistry.swift). Individual provider configurations (API endpoints, authentication schemes) are stored in their respective descriptor files under `Sources/CodexBarCore/Providers/<ProviderName>/`.