{"id":21958658,"url":"https://github.com/sevenlabs-hq/carbon","last_synced_at":"2026-01-20T22:02:29.786Z","repository":{"id":257890997,"uuid":"855733947","full_name":"sevenlabs-hq/carbon","owner":"sevenlabs-hq","description":"Carbon is an indexing framework on Solana.","archived":false,"fork":false,"pushed_at":"2026-01-14T17:02:19.000Z","size":8396,"stargazers_count":540,"open_issues_count":10,"forks_count":170,"subscribers_count":13,"default_branch":"main","last_synced_at":"2026-01-14T21:08:40.431Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sevenlabs-hq.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":null,"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":"2024-09-11T11:32:14.000Z","updated_at":"2026-01-14T17:02:26.000Z","dependencies_parsed_at":"2024-12-01T15:24:40.884Z","dependency_job_id":"38bcfdb2-61a8-41c3-94c1-e289f7d9e057","html_url":"https://github.com/sevenlabs-hq/carbon","commit_stats":null,"previous_names":["sevenlabs-hq/carbon"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/sevenlabs-hq/carbon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sevenlabs-hq%2Fcarbon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sevenlabs-hq%2Fcarbon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sevenlabs-hq%2Fcarbon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sevenlabs-hq%2Fcarbon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sevenlabs-hq","download_url":"https://codeload.github.com/sevenlabs-hq/carbon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sevenlabs-hq%2Fcarbon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28615561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T21:52:42.722Z","status":"ssl_error","status_checked_at":"2026-01-20T21:52:20.513Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":"2024-11-29T09:02:19.161Z","updated_at":"2026-01-20T22:02:29.779Z","avatar_url":"https://github.com/sevenlabs-hq.png","language":"Rust","funding_links":[],"categories":["Rust","Solana Data and Indexing"],"sub_categories":["Notes"],"readme":"# Carbon\n\nCarbon is a lightweight indexing framework on Solana. It provides a modular pipeline for sourcing data, decoding updates and processing them in order to build end-to-end indexers.\n\n## Components\n\n### Pipeline\n\nThe core of the framework. It orchestrates data flow from data sources through indexing pipes.\n\n### Datasources\n\nA consumable datasource that will provide updates to the pipeline. These can either be `AccountUpdate`, `TransactionUpdate` or `AccountDeletion`.\n\n### Pipes\n\nProcess specific updates:\n\n- **Account Pipes** handle account updates. Each contains an `AccountDecoder` and a `Processor`.\n- **Account Deletion Pipes** handle account deletions. Each contains a `Processor`.\n- **Instruction Pipes** handle transaction updates, instruction by instruction. Each contains an `InstructionDecoder` and a `Processor`.\n- **Transaction Pipes** handle transaction updates, after schema-matching the whole transaction. Each contains a `Schema` and a `Processor`.\n\n### Metrics\n\nCollect and report on pipeline performance and operational data.\n\nOur premade metrics crates assist with common use cases:\n\n| Crate Name                  | Description                                                                   | Ease of Setup |\n| --------------------------- | ----------------------------------------------------------------------------- | ------------- |\n| `carbon-log-metrics`        | Logs useful program info to the terminal                                      | Easy          |\n| `carbon-prometheus-metrics` | Provides a way of exporting default and custom metrics to a Prometheus server | Medium        |\n\n## Usage\n\n### Basic Setup\n\n```rs\nuse carbon_core::pipeline::Pipeline;\nuse carbon_rpc_block_subscribe_datasource::{RpcBlockSubscribe, Filters};\nuse solana_client::{\n    rpc_config::{RpcBlockSubscribeConfig, RpcBlockSubscribeFilter},\n};\nuse crate::{\n    MyAccountDecoder, MyAccountProcessor,\n    MyInstructionDecoder, MyInstructionProcessor,\n};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    let pipeline = Pipeline::builder()\n        .datasource(\n            RpcBlockSubscribe::new(\n                env::var(\"RPC_URL\")?,\n                Filters::new(RpcBlockSubscribeFilter::MentionsAccountOrProgram(env::var(\"MY_PROGRAM_ID\")?), None)\n            )\n        )\n        .instruction(MyInstructionDecoder::new(), MyInstructionProcessor)\n        .metrics(Arc::new(LogMetrics::new()))\n        .build()?;\n\n    pipeline.run().await?;\n\n    Ok(())\n}\n```\n\n### Generating Decoders from IDL\n\nDecoders implementations allow the pipeline to input raw account or instruction data and to receive deserialized account or instruction data. They are the backbone of indexing with Carbon.\n\nCarbon provides a CLI tool to generate decoders based on IDL files (Anchor, Codama) or from a provided program address with a network specified to fetch an on-chain PDA IDL. This can significantly speed up the process of creating custom decoders for your Solana programs.\n\n#### CLI Installation\n\nInstall the Carbon CLI via npm:\n\n```sh\n# Install globally\nnpm install -g @sevenlabs-hq/carbon-cli\n\n# Or use npx (no installation required)\nnpx @sevenlabs-hq/carbon-cli\n```\n\n#### CLI Usage\n\n```sh\ncarbon-cli parse [OPTIONS]\ncarbon-cli scaffold [OPTIONS]\n```\n\n#### Parse Options\n\n- `-i, --idl \u003cfileOrAddress\u003e`: Path to an IDL json file or a Solana program address\n- `-o, --out-dir \u003cdir\u003e`: Output directory for generated code\n- `-c, --as-crate`: Generate as a Cargo crate layout\n- `-s, --standard \u003canchor|codama\u003e`: Specify the IDL standard to parse (default: anchor)\n- `--event-hints \u003ccsv\u003e`: Comma-separated names of defined types to parse as CPI Events (Codama only)\n- `-u, --url \u003crpcUrl\u003e`: RPC URL for fetching IDL when using a program address\n- `--no-clean`: Do not delete output directory before rendering\n\n#### Scaffold Options\n\n- `-n, --name \u003cstring\u003e`: Name of your project\n- `-o, --out-dir \u003cdir\u003e`: Output directory\n- `-d, --decoder \u003cname\u003e`: Decoder name (auto-detected from IDL)\n- `--idl \u003cfileOrAddress\u003e`: IDL file or program address\n- `--idl-standard \u003canchor|codama\u003e`: IDL standard\n- `--idl-url \u003crpcUrl\u003e`: RPC URL for fetching IDL (when using program address)\n- `--event-hints \u003ccsv\u003e`: Event hints for Codama IDL\n- `-s, --data-source \u003cname\u003e`: Name of data source\n- `-m, --metrics \u003clog|prometheus\u003e`: Metrics to use (default: log)\n- `--with-postgres \u003cboolean\u003e`: Include Postgres wiring and deps (default: true)\n- `--with-graphql \u003cboolean\u003e`: Include GraphQL wiring and deps (default: true)\n- `--with-serde \u003cboolean\u003e`: Include serde feature for decoder (default: false)\n- `--force`: Overwrite output directory if it exists\n\n#### Examples\n\n**Generate decoder from Anchor IDL:**\n\n```sh\ncarbon-cli parse --idl my_program.json --out-dir ./src/decoders\n```\n\n**Generate decoder from program address:**\n\n```sh\ncarbon-cli parse --idl LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo -u mainnet-beta --out-dir ./desired-folder\n```\n\n**Scaffold project using IDL file:**\n\n```sh\ncarbon-cli scaffold --name my-project --out-dir ./desired-folder --idl ./idl.json --data-source yellowstone-grpc\n```\n\nFor more detailed usage information and examples, check out the [npm package documentation](https://www.npmjs.com/package/@sevenlabs-hq/carbon-cli).\n\n### Implementing Processors\n\n```rs\nuse carbon_core::account::{AccountDecoder, AccountMetadata, AccountProcessorInputType, DecodedAccount};\nuse crate::MyCustomAccountData;\n\nstruct MyAccountProcessor;\n\n#[async_trait]\nimpl Processor for MyAccountProcessor {\n    type InputType = AccountProcessorInputType\u003cMyCustomAccountData\u003e;\n\n    async fn process(\n        \u0026mut self,\n        input: Self::InputType,\n        metrics: Arc\u003cMetricsCollection\u003e,\n    ) -\u003e CarbonResult\u003c()\u003e {\n        // Implement processing logic\n    }\n}\n```\n\n### Implementing a Datasource\n\nFor most use cases, we recommend choosing from one of our datasource crates:\n\n| Crate Name                             | Description                                                                                                              | Affordability               | Ease of Setup |\n| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------------- | ------------- |\n| `carbon-block-subscribe`               | Uses `blockSubscribe` with Solana WS JSON RPC to listen to real-time on-chain transactions                               | Cheap (just RPC)            | Easy          |\n| `carbon-program-subscribe`             | Uses `programSubscribe` with Solana WS JSON RPC to listen to real-time on-chain account updates                          | Cheap (just RPC)            | Easy          |\n| `carbon-transaction-crawler`           | Crawls historical successful transactions for a specific address in reverse chronological order using Solana JSON RPC    | Cheap (just RPC)            | Easy          |\n| `carbon-validator-snapshot-datasource` | Loads and processes accounts from Solana validator snapshots, supporting filtering by program owners and account pubkeys | Cheap (snapshot storage)    | Medium        |\n| `carbon-jito-shredstream-grpc`         | Listen to JITO's shredstream                                                                                             | Medium (Shredstream proxy)  | Medium        |\n| `carbon-helius-atlas-ws`               | Utilizes Helius Geyser-enhanced WebSocket for streaming account and transaction updates                                  | Medium (Helius Plan)        | Medium        |\n| `carbon-yellowstone-grpc`              | Subscribes to a Yellowstone gRPC Geyser plugin enhanced full node to stream account and transaction updates              | Expensive (Geyser Fullnode) | Complex       |\n\nYou can still implement custom datasources in the following manner:\n\n```rs\nuse carbon_core::datasource::{Datasource, Update, UpdateType};\n\nstruct MyDataSource;\n\n#[async_trait]\nimpl Datasource for MyDataSource {\n    async fn consume(\n        \u0026self,\n        sender: \u0026tokio::sync::mpsc::UnboundedSender\u003cUpdate\u003e,\n        cancellation_token: CancellationToken,\n    ) -\u003e CarbonResult\u003c()\u003e {\n        // Implement data fetching and sending logic\n    }\n\n    fn update_types(\u0026self) -\u003e Vec\u003cUpdateType\u003e {\n        vec![UpdateType::AccountUpdate, UpdateType::Transaction]\n    }\n}\n```\n\n### Available Program Decoders\n\nDecoders for most popular Solana programs are published and maintained:\n\n| Crate Name                                     | Description                                | Program ID                                   |\n| ---------------------------------------------- | ------------------------------------------ | -------------------------------------------- |\n| `carbon-address-lookup-table-decoder`          | Address Lookup Table Decoder               | AddressLookupTab1e1111111111111111111111111  |\n| `carbon-associated-token-account-decoder`      | Associated Token Account Decoder           | ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL |\n| `carbon-bonkswap-decoder`                      | Bonkswap Program Decoder                   | BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p |\n| `carbon-boop-decoder`                          | Boop Decoder                               | boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4  |\n| `carbon-bubblegum-decoder`                     | Bubblegum Decoder                          | BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY |\n| `carbon-circle-message-transmitter-v2-decoder` | Circle CCTP Message Transmitter V2 Decoder | CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC |\n| `carbon-circle-token-messenger-v2-decoder`     | Circle CCTP Token Messenger V2 Decoder     | CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe |\n| `carbon-dflow-aggregator-v4-decoder`           | Dflow Aggregator V4 Decoder                | DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH |\n| `carbon-drift-v2-decoder`                      | Drift V2 Program Decoder                   | dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH  |\n| `carbon-fluxbeam-decoder`                      | Fluxbeam Program Decoder                   | FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X |\n| `carbon-gavel-decoder`                         | Gavel Pool Decoder                         | srAMMzfVHVAtgSJc8iH6CfKzuWuUTzLHVCE81QU1rgi  |\n| `carbon-heaven-decoder`                        | Heaven Program Decoder                     | HEAVENoP2qxoeuF8Dj2oT1GHEnu49U5mJYkdeC8BAX2o |\n| `carbon-jupiter-dca-decoder`                   | Jupiter DCA Program Decoder                | DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M |\n| `carbon-jupiter-limit-order-decoder`           | Jupiter Limit Order Program Decoder        | jupoNjAxXgZ4rjzxzPMP4oxduvQsQtZzyknqvzYNrNu  |\n| `carbon-jupiter-limit-order-2-decoder`         | Jupiter Limit Order 2 Program Decoder      | j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X  |\n| `carbon-jupiter-perpetuals-decoder`            | Jupiter Perpetuals Program Decoder         | PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu  |\n| `carbon-jupiter-swap-decoder`                  | Jupiter Swap Program Decoder               | JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4  |\n| `carbon-kamino-farms-decoder`                  | Kamino Farms Program Decoder               | FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr |\n| `carbon-kamino-lending-decoder`                | Kamino Lend Decoder                        | KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD  |\n| `carbon-kamino-limit-order-decoder`            | Kamino Limit Order Program Decoder         | LiMoM9rMhrdYrfzUCxQppvxCSG1FcrUK9G8uLq4A1GF  |\n| `carbon-kamino-vault-decoder`                  | Kamino Vault Decoder                       | kvauTFR8qm1dhniz6pYuBZkuene3Hfrs1VQhVRgCNrr  |\n| `carbon-lifinity-amm-v2-decoder`               | Lifinity AMM V2 Program Decoder            | 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c |\n| `carbon-marginfi-v2-decoder`                   | Marginfi V2 Program Decoder                | MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA  |\n| `carbon-marinade-finance-decoder`              | Marinade Finance Program Decoder           | MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD  |\n| `carbon-memo-program-decoder`                  | SPL Memo Program Decoder                   | Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo  |\n| `carbon-meteora-damm-v2-decoder`               | Meteora DAMM V2 Program Decoder            | cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG  |\n| `carbon-meteora-dbc-decoder`                   | Meteora DBC Program Decoder                | dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN  |\n| `carbon-meteora-dlmm-decoder`                  | Meteora DLMM Program Decoder               | LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo  |\n| `carbon-meteora-pools-decoder`                 | Meteora Pools Program Decoder              | Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB |\n| `carbon-meteora-vault-decoder`                 | Meteora Vault Program Decoder              | 24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi |\n| `carbon-moonshot-decoder`                      | Moonshot Program Decoder                   | MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG  |\n| `carbon-mpl-core-decoder`                      | MPL Core Program Decoder                   | CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d |\n| `carbon-mpl-token-metadata-decoder`            | MPL Token Metadata Program Decoder         | metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s  |\n| `carbon-name-service-decoder`                  | SPL Name Service Program Decoder           | namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX  |\n| `carbon-okx-dex-decoder`                       | OKX DEX Decoder                            | 6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma |\n| `carbon-onchain-labs-dex-v1-decoder`           | OnChain Labs DEX V1 Decoder                | 6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma |\n| `carbon-onchain-labs-dex-v2-decoder`           | OnChain Labs DEX V2 Decoder                | proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u  |\n| `carbon-openbook-v2-decoder`                   | Openbook V2 Program Decoder                | opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb  |\n| `carbon-orca-whirlpool-decoder`                | Orca Whirlpool Program Decoder             | whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc  |\n| `carbon-pancake-swap-decoder`                  | Pancake Swap Program Decoder               | HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq |\n| `carbon-phoenix-v1-decoder`                    | Phoenix V1 Program Decoder                 | PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY  |\n| `carbon-pumpfun-decoder`                       | Pumpfun Program Decoder                    | 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P  |\n| `carbon-pump-swap-decoder`                     | PumpSwap Program Decoder                   | pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA  |\n| `carbon-pump-fees-decoder`                     | Pump Fees Program Decoder                  | pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ  |\n| `carbon-raydium-amm-v4-decoder`                | Raydium AMM V4 Program Decoder             | 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 |\n| `carbon-raydium-clmm-decoder`                  | Raydium CLMM Program Decoder               | CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK |\n| `carbon-raydium-cpmm-decoder`                  | Raydium CPMM Program Decoder               | CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C |\n| `carbon-raydium-launchpad-decoder`             | Raydium Launchpad Program Decoder          | LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj  |\n| `carbon-raydium-liquidity-locking-decoder`     | Raydium Liquidity Locking Program Decoder  | LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE  |\n| `carbon-raydium-stable-swap-decoder`           | Raydium Stable Swap Program Decoder        | 5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h |\n| `carbon-sharky-decoder`                        | SharkyFi Decoder                           | SHARKobtfF1bHhxD2eqftjHBdVSCbKo9JtgK71FhELP  |\n| `carbon-solayer-restaking-program-decoder`     | Solayer Restaking Program Decoder          | sSo1iU21jBrU9VaJ8PJib1MtorefUV4fzC9GURa2KNn  |\n| `carbon-stabble-stable-swap-decoder`           | Stabble Stable Swap Decoder                | swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ  |\n| `carbon-stabble-weighted-swap-decoder`         | Stabble Weighted Swap Decoder              | swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW  |\n| `carbon-stake-program-decoder`                 | Stake Program Decoder                      | Stake11111111111111111111111111111111111111  |\n| `carbon-swig-decoder`                          | Swig Decoder                               | swigypWHEksbC64pWKwah1WTeh9JXwx8H1rJHLdbQMB  |\n| `carbon-system-program-decoder`                | System Program Decoder                     | 11111111111111111111111111111111             |\n| `carbon-token-2022-decoder`                    | Token 2022 Program Decoder                 | TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb  |\n| `carbon-token-program-decoder`                 | Token Program Decoder                      | TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA  |\n| `carbon-vertigo-decoder`                       | Vertigo Program Decoder                    | vrTGoBuy5rYSxAfV3jaRJWHH6nN9WK4NRExGxsk1bCJ  |\n| `carbon-virtuals-decoder`                      | Virtuals Program Decoder                   | 5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki |\n| `carbon-wavebreak-decoder`                     | Wavebreak Program Decoder                  | waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF  |\n| `carbon-zeta-decoder`                          | Zeta Program Decoder                       | ZETAxsqBRek56DhiGXrn75yj2NHU3aYUnxvHXpkf3aD  |\n\n## Pre-commit hooks\n\nTo activate the pre-commit hook, run `./.pre-commit.sh` once.\nThis will cause the following rules to be registered and called at the next `git commit`.\n\nThe following checks will be performed:\n\n- fmt: Checks code formatting using `cargo fmt --check`.\n- clippy: Runs `clippy` on the codebase to catch potential issues.\n- cargo_sort: Utilizes `cargo-sort` to ensure Cargo.toml files are sorted correctly.\n- machete: Checks for unused Cargo dependencies using `cargo-machete`.\n\n## Test\n\n```sh\ncargo test\n```\n\n## License\n\nWe are under the [MIT license](https://github.com/sevenlabs-hq/carbon/tree/main/LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsevenlabs-hq%2Fcarbon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsevenlabs-hq%2Fcarbon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsevenlabs-hq%2Fcarbon/lists"}