How to Build the denoland/celld Project: Complete Rust Build Guide
Clone the repository and run cargo build --release to compile the celld daemon; the binary appears at target/release/celld.
The denoland/celld project is a self-hosted Rust daemon that runs Cloudflare Workers and Durable Objects on your own infrastructure. Learning how to build the denoland/celld project from source gives you full control over deployment, feature selection, and local development. This guide walks through prerequisites, compilation steps, and advanced configuration options based on the actual source code structure.
Prerequisites for Building celld
Before compiling, ensure your environment meets these requirements:
-
Rust toolchain (version 1.70 or later) installed via
rustup:curl https://sh.rustup.rs -sSf | sh -
Optional:
esbuildon yourPATHif you plan to build the example workers (documented in the repository [README.md](https://github.com/denoland/celld/blob/main/README.md))
The project uses Cargo workspaces defined in the top-level [Cargo.toml](https://github.com/denoland/celld/blob/main/Cargo.toml), which coordinates multiple crates including celld, logic, ltx, and examples.
Step-by-Step Build Instructions
1. Clone the Repository
git clone https://github.com/denoland/celld.git
cd celld
2. Compile the Release Binary
cargo build --release
The compilation produces an optimized executable at target/release/celld. This binary contains the core runtime orchestration logic implemented in [crates/celld/lib.rs](https://github.com/denoland/celld/blob/main/crates/celld/lib.rs) and the CLI argument parsing in [crates/celld/startup.rs](https://github.com/denoland/celld/blob/main/crates/celld/startup.rs).
3. Verify the Build
./target/release/celld --help
Successful output displays the complete CLI usage, confirming the binary correctly links all workspace crates including the logic crate (cell lifecycle, scheduling, replication) and ltx crate (log-structured transaction format for durable replication).
4. Start a Local Development Node
./target/release/celld dev
This launches a single-node instance using a local .celld/dev store and binds to http://127.0.0.1:9876. No external bucket configuration is required for local development.
Building and Running Examples
The repository includes demonstration workers showcasing WebSocket handling, KV storage, and D1 database operations. Build and run the WebSocket echo example:
cargo run --example wsecho
Alternatively, start the daemon manually and test against it:
# Terminal 1: Start the daemon
./target/release/celld dev --port 8080
# Terminal 2: Connect with any WebSocket client to ws://127.0.0.1:9876
Example source code resides in [examples/wsecho/index.js](https://github.com/denoland/celld/blob/main/examples/wsecho/index.js).
Advanced Build Configuration
Enable Optional Storage Backends
The celld crate supports conditional compilation for cloud storage providers. Enable features during build:
cargo build --release --features s3,gcs
Available features include:
s3— Amazon S3-compatible object storagegcs— Google Cloud Storageazblob— Azure Blob Storage
Run the Test Suite
cargo test --all
Some integration tests require internet access for cloud storage validation. The test suite covers the runtime orchestration logic in [crates/celld/runtime.rs](https://github.com/denoland/celld/blob/main/crates/celld/runtime.rs) and the transaction format implementation in [crates/ltx/src/ltx.rs](https://github.com/denoland/celld/blob/main/crates/ltx/src/ltx.rs).
Quick Reference: Complete Build Commands
# Clone and enter repository
git clone https://github.com/denoland/celld.git && cd celld
# Build optimized release binary
cargo build --release
# Start local development server
./target/release/celld dev
# Build with cloud storage support
cargo build --release --features s3,gcs,azblob
# Run all tests
cargo test --all
Summary
- Primary build command:
cargo build --releaseproducestarget/release/celld - Local development:
./target/release/celld devstarts a node without external dependencies - Feature flags: Add
--features s3,gcs,azblobfor cloud storage backends - Entry points: CLI parsing in [
crates/celld/startup.rs](https://github.com/denoland/celld/blob/main/crates/celld/startup.rs), runtime in [crates/celld/runtime.rs](https://github.com/denoland/celld/blob/main/crates/celld/runtime.rs) - Core crates:
celld(binary),logic(scheduling/replication),ltx(durable transaction format)
Frequently Asked Questions
What Rust version is required to build celld?
Rust 1.70 or later is required. Install or update via rustup to ensure compatibility with the workspace dependencies declared in [Cargo.toml](https://github.com/denoland/celld/blob/main/Cargo.toml).
Where is the compiled binary located?
After running cargo build --release, the executable is at target/release/celld relative to the repository root. This path applies to all supported platforms (Linux, macOS, Windows).
Can I build celld without cloud storage features?
Yes. The base build cargo build --release includes only local storage support. Cloud backends are opt-in via feature flags—add --features s3, gcs, or azblob only when needed.
How do I run the example workers?
Use cargo run --example <name> or build manually with esbuild as noted in the README. The WebSocket echo demo (cargo run --example wsecho) provides the fastest validation that your build functions correctly.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →