Skip to content

Installation

Kreuzcrawl provides native bindings for 11 languages plus Docker and CLI distribution. Choose your platform below.


Language Bindings

Add to your Cargo.toml:

Cargo.toml
[dependencies]
kreuzcrawl = "0.1"
tokio = { version = "1", features = ["full"] }

Optional feature flags:

Feature Description
browser Headless Chrome via chromiumoxide
ai LLM extraction via liter-llm
tracing OpenTelemetry span recording
interact Page interaction actions (requires browser)
mcp Model Context Protocol server
api REST API server via Axum
warc WARC archive output

Enable features as needed:

Cargo.toml
[dependencies]
kreuzcrawl = { version = "0.1", features = ["browser", "ai", "mcp"] }

Rust version

Kreuzcrawl requires Rust 1.91+ (edition 2024).

Requires Python 3.10+. Install from PyPI:

pip install kreuzcrawl

Or with uv:

uv add kreuzcrawl

The package ships pre-built wheels with the Rust core compiled via maturin. No Rust toolchain needed.

Install the @kreuzberg/kreuzcrawl package:

npm install @kreuzberg/kreuzcrawl

Or with pnpm:

pnpm add @kreuzberg/kreuzcrawl

The package includes pre-built native binaries via NAPI-RS and ships with TypeScript type definitions (.d.ts).

Requires Ruby 3.2+. Add to your Gemfile:

Gemfile
gem "kreuzcrawl", "~> 0.1"

Then:

bundle install

Or install directly:

gem install kreuzcrawl

The gem includes a native extension built with Magnus and rb_sys.

Requires Go 1.21+. The Go bindings use cgo with the C FFI layer:

go get github.com/kreuzberg-dev/kreuzcrawl

Build requirement

A C compiler is required. The kreuzcrawl shared library must be available at link time.

Requires Java 21+ (Panama FFM). Add the Maven dependency:

pom.xml
<dependency>
    <groupId>dev.kreuzberg</groupId>
    <artifactId>kreuzcrawl</artifactId>
    <version>0.1.0</version>
</dependency>

The Java bindings use the Panama Foreign Function & Memory API to call the C FFI layer.

Requires .NET 8+. Add the NuGet package:

dotnet add package Kreuzcrawl

Or in your .csproj:

Kreuzcrawl.csproj
<PackageReference Include="Kreuzcrawl" Version="0.1.0" />

The C# bindings use P/Invoke to call the C FFI layer.

Requires PHP 8.2+. Install the extension via Composer:

composer require kreuzberg/kreuzcrawl

The PHP bindings are built with ext-php-rs and load as a native PHP extension.

Verify the extension is loaded

php -m | grep kreuzcrawl

Requires Elixir 1.14+ with OTP 25+. Add to your mix.exs:

mix.exs
defp deps do
  [
    {:kreuzcrawl, "~> 0.1.0"}
  ]
end

Then:

mix deps.get
mix compile

The Elixir bindings use Rustler NIFs.

For browser or Node.js environments via wasm-bindgen:

npm install @kreuzberg/kreuzcrawl-wasm
import init from "@kreuzberg/kreuzcrawl-wasm";
await init();

Limitations

The WASM build runs in a single-threaded environment. Features requiring std::thread or synchronous I/O are not available.

For languages not listed above, kreuzcrawl provides a C-compatible FFI layer. Build the shared library:

cargo build --release -p kreuzcrawl-ffi

The output is a shared library (libkreuzcrawl.so / libkreuzcrawl.dylib / kreuzcrawl.dll) with C headers generated by cbindgen.


Docker

Pull the official image:

docker pull ghcr.io/kreuzberg-dev/kreuzcrawl:latest

Run the CLI:

docker run --rm ghcr.io/kreuzberg-dev/kreuzcrawl:latest scrape https://example.com

Run with a volume for WARC output:

docker run --rm -v $(pwd)/output:/output \
  ghcr.io/kreuzberg-dev/kreuzcrawl:latest \
  crawl https://example.com --depth 2 --warc-output /output/archive.warc

CLI

Homebrew (macOS / Linux)

brew install kreuzberg-dev/tap/kreuzcrawl

Cargo

cargo install kreuzcrawl-cli

With optional features:

cargo install kreuzcrawl-cli --features "api,mcp"

Verify the installation:

kreuzcrawl --version