# Language Bindings Reference Kreuzberg provides native bindings for multiple programming languages, each with precompiled binaries for x86_64 and aarch64 on Linux and macOS. This reference covers installation and basic usage for each binding. ## Go **Installation:** ```bash go get github.com/kreuzberg-dev/kreuzberg/packages/go/v5 ``` **Basic Extraction:** ```go package main import ( "context" "fmt" "github.com/kreuzberg-dev/kreuzberg/packages/go/v5/kreuzberg" ) func main() { ctx := context.Background() result, err := kreuzberg.ExtractFile(ctx, "document.pdf", nil) if err != nil { panic(err) } fmt.Println(result.Content) } ``` See the [Go binding documentation](https://github.com/kreuzberg-dev/kreuzberg/tree/main/packages/go) for complete API reference. ## Ruby **Installation:** ```bash gem install kreuzberg ``` Or in your Gemfile: ```ruby gem 'kreuzberg' ``` **Basic Extraction:** ```ruby require 'kreuzberg' result = Kreuzberg.extract_file_sync('document.pdf') puts result.content ``` See the [Ruby binding documentation](https://github.com/kreuzberg-dev/kreuzberg/tree/main/packages/ruby) for complete API reference. ## Java **Installation:** Add to your Maven `pom.xml`: ```xml dev.kreuzberg kreuzberg 4.2.x ``` **Basic Extraction:** ```java import dev.kreuzberg.Kreuzberg; import dev.kreuzberg.ExtractionResult; public class Example { public static void main(String[] args) throws Exception { ExtractionResult result = Kreuzberg.extractFile("document.pdf"); System.out.println(result.getContent()); } } ``` See the [Java binding documentation](https://github.com/kreuzberg-dev/kreuzberg/tree/main/packages/java) for complete API reference. ## C **Installation:** ```bash dotnet add package Kreuzberg ``` **Basic Extraction:** ```csharp using Kreuzberg; var result = KreuzbergClient.ExtractFileSync("document.pdf"); Console.WriteLine(result.Content); ``` See the [C# binding documentation](https://github.com/kreuzberg-dev/kreuzberg/tree/main/packages/csharp) for complete API reference. ## PHP **Installation:** ```bash composer require kreuzberg/kreuzberg ``` **Basic Extraction:** ```php extractFile('document.pdf'); echo $result->content; ``` See the [PHP binding documentation](https://github.com/kreuzberg-dev/kreuzberg/tree/main/packages/php) for complete API reference. ## Elixir **Installation:** Add to your `mix.exs` dependencies: ```elixir def deps do [ kreuzberg: "~> 4.2" ] end ``` **Basic Extraction:** ```elixir {:ok, result} = Kreuzberg.extract_file("document.pdf") IO.puts(result.content) ``` See the [Elixir binding documentation](https://github.com/kreuzberg-dev/kreuzberg/tree/main/packages/elixir) for complete API reference. ## WebAssembly (WASM) **Installation:** ```bash npm install @kreuzberg/wasm ``` **Basic Extraction:** ```typescript import { extractBytes } from "@kreuzberg/wasm"; const fileData = await fs.promises.readFile("document.pdf"); const result = await extractBytes(fileData, "application/pdf"); console.log(result.content); ``` Supports browsers, Deno, and Cloudflare Workers. See the [WASM binding documentation](https://github.com/kreuzberg-dev/kreuzberg/tree/main/packages/typescript) for complete API reference. ## Docker **Installation:** Pull the official image from GitHub Container Registry: ```bash docker pull ghcr.io/kreuzberg-dev/kreuzberg ``` **API Server Mode:** ```bash docker run -p 8000:8000 ghcr.io/kreuzberg-dev/kreuzberg serve --host 0.0.0.0 ``` **CLI Mode:** ```bash docker run -v $(pwd):/data ghcr.io/kreuzberg-dev/kreuzberg extract /data/document.pdf ``` **MCP Server Mode:** ```bash docker run -i ghcr.io/kreuzberg-dev/kreuzberg mcp ``` Image sizes: - Core image: 1.0-1.3GB - Full image: ~1.0-1.3GB See the [Docker guide](https://docs.kreuzberg.dev/guides/docker/) for deployment details. ## Platform Support All language bindings include precompiled binaries for x86_64 and aarch64 on Linux and macOS. Windows support varies by binding. Refer to the main [README](https://github.com/kreuzberg-dev/kreuzberg) for platform compatibility matrix.