MCPcopy Index your code
hub / github.com/algorand/conduit

github.com/algorand/conduit @v1.9.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.9.1 ↗ · + Follow
644 symbols 2,431 edges 108 files 229 documented · 36%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<img alt="Shows a black Algorand logo light mode and white in dark mode." src="https://github.com/algorand/conduit/raw/v1.9.1/docs/assets/algorand_logo_mark_black.png" width="200">

CircleCI Github Contribute

Algorand Conduit

Conduit is a framework for ingesting blocks from the Algorand blockchain into external applications. It is designed as modular plugin system that allows users to configure their own data pipelines for filtering, aggregation, and storage of blockchain data.

For example, use conduit to: * Build a notification system for on chain events. * Power a next generation block explorer. * Select app specific data and write it to a custom database. * Build a custom Indexer for a new ARC. * Send blockchain data to another streaming data platform for additional processing (e.g. RabbitMQ, Kafka, ZeroMQ). * Build an NFT catalog based on different standards.

System Requirements

For a simple deployment the following configuration works well: * Network: Conduit colocated with Algod follower. * Conduit + Algod: 4 CPU and 8 GB of ram. * Storage: algod follower node, 40 GiB, 3000 IOPS minimum. * Deployments allocating less ram might work in conjunction with GOMEMLIMIT for Algod (and even Conduit). This configuration is not tested, so use with caution and monitor closely.

Getting Started

Installation

Download

The latest conduit binary can be downloaded from the GitHub releases page.

Docker

The latest docker image is on docker hub.

Install from Source

  1. Checkout the repo, or download the source, git clone https://github.com/algorand/conduit.git && cd conduit
  2. Run make conduit.
  3. The binary is created at cmd/conduit/conduit.

Usage

Conduit is configured with a YAML file named conduit.yml. This file defines the pipeline behavior by enabling and configuring different plugins.

Create conduit.yml configuration file

Use the conduit init subcommand to create a configuration template. Place the configuration template in a new data directory. By convention the directory is named data and is referred to as the data directory.

mkdir data
./conduit init > data/conduit.yml

A Conduit pipeline is composed of 3 components, Importers, Processors, and Exporters. Every pipeline must define exactly 1 Importer, exactly 1 Exporter, and can optionally define a series of 0 or more Processors. See a full list of available plugins with conduit list or the plugin documentation page.

Here is an example conduit.yml that configures two plugins:

importer:
    name: algod
    config:
        mode: "follower"
        netaddr: "http://your-follower-node:1234"
        token: "your API token"

# no processors defined for this configuration
processors:

exporter:
    name: file_writer
    config:
        # the default config writes block data to the data directory.

The conduit init command can also be used to select which plugins to include in the template. The example below uses the standard algod importer and sends the data to PostgreSQL. This example does not use any processor plugins.

./conduit init --importer algod --exporter postgresql > data/conduit.yml

Before running Conduit you need to review and modify conduit.yml according to your environment.

Run Conduit

Once configured, start Conduit with your data directory as an argument:

./conduit -d data

Full Tutorials

External Plugins

Conduit supports external plugins which can be developed by anyone.

For a list of available plugins and instructions on how to use them, see the External Plugins page.

External Plugin Development

See the Plugin Development page for building a plugin.

Contributing

Contributions are welcome! Please refer to our CONTRIBUTING document for general contribution guidelines.

Extension points exported contracts — how you extend this code

RoundRequestor (Interface)
RoundRequestor is an optional interface. Plugins should implement it if they would like to request an override to the pi [7 …
conduit/hooks.go
Plugin (Interface)
Plugin is the common interface for all Conduit plugins. [16 implementers]
conduit/plugins/plugin.go
StatusProvider (Interface)
StatusProvider is a subset of the Pipeline interface required by the health handler. [2 implementers]
api/api.go
Client (Interface)
Client represents the Telemetry client and config [1 implementers]
conduit/telemetry/telemetryCommon.go
RoundProvider (Interface)
RoundProvider is the interface which all data types sent to Exporters should implement [1 implementers]
conduit/data/block_export_data.go
Pipeline (Interface)
Pipeline is a struct that orchestrates the entire sequence of events, taking in importers, processors and exporters and [1 …
conduit/pipeline/pipeline.go
Completed (Interface)
Completed is an optional interface. Plugins should implement it if they care to be notified after a round has been fully [7 …
conduit/hooks.go
Importer (Interface)
Importer defines the interface for importer plugins [7 implementers]
conduit/plugins/importers/importer.go

Core symbols most depended-on inside this repo

New
called by 50
conduit/plugins/exporters/exporter_factory.go
Round
called by 49
conduit/data/block_export_data.go
Close
called by 47
conduit/plugins/plugin.go
MakePluginConfig
called by 47
conduit/plugins/config.go
New
called by 38
conduit/plugins/processors/processor_factory.go
Error
called by 37
conduit/pipeline/pipeline.go
Init
called by 35
conduit/plugins/plugin.go
MakePipelineInitProvider
called by 27
conduit/init_provider.go

Shape

Function 287
Method 239
Struct 72
Interface 19
Class 15
FuncType 6
TypeAlias 6

Languages

Go86%
Python14%

Modules by API surface

conduit/pipeline/pipeline_test.go46 symbols
conduit/pipeline/pipeline.go34 symbols
conduit/pipeline/pipeline_bench_test.go27 symbols
conduit/plugins/importers/algod/algod_importer.go23 symbols
conduit/plugins/importers/algod/algod_importer_test.go19 symbols
conduit/plugins/importers/algod/mock_algod_test.go18 symbols
conduit/plugins/processors/filterprocessor/filter_processor_test.go14 symbols
e2e_tests/src/e2e_conduit/scenarios/follower_indexer_scenario.py13 symbols
conduit/plugins/processors/filterprocessor/filter_processor_bench_test.go13 symbols
conduit/plugins/exporters/filewriter/file_exporter_test.go12 symbols
e2e_tests/src/e2e_common/util.py11 symbols
conduit/plugins/processors/filterprocessor/expression/expression.go11 symbols

For agents

$ claude mcp add conduit \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page