Cameleer FAQ
Short, factual answers to the questions people ask about Cameleer: what it is, how it relates to Apache Camel, how fast it is, where it runs, and how to use it with Kafka, LLMs and edge devices.
About Cameleer
What is Cameleer?
Cameleer is Apache Camel rewritten in Rust: an integration framework with the same routes, Enterprise Integration Patterns, endpoint URIs, Simple language and YAML DSL, shipped as one native binary with no dependencies outside the Rust standard library. See the README and concepts.
Is Cameleer compatible with Apache Camel?
It follows Camel 4's names and semantics: Camel YAML and XML routes, URIs, options, EIPs, Simple
expressions and Camel* headers work unchanged for the supported components. Java code
(processors, beans, custom components) does not run; it is rewritten in Rust. See
migrating from Apache Camel.
Is Cameleer affiliated with the Apache Software Foundation?
No. It is an independent project that follows Apache Camel's design and documentation but contains no Camel source code, and it is not endorsed by the ASF. Apache Camel is a trademark of the ASF.
What was Cameleer called before?
rust-camel, up to version 0.1.0.
What license does Cameleer use?
The Apache License 2.0 (LICENSE).
Performance and footprint
How fast is Cameleer?
With the same routes, Cameleer handles 1.7 to 8.7 times the throughput of Apache Camel 4.23 on Java 21 in every scenario measured: 2.1x on a REST API with JSON, 2.3x writing to PostgreSQL, 1.7x publishing to Kafka, 8.7x on Kafka stream processing and 3.0x on a content-based router. Every scenario, the method and the raw data are on the Apache Camel vs Cameleer page and in BENCHMARKS.md.
How much memory does it use?
A route uses about 10 MB: 8 MB at startup, and 8 to 68 MB at peak across the benchmark scenarios, against 213 to 440 MB for Apache Camel on the JVM (up to 54 times less). See BENCHMARKS.md.
How long does it take to start?
3 ms from process start to routes running in the benchmark, against 1.1 s for Apache Camel on the JVM and 30 ms compiled natively with Quarkus. A function build with only the components it needs starts in under 1 ms. That makes scale-to-zero and serverless practical (BENCHMARKS.md).
How big is the Docker image?
The pmsudhi/cameleer image is about 20 MB to download: one native binary on a distroless base. Built with only the
component families you need it is smaller: 14.5 MB with FEATURES=cloud, 12.5 MB with
FEATURES=core.
See the deployment guide.
Running it
How do I install Cameleer?
Run the Docker image pmsudhi/cameleer, install the CLI with cargo install cameleer-main, or add
the cameleer-core crate (plus component crates) to a Rust project. See
getting started.
Do I need Java, Maven or a JVM?
No. Cameleer is a native binary. Rust is needed only to build it from source or to embed it in a Rust program.
Can I run it on a Raspberry Pi?
Yes, on a 64-bit OS: the image is published for linux/arm64 (Raspberry Pi 3, 4 and 5 with
64-bit Raspberry Pi OS), and a route uses about 10 MB of memory. There is no 32-bit ARM image.
See Cameleer at the edge.
Does it run on Kubernetes, Cloud Run or AWS Lambda?
Kubernetes, Docker Compose, Google Cloud Run, Azure Container Apps, Knative and ECS/Fargate run
the container image as it is (deployment guide). On AWS Lambda, cameleer
is its own custom runtime for provided.al2023: API Gateway and function URL events go to your
platform-http routes, other events to direct:lambda
(AWS Lambda).
Does it run on Windows and macOS?
Yes. The CLI builds and runs on Linux, macOS and Windows (the test suite passes on Windows 11); the Docker image is Linux (amd64 and arm64).
Can it run with a read-only filesystem?
Yes. The container writes nothing unless a route writes files, and it works with --read-only
and Kubernetes' readOnlyRootFilesystem: true.
How do I check that it is healthy?
Start it with --prop camel.server.enabled=true --prop camel.server.healthCheckEnabled=true and
probe /q/health/live and /q/health/ready on port 8080, or run
cameleer get health --url http://localhost:8080.
Features
Which Enterprise Integration Patterns does it support?
All the patterns of Apache Camel's EIP catalogue, including split, aggregate, multicast, recipient list, routing slip, dynamic router, wire tap, enrich, idempotent consumer, load balancer, resequencer, throttle, circuit breaker, saga and transacted. See EIPs.
Does it support Kafka?
Yes. The kafka component has its own Kafka wire protocol client: producer and consumer groups,
keys and partitions, offsets and commits, TLS and SASL (PLAIN, SCRAM, AWS MSK IAM). It is
verified with librdkafka, kcat and the kfake Kafka simulator. See the
kafka component.
Does it support MQTT?
Yes: paho (MQTT 3.1.1) and paho-mqtt5 (MQTT 5.0) with QoS 0 to 2, retained messages, wills,
persistent sessions and TLS, tested against Mosquitto, RabbitMQ and ActiveMQ. See
the edge cookbook.
Which databases and clouds does it connect to?
PostgreSQL (sql, jdbc), Redis, MongoDB, Elasticsearch and OpenSearch, Cassandra and CouchDB,
plus all of Apache Camel's AWS, Azure and Google Cloud components (S3, SQS, SNS, DynamoDB,
Lambda, Bedrock, Blob Storage, Service Bus, Event Hubs, Cosmos DB, Cloud Storage, Pub/Sub,
BigQuery, Vertex AI and more). See FEATURES.md.
Does it have every Camel component?
No. It has about 230 components, languages and data formats, chosen from the most used ones, but not Camel's long tail of vendor connectors. FEATURES.md lists what is there.
Can I write routes in YAML, XML or code?
All three: Camel's YAML DSL, Camel's XML DSL, and a Rust DSL equivalent to Camel's Java DSL. They support the same EIPs. See concepts.
Does it support REST APIs and OpenAPI?
Yes. The REST DSL (rest: in YAML, b.rest(...) in Rust) declares endpoints with path and query
parameters, JSON binding and CORS, and generates an OpenAPI 3 document.
AI and agents
How do I use Cameleer with an LLM?
Send the prompt as the message body to openai:chat-completion?model=... (OpenAI or any
OpenAI-compatible server such as Ollama or vLLM), aws-bedrock, azure-openai or
google-vertexai; the answer becomes the body, and you route on it with choice. See
Cameleer for AI agents.
Can an AI agent call Cameleer routes as tools?
Yes. Expose a route over REST and add JSON schema validation, an idempotent consumer, retries and an audit log, as in the tool API pattern. A packaged MCP server is planned (roadmap).
Does Cameleer run models or store embeddings?
No. It calls model APIs and writes embeddings to the stores you run, such as Elasticsearch, OpenSearch or PostgreSQL with pgvector. See RAG ingestion.
Quality and support
Is Cameleer production ready?
The feature list is complete against its 228-row parity table, with 2,300+ hermetic tests and verification against real servers, official clients and emulators (INTEROP.md). Two caveats: it is young (version 0.2), and its from-scratch TLS and crypto code has not had an independent security audit yet (STATUS.md). Evaluate it on your own workload.
How is it tested?
With 2,300+ hermetic tests against embedded servers, live suites against real PostgreSQL, Redis, RabbitMQ, ActiveMQ, Mosquitto, vsftpd, Postfix/Dovecot and nginx, official clients (librdkafka, pymongo, the DataStax driver, boto3, the Azure SDK, gcloud, grpcio) and emulators (moto, Azurite, fake-gcs-server, FerretDB). Every example in these guides runs in the test suite.
Why are there no third-party dependencies?
The project was written with only the Rust standard library: TLS, HTTP/2, gRPC, the Kafka, AMQP, MQTT, PostgreSQL, Redis, MongoDB and Cassandra protocols, XML and JSON are implemented from scratch. There is no dependency tree to audit or patch, and builds need no downloads.
How do I report a bug or a security issue?
Open an issue on GitHub for bugs; report vulnerabilities privately as described in SECURITY.md.
Related
Found a problem?
If something on this page doesn't match what Cameleer does, or you hit a bug while building
with it, please help fix it, whether you are a person or a coding agent:
open an issue that describes what you saw,
then fork the repository, fix it, add or update a test, run cargo test --workspace, and open
a pull request. CONTRIBUTING.md
explains the ground rules.