Celestia consensus node
See the codecelestia-app is the software used by validators and consensus nodes on the Celestia consensus network. celestia-app is a blockchain application built using parts of the Cosmos stack:
^ +-------------------------------+ ^
| | | |
| | State-machine = Application | |
| | | | celestia-app (built with Cosmos SDK)
| | ^ + | |
| +----------- | ABCI | ----------+ v
Celestia | | + v | ^
validator or | | | |
full consensus | | Consensus | |
node | | | |
| +-------------------------------+ | celestia-core (fork of CometBFT)
| | | |
| | Networking | |
| | | |
v +-------------------------------+ v
Install Go 1.26.9
Clone this repo
Install the celestia-appd binary. This installs a "multiplexer" binary that will also download embedded binaries for celestia-app v3 through v9.
make install
If you'd rather not install from source, you can download a prebuilt binary from the releases page.
Navigate to the latest release on https://github.com/celestiaorg/celestia-app/releases.
Download the binary for your platform (e.g. celestia-app_Linux_x86_64.tar.gz) from the Assets section. Tip: if you're not sure what platform you're on, you can run uname -a and look for the operating system (e.g. Linux, Darwin) and architecture (e.g. x86_64, arm64).
Extract the archive
tar -xvf celestia-app_Linux_x86_64.tar.gz
Verify the extracted binary works
./celestia-appd --help
(Optional) verify the prebuilt binary checksum. Download checksums.txt and then verify the checksum:
sha256sum --ignore-missing --check checksums.txt
You should see output like this:
celestia-app_Linux_x86_64.tar.gz: OK
See https://docs.celestia.org/operate/consensus-validators/install-celestia-app/ for more information.
This is the canonical matrix of operating systems that celestia-app is built for and tested against. For the OS versions a specific release was tested on, see the per-release entries in docs/release-notes/release-notes.md.
celestia-app's GitHub Actions workflows run all unit, integration, and lint jobs on:
| OS | Version | Architecture |
|---|---|---|
Ubuntu (ubuntu-latest) | Ubuntu 24.04 LTS (Noble Numbat) | x86_64 |
GitHub may advance ubuntu-latest to a newer LTS over time; see actions/runner-images for the current alias mapping.
Other OS / version combinations may work but are not exercised by CI and are not officially supported.
Note that arm64 binaries are cross-compiled via goreleaser but are not executed in CI; only the x86_64 build is exercised end-to-end.
The GitHub Releases page provides prebuilt binaries for:
| OS | Architectures |
|---|---|
| Linux | amd64, arm64 |
| macOS | amd64, arm64 |
Linux binaries built with the multiplexer require glibc >= 2.38 (Ubuntu 24.04 or equivalent). See Prerequisites for details.
Each release also ships the Fibre server as its own archive (fibre_Linux_x86_64.tar.gz, fibre_Darwin_arm64.tar.gz, etc.) for the same four platforms, built the same way and versioned in lockstep with celestia-appd. See fibre/cmd/README.md for usage.
celestia-appd binary does not support signing with Ledger hardware wallets.celestia-appd binary does not support signing with Ledger hardware wallets.[!CAUTION] If you are using the multiplexer binary (default
make build), the embedded binaries require glibc >= 2.38. This means Ubuntu 24.04 or later (or an equivalent distribution) is required. Nodes running older OS versions (e.g., Ubuntu 22.04) will fail to start with a glibc version mismatch error.
If you are on Linux, enable the BBR ("Bottleneck Bandwidth and Round-trip propagation time") congestion control algorithm.
# Check if BBR is enabled (Linux only).
make bbr-check
# If BBR is not enabled then enable it (Linux only).
make bbr-enable
| Variable | Explanation | Default value | Required |
|---|---|---|---|
CELESTIA_APP_HOME | Where the application files should be saved. | $HOME/.celestia-app | Optional |
Most flags can also be set with environment variables prefixed by the binary name, e.g. CELESTIA_APPD_PRUNING=nothing for --pruning.
Some command-specific flags, such as config sync --dry-run, ignore environment variables.
Client flags such as --node also accept the CELESTIA_APP_ prefix, e.g. CELESTIA_APP_NODE.
start flags only accept the CELESTIA_APPD_ prefix.
# Print help.
celestia-appd --help
# Create config files for a new chain named "test".
celestia-appd init test
# Start the consensus node.
celestia-appd start
celestia-appd config sync adds missing settings and their documentation using the binary's defaults. It syncs these files:
| File | Home directory |
|---|---|
config/config.toml (core) | --home |
config/server_config.toml (Fibre) | --fibre-home (or FIBRE_HOME), default ~/.celestia-fibre |
A file is skipped if it does not exist, so the command works on hosts that run only the node or only Fibre.
Synchronization runs only when this command is called, not on node startup.
Existing values, comments, ordering, and unknown settings are preserved; whitespace may be normalized when settings are added.
Flags and environment overrides are not saved.
Before replacing a file, it creates a <file>.backup-* file in the same directory. Earlier backups are never overwritten.
If nothing is missing, it leaves the file untouched.
To inspect additions or update the files before restarting:
celestia-appd config sync --home ~/.celestia-app --fibre-home ~/.celestia-fibre --dry-run
celestia-appd config sync --home ~/.celestia-app --fibre-home ~/.celestia-fibre
Then edit the fields under your node's and Fibre's home directories to set the values you want before restarting.
Read-only files, linked files, and TOML layouts that cannot be safely extended are left untouched. For deployment-managed configurations, add the reported settings to the source configuration. The command returns an error on failure.
Synchronization does not update app.toml, remove deprecated settings, or replace existing values with newer defaults.
Once a default is written, it remains an explicit value on later upgrades.
Existing binary overrides for consensus, mempool, and P2P settings still apply.
# Start a single node local testnet.
./scripts/single-node.sh
# Publish blob data to the local testnet.
celestia-appd tx blob pay-for-blob 0x00010203040506070809 0x48656c6c6f2c20576f726c6421 \
--chain-id test \
--from validator \
--keyring-backend test \
--fees 21000utia \
--yes
# Query the tx
celestia-appd query tx <txhash from previous command>
For instructions on running a node on Celestia's public networks, refer to the consensus node guide in the docs.
[!NOTE] When connecting to a public network, you must download the correct genesis file. Please use the
celestia-appd download-genesiscommand.
If you import celestia-app as a Go module, you may need to add some Go module replace directives to avoid type incompatibilities. Please see the replace directive in go.mod for inspiration.
If you are running celestia-app in tests, you may want to override the delayed_precommit_timeout to produce blocks faster. By default, a celestia-app chain with app version >= 3 will produce blocks every ~6 seconds. To produce blocks faster, you can override the delayed_precommit_timeout with the --delayed-precommit-timeout flag.
# Start celestia-appd with a one-second block time.
celestia-appd start --delayed-precommit-timeout 1s
Fibre (available from app v10) is Celestia's data availability protocol served by validator-operated fibre servers: blobs are erasure-coded and disseminated across the validator set instead of riding the data square. Depending on your role:
celestia-appd runs celestia-core and the Cosmos SDK application in one process when the native application version is active. Core handles consensus and networking; the application executes transactions and maintains module state. They communicate through ABCI. The servers below expose different services from that process.
flowchart TB
subgraph Appd["celestia-appd process — native application"]
Core["Core: consensus and networking<br/>RPC :26657 · gRPC :9098 · P2P :26656"]
App["Application: transaction execution and state<br/>gRPC :9090 · REST / gRPC-Web :1317"]
Signer["PrivValidator: local key or remote signer<br/>PrivVal gRPC :26669"]
Core <-->|"ABCI via multiplexer"| App
App -->|"Block API calls"| Core
Core -->|"Sign proposals and votes"| Signer
end
Peers["Other consensus nodes"] <-->|"P2P"| Core
Client["Fibre client"] <-->|"gRPC over TLS"| Fibre["Separate fibre process :7980<br/>Stores and serves blob shards"]
Fibre -->|"Query state via app gRPC"| App
Fibre -->|"Sign via PrivVal gRPC"| Signer
Signer -.->|"Optional remote-signing connection"| KMS["Separate KMS process"]
When replaying older application versions, the multiplexer runs an embedded application binary in a child process and forwards ABCI calls over gRPC. Core remains in the parent process.
The addresses below are configurable defaults. Application gRPC also exposes Core's Block API on the same listener, so clients can query both application state and block data through one connection. Core gRPC does not expose application module queries.
| Server | Default Address | Configuration | Purpose |
|---|---|---|---|
| RPC | tcp://127.0.0.1:26657 | config.toml under [rpc] | HTTP/WebSocket API for blockchain queries, transaction submission, and real-time event subscriptions. |
| gRPC | tcp://127.0.0.1:9098 | config.toml under [rpc] | Core services for transaction broadcast, blocks, commits, validator sets, new-height subscriptions, and Blobstream data-root inclusion proofs. |
| P2P | tcp://0.0.0.0:26656 | config.toml under [p2p] | Peer-to-peer networking layer for consensus, block synchronization, and mempool gossip. |
| Server | Default Address | Configuration | Purpose |
|---|---|---|---|
| gRPC | localhost:9090 | app.toml under [grpc] | Application module queries, transaction simulation and broadcast, node information, and Core's Block API. |
| REST API | tcp://localhost:1317 | app.toml under [api] | HTTP/JSON access to registered gRPC-gateway routes. Not every gRPC service has a REST route. |
| gRPC-Web | Uses REST API server address | app.toml under [grpc-web] | Browser-compatible gRPC API that allows web applications to interact with the gRPC server. |
| Server | Default Address | Configuration | Purpose |
|---|---|---|---|
| PrivVal gRPC | 127.0.0.1:26669 | config.toml: priv_validator_grpc_laddr | Core endpoint that lets Fibre request payment-promise and TLS-identity signatures from the validator's signer. |
| Fibre gRPC | 0.0.0.0:7980 | Fibre's server_config.toml: server_listen_address | Separate server for uploading and downloading blob shards over TLS. |
PrivValidator is Core's signing interface. It uses a local consensus key or an external signer configured through priv_validator_laddr. That remote-signing connection is separate from the PrivVal gRPC endpoint exposed to Fibre.
Fibre connects to application gRPC for chain state and to PrivVal gRPC for signatures. It always requests signatures through the node, even when the key is held by an external KMS. See the Fibre server guide for connection and deployment details.
If you are a new contributor, please read contributing to Celestia.
This repo attempts to conform to conventional commits so PR titles should ideally start with fix:, feat:, build:, chore:, ci:, docs:, style:, refactor:, perf:, or test: because this helps with semantic versioning and changelog generation. It is especially important to include an ! (e.g. feat!:) if the PR includes a breaking change.
PR titles must start the subject with [high], [medium], or [low] to indicate the review thoroughness needed. For example: fix!: [high] correct gas accounting or docs: [low] clarify setup instructions. Include the same tag in the PR description and explain why you chose it. Contributors should write their own PR titles; Dependabot generates its titles from the configured prefix.
[high]: Deep review for consensus, state transitions, security, or other changes with significant risk.[medium]: Standard review for code changes with limited impact and well-understood behavior.[low]: Focused review for straightforward docs, tests, or tooling changes with low risk.Choose the higher level when unsure. A small diff can still need deep review. CI checks the title format; reviewers should confirm the chosen level.
Dependabot defaults to [high] for the app's Go dependencies and [medium] for Docker, GitHub Actions, and test dependencies. Maintainers should confirm the level and add it to the PR description with a brief explanation.
External contributions must reference a meaningful issue. Open an issue explaining the value of your change before submitting unsolicited work. Trivial PRs limited to comment wording, typos, formatting, or irrelevant test updates may be closed. Low-effort AI-generated PRs will be closed; contributors using AI must understand, review, and revise its output before submission.
This repo contains multiple go modules. When using it, rename go.work.example to go.work and run go work sync.
# Get more info on make commands.
make help
# Build the celestia-appd binary into the ./build directory.
make build
# Build and install the celestia-appd binary into the $GOPATH/bin directory.
make install
# Run tests.
make test
# Format code with linters (this assumes golangci-lint and markdownlint are installed).
make lint-fix
# Regenerate Protobuf files (this assumes Docker is running).
make proto-gen
Package-specific READMEs aim to explain implementation details for developers that are contributing to these packages. The specs aim to explain the protocol as a whole for developers building on top of Celestia.
The source of truth for dependencies is the go.mod file but the table below describes the compatible branches for celestiaorg repos.
| celestia-app | celestia-core | cosmos-sdk |
|---|---|---|
main | v0.40.x | release/v0.52.x-celestia |
v9.x | v0.40.x | release/v0.52.x-celestia |
v8.x | v0.39.x-celestia | release/v0.52.x-celestia |
v7.x | v0.39.x-celestia | release/v0.52.x-celestia |
v6.x | v0.39.x-celestia | release/v0.51.x-celestia |
v5.x | v0.38.x-celestia | release/v0.50.x-celestia |
v4.x | v0.38.x-celestia | release/v0.50.x-celestia |
v3.x | v0.34.x-celestia | release/v0.46.x-celestia |
| Date | Auditor | Version | Report |
|---|---|---|---|
| 2023/9/15 | Informal Systems | v1.0.0-rc6 | informal-systems.pdf |
| 2023/10/17 | Binary Builders | v1.0.0-rc10 | binary-builders.pdf |
| 2024/7/1 | Informal Systems | v2.0.0-rc1 | informal-systems-v2.pdf |
| 2024/9/20 | Informal Systems | 306c587 | informal-systems-authored-blobs.pdf |
| 2025/6/24 | Informal Systems | 139bad2 | informal-systems-recovery.pdf |
| 2026/2/6 | Sherlock | d3e13fa | sherlock-zk-ism.pdf |
7,782 followers · starred Jun 2022
38 followers · starred Nov 2023
239 followers · starred Apr 2024
99 followers · starred May 2025
Celestia consensus node
See the codecelestia-app is the software used by validators and consensus nodes on the Celestia consensus network. celestia-app is a blockchain application built using parts of the Cosmos stack:
^ +-------------------------------+ ^
| | | |
| | State-machine = Application | |
| | | | celestia-app (built with Cosmos SDK)
| | ^ + | |
| +----------- | ABCI | ----------+ v
Celestia | | + v | ^
validator or | | | |
full consensus | | Consensus | |
node | | | |
| +-------------------------------+ | celestia-core (fork of CometBFT)
| | | |
| | Networking | |
| | | |
v +-------------------------------+ v
Install Go 1.26.9
Clone this repo
Install the celestia-appd binary. This installs a "multiplexer" binary that will also download embedded binaries for celestia-app v3 through v9.
make install
If you'd rather not install from source, you can download a prebuilt binary from the releases page.
Navigate to the latest release on https://github.com/celestiaorg/celestia-app/releases.
Download the binary for your platform (e.g. celestia-app_Linux_x86_64.tar.gz) from the Assets section. Tip: if you're not sure what platform you're on, you can run uname -a and look for the operating system (e.g. Linux, Darwin) and architecture (e.g. x86_64, arm64).
Extract the archive
tar -xvf celestia-app_Linux_x86_64.tar.gz
Verify the extracted binary works
./celestia-appd --help
(Optional) verify the prebuilt binary checksum. Download checksums.txt and then verify the checksum:
sha256sum --ignore-missing --check checksums.txt
You should see output like this:
celestia-app_Linux_x86_64.tar.gz: OK
See https://docs.celestia.org/operate/consensus-validators/install-celestia-app/ for more information.
This is the canonical matrix of operating systems that celestia-app is built for and tested against. For the OS versions a specific release was tested on, see the per-release entries in docs/release-notes/release-notes.md.
celestia-app's GitHub Actions workflows run all unit, integration, and lint jobs on:
| OS | Version | Architecture |
|---|---|---|
Ubuntu (ubuntu-latest) | Ubuntu 24.04 LTS (Noble Numbat) | x86_64 |
GitHub may advance ubuntu-latest to a newer LTS over time; see actions/runner-images for the current alias mapping.
Other OS / version combinations may work but are not exercised by CI and are not officially supported.
Note that arm64 binaries are cross-compiled via goreleaser but are not executed in CI; only the x86_64 build is exercised end-to-end.
The GitHub Releases page provides prebuilt binaries for:
| OS | Architectures |
|---|---|
| Linux | amd64, arm64 |
| macOS | amd64, arm64 |
Linux binaries built with the multiplexer require glibc >= 2.38 (Ubuntu 24.04 or equivalent). See Prerequisites for details.
Each release also ships the Fibre server as its own archive (fibre_Linux_x86_64.tar.gz, fibre_Darwin_arm64.tar.gz, etc.) for the same four platforms, built the same way and versioned in lockstep with celestia-appd. See fibre/cmd/README.md for usage.
celestia-appd binary does not support signing with Ledger hardware wallets.celestia-appd binary does not support signing with Ledger hardware wallets.[!CAUTION] If you are using the multiplexer binary (default
make build), the embedded binaries require glibc >= 2.38. This means Ubuntu 24.04 or later (or an equivalent distribution) is required. Nodes running older OS versions (e.g., Ubuntu 22.04) will fail to start with a glibc version mismatch error.
If you are on Linux, enable the BBR ("Bottleneck Bandwidth and Round-trip propagation time") congestion control algorithm.
# Check if BBR is enabled (Linux only).
make bbr-check
# If BBR is not enabled then enable it (Linux only).
make bbr-enable
| Variable | Explanation | Default value | Required |
|---|---|---|---|
CELESTIA_APP_HOME | Where the application files should be saved. | $HOME/.celestia-app | Optional |
Most flags can also be set with environment variables prefixed by the binary name, e.g. CELESTIA_APPD_PRUNING=nothing for --pruning.
Some command-specific flags, such as config sync --dry-run, ignore environment variables.
Client flags such as --node also accept the CELESTIA_APP_ prefix, e.g. CELESTIA_APP_NODE.
start flags only accept the CELESTIA_APPD_ prefix.
# Print help.
celestia-appd --help
# Create config files for a new chain named "test".
celestia-appd init test
# Start the consensus node.
celestia-appd start
celestia-appd config sync adds missing settings and their documentation using the binary's defaults. It syncs these files:
| File | Home directory |
|---|---|
config/config.toml (core) | --home |
config/server_config.toml (Fibre) | --fibre-home (or FIBRE_HOME), default ~/.celestia-fibre |
A file is skipped if it does not exist, so the command works on hosts that run only the node or only Fibre.
Synchronization runs only when this command is called, not on node startup.
Existing values, comments, ordering, and unknown settings are preserved; whitespace may be normalized when settings are added.
Flags and environment overrides are not saved.
Before replacing a file, it creates a <file>.backup-* file in the same directory. Earlier backups are never overwritten.
If nothing is missing, it leaves the file untouched.
To inspect additions or update the files before restarting:
celestia-appd config sync --home ~/.celestia-app --fibre-home ~/.celestia-fibre --dry-run
celestia-appd config sync --home ~/.celestia-app --fibre-home ~/.celestia-fibre
Then edit the fields under your node's and Fibre's home directories to set the values you want before restarting.
Read-only files, linked files, and TOML layouts that cannot be safely extended are left untouched. For deployment-managed configurations, add the reported settings to the source configuration. The command returns an error on failure.
Synchronization does not update app.toml, remove deprecated settings, or replace existing values with newer defaults.
Once a default is written, it remains an explicit value on later upgrades.
Existing binary overrides for consensus, mempool, and P2P settings still apply.
# Start a single node local testnet.
./scripts/single-node.sh
# Publish blob data to the local testnet.
celestia-appd tx blob pay-for-blob 0x00010203040506070809 0x48656c6c6f2c20576f726c6421 \
--chain-id test \
--from validator \
--keyring-backend test \
--fees 21000utia \
--yes
# Query the tx
celestia-appd query tx <txhash from previous command>
For instructions on running a node on Celestia's public networks, refer to the consensus node guide in the docs.
[!NOTE] When connecting to a public network, you must download the correct genesis file. Please use the
celestia-appd download-genesiscommand.
If you import celestia-app as a Go module, you may need to add some Go module replace directives to avoid type incompatibilities. Please see the replace directive in go.mod for inspiration.
If you are running celestia-app in tests, you may want to override the delayed_precommit_timeout to produce blocks faster. By default, a celestia-app chain with app version >= 3 will produce blocks every ~6 seconds. To produce blocks faster, you can override the delayed_precommit_timeout with the --delayed-precommit-timeout flag.
# Start celestia-appd with a one-second block time.
celestia-appd start --delayed-precommit-timeout 1s
Fibre (available from app v10) is Celestia's data availability protocol served by validator-operated fibre servers: blobs are erasure-coded and disseminated across the validator set instead of riding the data square. Depending on your role:
celestia-appd runs celestia-core and the Cosmos SDK application in one process when the native application version is active. Core handles consensus and networking; the application executes transactions and maintains module state. They communicate through ABCI. The servers below expose different services from that process.
flowchart TB
subgraph Appd["celestia-appd process — native application"]
Core["Core: consensus and networking<br/>RPC :26657 · gRPC :9098 · P2P :26656"]
App["Application: transaction execution and state<br/>gRPC :9090 · REST / gRPC-Web :1317"]
Signer["PrivValidator: local key or remote signer<br/>PrivVal gRPC :26669"]
Core <-->|"ABCI via multiplexer"| App
App -->|"Block API calls"| Core
Core -->|"Sign proposals and votes"| Signer
end
Peers["Other consensus nodes"] <-->|"P2P"| Core
Client["Fibre client"] <-->|"gRPC over TLS"| Fibre["Separate fibre process :7980<br/>Stores and serves blob shards"]
Fibre -->|"Query state via app gRPC"| App
Fibre -->|"Sign via PrivVal gRPC"| Signer
Signer -.->|"Optional remote-signing connection"| KMS["Separate KMS process"]
When replaying older application versions, the multiplexer runs an embedded application binary in a child process and forwards ABCI calls over gRPC. Core remains in the parent process.
The addresses below are configurable defaults. Application gRPC also exposes Core's Block API on the same listener, so clients can query both application state and block data through one connection. Core gRPC does not expose application module queries.
| Server | Default Address | Configuration | Purpose |
|---|---|---|---|
| RPC | tcp://127.0.0.1:26657 | config.toml under [rpc] | HTTP/WebSocket API for blockchain queries, transaction submission, and real-time event subscriptions. |
| gRPC | tcp://127.0.0.1:9098 | config.toml under [rpc] | Core services for transaction broadcast, blocks, commits, validator sets, new-height subscriptions, and Blobstream data-root inclusion proofs. |
| P2P | tcp://0.0.0.0:26656 | config.toml under [p2p] | Peer-to-peer networking layer for consensus, block synchronization, and mempool gossip. |
| Server | Default Address | Configuration | Purpose |
|---|---|---|---|
| gRPC | localhost:9090 | app.toml under [grpc] | Application module queries, transaction simulation and broadcast, node information, and Core's Block API. |
| REST API | tcp://localhost:1317 | app.toml under [api] | HTTP/JSON access to registered gRPC-gateway routes. Not every gRPC service has a REST route. |
| gRPC-Web | Uses REST API server address | app.toml under [grpc-web] | Browser-compatible gRPC API that allows web applications to interact with the gRPC server. |
| Server | Default Address | Configuration | Purpose |
|---|---|---|---|
| PrivVal gRPC | 127.0.0.1:26669 | config.toml: priv_validator_grpc_laddr | Core endpoint that lets Fibre request payment-promise and TLS-identity signatures from the validator's signer. |
| Fibre gRPC | 0.0.0.0:7980 | Fibre's server_config.toml: server_listen_address | Separate server for uploading and downloading blob shards over TLS. |
PrivValidator is Core's signing interface. It uses a local consensus key or an external signer configured through priv_validator_laddr. That remote-signing connection is separate from the PrivVal gRPC endpoint exposed to Fibre.
Fibre connects to application gRPC for chain state and to PrivVal gRPC for signatures. It always requests signatures through the node, even when the key is held by an external KMS. See the Fibre server guide for connection and deployment details.
If you are a new contributor, please read contributing to Celestia.
This repo attempts to conform to conventional commits so PR titles should ideally start with fix:, feat:, build:, chore:, ci:, docs:, style:, refactor:, perf:, or test: because this helps with semantic versioning and changelog generation. It is especially important to include an ! (e.g. feat!:) if the PR includes a breaking change.
PR titles must start the subject with [high], [medium], or [low] to indicate the review thoroughness needed. For example: fix!: [high] correct gas accounting or docs: [low] clarify setup instructions. Include the same tag in the PR description and explain why you chose it. Contributors should write their own PR titles; Dependabot generates its titles from the configured prefix.
[high]: Deep review for consensus, state transitions, security, or other changes with significant risk.[medium]: Standard review for code changes with limited impact and well-understood behavior.[low]: Focused review for straightforward docs, tests, or tooling changes with low risk.Choose the higher level when unsure. A small diff can still need deep review. CI checks the title format; reviewers should confirm the chosen level.
Dependabot defaults to [high] for the app's Go dependencies and [medium] for Docker, GitHub Actions, and test dependencies. Maintainers should confirm the level and add it to the PR description with a brief explanation.
External contributions must reference a meaningful issue. Open an issue explaining the value of your change before submitting unsolicited work. Trivial PRs limited to comment wording, typos, formatting, or irrelevant test updates may be closed. Low-effort AI-generated PRs will be closed; contributors using AI must understand, review, and revise its output before submission.
This repo contains multiple go modules. When using it, rename go.work.example to go.work and run go work sync.
# Get more info on make commands.
make help
# Build the celestia-appd binary into the ./build directory.
make build
# Build and install the celestia-appd binary into the $GOPATH/bin directory.
make install
# Run tests.
make test
# Format code with linters (this assumes golangci-lint and markdownlint are installed).
make lint-fix
# Regenerate Protobuf files (this assumes Docker is running).
make proto-gen
Package-specific READMEs aim to explain implementation details for developers that are contributing to these packages. The specs aim to explain the protocol as a whole for developers building on top of Celestia.
The source of truth for dependencies is the go.mod file but the table below describes the compatible branches for celestiaorg repos.
| celestia-app | celestia-core | cosmos-sdk |
|---|---|---|
main | v0.40.x | release/v0.52.x-celestia |
v9.x | v0.40.x | release/v0.52.x-celestia |
v8.x | v0.39.x-celestia | release/v0.52.x-celestia |
v7.x | v0.39.x-celestia | release/v0.52.x-celestia |
v6.x | v0.39.x-celestia | release/v0.51.x-celestia |
v5.x | v0.38.x-celestia | release/v0.50.x-celestia |
v4.x | v0.38.x-celestia | release/v0.50.x-celestia |
v3.x | v0.34.x-celestia | release/v0.46.x-celestia |
| Date | Auditor | Version | Report |
|---|---|---|---|
| 2023/9/15 | Informal Systems | v1.0.0-rc6 | informal-systems.pdf |
| 2023/10/17 | Binary Builders | v1.0.0-rc10 | binary-builders.pdf |
| 2024/7/1 | Informal Systems | v2.0.0-rc1 | informal-systems-v2.pdf |
| 2024/9/20 | Informal Systems | 306c587 | informal-systems-authored-blobs.pdf |
| 2025/6/24 | Informal Systems | 139bad2 | informal-systems-recovery.pdf |
| 2026/2/6 | Sherlock | d3e13fa | sherlock-zk-ism.pdf |
7,782 followers · starred Jun 2022
38 followers · starred Nov 2023
239 followers · starred Apr 2024
99 followers · starred May 2025