{"id":42371771,"url":"https://github.com/celestiaorg/lumina","last_synced_at":"2026-04-06T16:03:25.469Z","repository":{"id":175884038,"uuid":"654642390","full_name":"celestiaorg/lumina","owner":"celestiaorg","description":"Wasm friendly Celestia light node implementation in Rust","archived":false,"fork":false,"pushed_at":"2026-04-02T23:09:19.000Z","size":4726,"stargazers_count":169,"open_issues_count":80,"forks_count":59,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-03T06:49:14.812Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/celestiaorg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-16T15:27:02.000Z","updated_at":"2026-04-01T18:18:11.000Z","dependencies_parsed_at":"2026-04-02T22:00:37.962Z","dependency_job_id":null,"html_url":"https://github.com/celestiaorg/lumina","commit_stats":null,"previous_names":["eigerco/celestia-node-rs","eigerco/lumina"],"tags_count":242,"template":false,"template_full_name":null,"purl":"pkg:github/celestiaorg/lumina","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celestiaorg%2Flumina","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celestiaorg%2Flumina/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celestiaorg%2Flumina/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celestiaorg%2Flumina/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/celestiaorg","download_url":"https://codeload.github.com/celestiaorg/lumina/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/celestiaorg%2Flumina/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31479006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T14:34:32.243Z","status":"ssl_error","status_checked_at":"2026-04-06T14:34:31.723Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-27T19:40:45.972Z","updated_at":"2026-04-06T16:03:25.464Z","avatar_url":"https://github.com/celestiaorg.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Lumina\n\n\u003ca href=\"https://github.com/celestiaorg/lumina/actions/workflows/ci.yml?query=branch%3Amain\"\u003e\u003cimg src=\"https://github.com/celestiaorg/lumina/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"Build Status\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://lumina.rs\"\u003e\u003cimg src=\"https://img.shields.io/website?url=https%3A%2F%2Flumina.rs\u0026label=lumina.rs\" alt=\"lumina.rs\"\u003e\u003c/a\u003e\n\u003ca href=\"https://crates.io/crates/lumina-cli\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/lumina-cli?label=lumina-cli\" alt=\"crates.io lumina-cli\"\u003e\u003c/a\u003e\n\u003ca href=\"https://crates.io/crates/lumina-node\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/lumina-node?label=lumina-node\" alt=\"crates.io lumina-node\"\u003e\u003c/a\u003e\n\u003ca href=\"https://crates.io/crates/lumina-node-uniffi\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/lumina-node-uniffi?label=lumina-node-uniffi\" alt=\"crates.io lumina-node-uniffi\"\u003e\u003c/a\u003e\n\u003ca href=\"https://crates.io/crates/lumina-node-wasm\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/lumina-node-wasm?label=lumina-node-wasm\" alt=\"crates.io lumina-node-wasm\"\u003e\u003c/a\u003e\n\u003ca href=\"https://crates.io/crates/celestia-types\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/celestia-types?label=celestia-types\" alt=\"crates.io celestia-types\"\u003e\u003c/a\u003e\n\u003ca href=\"https://crates.io/crates/celestia-proto\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/celestia-proto?label=celestia-proto\" alt=\"crates.io celestia-proto\"\u003e\u003c/a\u003e\n\u003ca href=\"https://crates.io/crates/celestia-rpc\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/celestia-rpc?label=celestia-rpc\" alt=\"crates.io celestia-rpc\"\u003e\u003c/a\u003e\n\u003ca href=\"https://crates.io/crates/celestia-grpc\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/celestia-grpc?label=celestia-grpc\" alt=\"crates.io celestia-grpc\"\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n\nRust implementation of Celestia's [data availability node](https://github.com/celestiaorg/celestia-node) able to run natively and in browser-based environments.\n\nRun Lumina now at [lumina.rs](https://lumina.rs/) and directly verify Celestia.\n\nSupported features:\n- Backward and forward synchronization of block headers within sampling window\n- Header exchange (`header-ex`) client and server\n- Listening for, verifying and redistributing extended headers on gossip protocol (`header-sub`)\n- Listening for, verifying and redistributing fraud proofs on gossip protocol (`fraud-sub`)\n- Backward and forward Data Availability Sampling\n- Native and browser persistent storage\n- Streaming events happening on the node\n- Native, Wasm and UniFFI libraries, embed the node anywhere\n- Integration tests with Go implementation\n\n## Installing the node\n\n### Installing with cargo\n\nInstall the node. Note that currently to serve lumina to run it from the browser, you need to compile `lumina-cli` manually.\n```bash\ncargo install lumina-cli --locked\n```\nRun the node\n```bash\nlumina node --network mocha\n```\n\n### Building from source\n\nInstall common dependencies\n\n```bash\n# install dependencies\nsudo apt-get install -y build-essential curl git\n\n# install rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\n# open a new terminal or run\nsource \"$HOME/.cargo/env\"\n\n# clone the repository\ngit clone https://github.com/celestiaorg/lumina\ncd lumina\n\n# install lumina\ncargo install --path cli\n```\n\n### Building wasm-node\n\nTo build `lumina-cli` with support for serving wasm-node to browsers, currently\nyou need to compile wasm node manually. Follow these additional steps:\n\n```bash\n# install npm and wasm-pack\nsudo apt-get install -y npm\ncargo install wasm-pack\n\n# compile lumina to wasm\nwasm-pack build node-wasm\n\n# build the local webpage\ncd cli/js\nnpm i \u0026\u0026 npm run build\ncd -\n\n# install lumina-cli\ncargo install --path cli --features browser-node\n```\n\n\u003e [!WARNING]\n\u003e Since `getrandom v0.3` it is required to configure the randomness source via `RUSTFLAGS`.\n\u003e If you depend on any of the crates and build for `wasm32-unknown-unknown`, it may be required to set\n\u003e `'--cfg getrandom_backend=\"wasm_js\"'` either through an environment variable or through `.cargo/config.toml`.\n\u003e [See `getrandom` docs for more info](https://docs.rs/getrandom/0.3.3/getrandom/#webassembly-support).\n\n## Running the node\n\n### Running the node natively\n\n```bash\n# run lumina node\nlumina node --network mocha\n\n# check out help for more configuration options\nlumina node --help\n```\n\n### Serving node-wasm\n\n```bash\n# serve lumina node on default localhost:9876\nlumina browser\n\n# check out help from more configuration options\nlumina browser --help\n```\n\n#### WebTransport and Secure Contexts\n\nFor security reasons, browsers only allow WebTransport to be used in [Secure Context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts). When running Lumina in a browser make sure to access it either locally or over HTTPS.\n\n## Running Go Celestia node for integration\n\nFollow [this guide](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-with-a-personal-access-token-classic)\nto authorize yourself in GitHub's container registry.\n\nStarting a Celestia network with single validator and some DA nodes\n```bash\ndocker compose -f ci/docker-compose.yml up --build --force-recreate -d\n# and to stop it\ndocker compose -f ci/docker-compose.yml down\n```\n\u003e **Note:**\n\u003e You can run more DA nodes by uncommenting/copying the node service definition in `ci/docker-compose.yml`.\n\nTo get a JWT token for a topped up account (coins will be transferred in block 2):\n```bash\nexport CELESTIA_NODE_AUTH_TOKEN=$(docker compose -f ci/docker-compose.yml exec node-1 celestia bridge auth admin --p2p.network private)\n```\n\nAccessing json RPC api with Go `celestia` cli:\n```bash\ndocker compose -f ci/docker-compose.yml exec node-1 \\\n    celestia blob submit 0x0c204d39600fddd3 '\"Hello world\"' --token \"$CELESTIA_NODE_AUTH_TOKEN\"\n```\n\nExtracting blocks for test cases:\n```bash\ndocker compose -f ci/docker-compose.yml exec node-1 \\\n    celestia header get-by-height 27 --token \"$CELESTIA_NODE_AUTH_TOKEN\" | jq .result\n```\n\n## Running integration tests with Celestia node\n\nMake sure you have the Celestia network running inside docker compose from the section above.\n\nGenerate authentication tokens\n```bash\n./tools/gen_auth_tokens.sh\n```\n\nRun tests\n```bash\ncargo test\n```\n\nRun tests for javascript bindings. Those test are written in typescript, import wasm packages,\nand are executed in all major browsers (chrome, firefox, safari) using vitest and playwright.\n\n```bash\nnpm ci\nnpm test\n```\n\n## Frontend\n\nCheck out the frontend at [celestiaorg/lumina-front](https://github.com/celestiaorg/lumina-front)\n\n## Contact\n\nContact us at security@celestia.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcelestiaorg%2Flumina","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcelestiaorg%2Flumina","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcelestiaorg%2Flumina/lists"}