# CocoIndex Community Forum and Support Channels: Getting Help with Incremental Data Pipelines

> Get help with CocoIndex incremental data pipelines via our active Discord community, GitHub Discussions, and comprehensive documentation. Find fast solutions and support.

- Repository: [CocoIndex/cocoindex](https://github.com/cocoindex-io/cocoindex)
- Tags: community-support
- Published: 2026-05-05

---

**The CocoIndex community primarily gathers on Discord for real-time support, while GitHub Discussions and Issues track bugs and feature requests, complemented by comprehensive documentation and video tutorials.**

CocoIndex is a **declarative, incremental indexing framework** maintained in the `cocoindex-io/cocoindex` repository. Whether you're troubleshooting a pipeline built with the Rust core engine or seeking advice on connector implementations, knowing where to find **CocoIndex community forum or support channels** ensures you get timely help from maintainers and contributors.

## Official Community Forum and Support Channels

### Discord Community Forum

The Discord server at <https://discord.com/invite/zpA9S2DR7s> serves as the primary community forum for CocoIndex. This is the fastest way to get help with incremental pipeline logic, discuss architecture decisions involving the Rust core, or share projects in the **#showcase** channel. The maintainers actively monitor this space for questions about specific implementation details, such as using `mount_each` in [`cocoindex/_internal/api.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/api.py) or debugging target state reconciliation in [`cocoindex/_internal/target_state.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/target_state.py).

### GitHub Discussions and Issues

For bug reports, feature requests, and detailed technical discussions, use the GitHub repository at <https://github.com/cocoindex-io/cocoindex/issues>. When reporting issues with specific components—such as the `App` class in [`cocoindex/_internal/app.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/app.py) or the live component framework in [`cocoindex/_internal/live_component.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/live_component.py)—include minimal reproduction code and specify whether you're using the default SQLite state database or an external connector like PostgreSQL.

### Documentation and Video Resources

The official documentation at <https://cocoindex.io/docs> provides API references and architecture diagrams for understanding the relationship between components, target states, and the Mount API. The YouTube channel at <https://www.youtube.com/@cocoindex-io> offers video tutorials covering advanced topics like building custom connectors in `python/cocoindex/connectors/` or implementing memoized functions with `@coco.fn`.

## Understanding the CocoIndex Architecture

To effectively engage with the community, understanding CocoIndex's core architecture helps you ask precise questions. The framework consists of a Python ergonomic layer and a high-performance Rust core that handles parallel chunking, change detection, and persistence.

| Concept | What it does | Core implementation |
|---|---|---|
| **App** | Top‑level entry point that ties a user‑defined `main` function to the incremental engine. | [[`cocoindex/_internal/app.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/app.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/app.py) |
| **Component** | A processing unit identified by a stable **component path**; owns a set of **target states**. | [[`cocoindex/_internal/component_ctx.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/component_ctx.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/component_ctx.py) |
| **Target State** | Declared description of a resource that must exist (e.g., a table row, a file). | [[`cocoindex/_internal/target_state.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/target_state.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/target_state.py) |
| **Mount API** | `mount`, `mount_each`, `use_mount`, `mount_target` – async‑first helpers to launch components and retrieve results. | [[`cocoindex/_internal/api.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/api.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/api.py) |
| **Live Component** | Background‑running component that continuously processes a live data source (e.g., a Kafka topic). | [[`cocoindex/_internal/live_component.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/live_component.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/live_component.py) |
| **Environment** | Holds configuration, lifespan hooks, and the Rust core handle. | [[`cocoindex/_internal/environment.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/environment.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/environment.py) |
| **Rust Core** | High‑performance async engine (parallel chunking, change detection, persistence). | `rust/core` crate (built via `uv run maturin develop`). |
| **Connectors** | Plug‑ins that turn external systems into **targets** (Postgres, SQLite, Qdrant, S3, Kafka, etc.). | `python/cocoindex/connectors/…` (e.g., [[`postgres.py`](https://github.com/cocoindex-io/cocoindex/blob/main/postgres.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/connectors/postgres.py)) |
| **Ops** | Re‑usable data‑processing utilities (text splitting, LLM extraction, embeddings). | `python/cocoindex/ops/…` (e.g., [[`text.py`](https://github.com/cocoindex-io/cocoindex/blob/main/text.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/ops/text.py)) |

The engine persists a **state database** (SQLite by default) that records the stable path of each component, the hash of its code, and the hash of each target's declared data. On every `App.update()`, the engine computes new hashes, determines which components changed, and re-executes only the changed components and downstream dependents.

## Building Incremental Pipelines: Code Examples

When asking for help in community channels, referencing these canonical patterns helps maintainers understand your context.

### Basic File Indexing Pipeline

This example walks a local directory, splits files into text chunks, embeds them, and upserts into PostgreSQL:

```python
import pathlib
import cocoindex as coco
from cocoindex.connectors import localfs, postgres
from cocoindex.ops.text import RecursiveSplitter

@coco.fn(memo=True)
async def index_file(file: localfs.FileLike, table: postgres.TableTarget) -> None:
    for chunk in RecursiveSplitter().split(await file.read_text()):
        vector = await embed(chunk.text)
        table.declare_row(text=chunk.text, embedding=vector)

@coco.fn
async def main(src_dir: pathlib.Path):
    table = await coco.use_mount(postgres.declare_table_target, "mydb", table_name="docs")
    table.declare_vector_index(column="embedding")
    await coco.mount_each(index_file, localfs.walk_dir(src_dir).items(), table)

coco.App(
    coco.AppConfig(name="DocsIndex"),
    main,
    src_dir=pathlib.Path("./docs")
).update_blocking(report_to_stdout=True)

```

### Live Kafka-to-Postgres Stream

For questions about live components and streaming sources:

```python
import cocoindex as coco
from cocoindex.connectors import kafka, postgres

@coco.fn
async def process_message(msg: kafka.Message, table: postgres.TableTarget):
    data = json.loads(msg.value)
    table.declare_row(id=data["id"], payload=data["payload"])

@coco.fn
async def main():
    source = await coco.use_mount(kafka.consume_topic, topic="events")
    table = await coco.use_mount(postgres.declare_table_target, "mydb", table_name="events")
    await coco.mount(kafka.LiveKafkaConsumer, source, table, processor=process_message)

coco.App(coco.AppConfig(name="KafkaIngest"), main).update_blocking()

```

## Key Source Files for Contributors

When reporting bugs or requesting features, reference these specific files:

| Area | File | Why it matters |
|------|------|----------------|
| Public package entry | [[`cocoindex/__init__.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/__init__.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/__init__.py) | Re‑exports the public API (`App`, `mount`, `fn`, …). |
| Core app logic | [[`cocoindex/_internal/app.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/app.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/app.py) | Defines `App`, `UpdateHandle`, `DropHandle`, sync/async entry points. |
| Declarative API | [[`cocoindex/_internal/api.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/api.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/api.py) | Implements `mount`, `mount_each`, `use_mount`, `mount_target`, runtime helpers. |
| Component context | [[`cocoindex/_internal/component_ctx.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/component_ctx.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/component_ctx.py) | Manages component paths, exception handling, and context propagation. |
| Target‑state model | [[`cocoindex/_internal/target_state.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/target_state.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/target_state.py) | Declares target state providers, reconciliation logic, child‑target plumbing. |
| Environment & lifespan | [[`cocoindex/_internal/environment.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/environment.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/environment.py) | Holds configuration, creates the Rust core instance, starts/stops the process. |
| Function utilities | [[`cocoindex/_internal/function.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/function.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/function.py) | `@coco.fn` decorator, memo‑fingerprinting, async/sync handling. |
| Live components | [[`cocoindex/_internal/live_component.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/live_component.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/live_component.py) | Base class for background, continuously‑running components (Kafka, file watchers, etc.). |
| Update‑stats & progress | [[`cocoindex/_internal/update_stats.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/update_stats.py)](https://github.com/cocoindex-io/cocoindex/blob/main/python/cocoindex/_internal/update_stats.py) | Structures for reporting progress (`ComponentStats`, `UpdateSnapshot`). |

## Summary

- **Discord** serves as the primary real-time **CocoIndex community forum** for questions and showcases.
- **GitHub Issues** track bugs in specific files like [`cocoindex/_internal/app.py`](https://github.com/cocoindex-io/cocoindex/blob/main/cocoindex/_internal/app.py) or connectors.
- **Documentation and YouTube** provide self-service resources for understanding the Rust core and Python API.
- The framework combines a thin Python ergonomic layer with a high-performance Rust core engine.
- **Connectors** and **Ops** follow consistent patterns in `python/cocoindex/` for extending functionality.

## Frequently Asked Questions

### How do I get help with a specific error in my CocoIndex pipeline?

Post the error message and relevant code snippet in the Discord **#help** channel or create a GitHub Issue if it appears to be a bug. Include details about your environment, such as whether you're using the default SQLite state database or external targets like PostgreSQL, and reference specific methods like `mount_each` or `declare_row` that are failing.

### Where can I share my CocoIndex project with the community?

Use the **#showcase** channel on Discord or tag `@cocoindex_io` on X (Twitter). The maintainers actively highlight community projects that demonstrate innovative uses of incremental indexing, custom connectors in `python/cocoindex/connectors/`, or creative applications of the `LiveComponent` framework.

### How do I report a bug in the Rust core engine?

File a GitHub Issue in the `cocoindex-io/cocoindex` repository with reproduction steps and any panic logs. The Rust core handles parallel processing, change detection, and persistence, so include information about your data volume, connector types (Postgres, Kafka, etc.), and whether the issue occurs during initial indexing or incremental updates.

### Is there a mailing list or forum outside of Discord and GitHub?

Currently, Discord serves as the primary **CocoIndex community forum**, supplemented by GitHub Discussions for long-form technical conversations about architecture decisions. The documentation site at <https://cocoindex.io/docs> and the YouTube channel provide official tutorials and API references for asynchronous learning without real-time interaction.