# How to Build the denoland/celld Project: Complete Rust Build Guide

> Build the denoland/celld project easily with this Rust guide. Clone the repo and run cargo build --release to compile the celld daemon. Get your binary at target/release/celld.

- Repository: [Deno/celld](https://github.com/denoland/celld)
- Tags: how-to-guide
- Published: 2026-09-05

---

**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`:
  ```bash
  curl https://sh.rustup.rs -sSf | sh
  ```

- **Optional:** `esbuild` on your `PATH` if you plan to build the example workers (documented in the repository [[`README.md`](https://github.com/denoland/celld/blob/main/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)](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

```bash
git clone https://github.com/denoland/celld.git
cd celld

```

### 2. Compile the Release Binary

```bash
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)](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)](https://github.com/denoland/celld/blob/main/crates/celld/startup.rs).

### 3. Verify the Build

```bash
./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

```bash
./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:

```bash
cargo run --example wsecho

```

Alternatively, start the daemon manually and test against it:

```bash

# 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)](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:

```bash
cargo build --release --features s3,gcs

```

Available features include:
- `s3` — Amazon S3-compatible object storage
- `gcs` — Google Cloud Storage
- `azblob` — Azure Blob Storage

### Run the Test Suite

```bash
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)](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)](https://github.com/denoland/celld/blob/main/crates/ltx/src/ltx.rs).

## Quick Reference: Complete Build Commands

```bash

# 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 --release` produces `target/release/celld`
- **Local development:** `./target/release/celld dev` starts a node without external dependencies
- **Feature flags:** Add `--features s3,gcs,azblob` for cloud storage backends
- **Entry points:** CLI parsing in [[`crates/celld/startup.rs`](https://github.com/denoland/celld/blob/main/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)](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)](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.