RepoPilot

fluvio-community/fluvio

πŸ¦€ event stream processing for developers to collect and transform data in motion to power responsive data intensive applications.

Healthy

Healthy across the board

HealthyDependency

Permissive license, no critical CVEs, actively maintained β€” safe to depend on.

HealthyFork & modify

Has a license, tests, and CI β€” clean foundation to fork and modify.

HealthyLearn from

Documented and popular β€” useful reference codebase to read through.

HealthyDeploy as-is

No critical CVEs, sane security posture β€” runnable as-is.

  • βœ“Last commit 3d ago
  • βœ“16 active contributors
  • βœ“Distributed ownership (top contributor 47% of recent commits)
  • βœ“Apache-2.0 licensed
  • βœ“CI configured
  • βœ“Tests present

Computed from maintenance signals β€” commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Healthy" badge

Paste into your README β€” live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/fluvio-community/fluvio)](https://repopilot.app/r/fluvio-community/fluvio)

Paste at the top of your README.md β€” renders inline like a shields.io badge.

β–ΈPreview social card

This card auto-renders when someone shares https://repopilot.app/r/fluvio-community/fluvio on X, Slack, or LinkedIn.

Ask AI about fluvio-community/fluvio

Grounded in the actual source code. Pick a starter question or write your own.

Or write your own question β†’

Onboarding doc

Onboarding: fluvio-community/fluvio

Generated by RepoPilot Β· 2026-06-24 Β· Source

🎯Verdict

GO β€” Healthy across the board

  • Last commit 3d ago
  • 16 active contributors
  • Distributed ownership (top contributor 47% of recent commits)
  • Apache-2.0 licensed
  • CI configured
  • Tests present

<sub>Computed from maintenance signals β€” commit recency, contributor breadth, bus factor, license, CI, tests</sub>

⚑TL;DR

Fluvio is a distributed event streaming engine written in Rust that enables real-time collection, transformation, and processing of data in motion. It combines a lean Kafka-like broker architecture with Stateful DataFlow (SDF), a declarative stream processing framework, allowing developers to build composable, stateful data pipelines without operational complexity. Large workspace monorepo (Cargo.toml lists 50+ members) structured as: crates/fluvio* (core broker, CLI, control plane), crates/fluvio-smartmodule* (WASM runtime), crates/fluvio-spu* (stream processing unit), crates/fluvio-connector* (integrations), crates/smartmodule-development-kit (user-facing SDK), examples/ (runnable demos), and .github/workflows/ (CI/CD orchestration).

πŸ‘₯Who it's for

Rust developers and data engineers who need to build real-time data pipelines, stream processing applications, and event-driven systems. Specifically targets those who want a lightweight alternative to Kafka+Flink stack with native Rust support and integrated SmartModule (WASM-based) transformations.

🌱Maturity & risk

Actively developed and production-ready. The repo shows significant Rust codebase (3.9M LOC), extensive CI/CD workflows (15+ GitHub Actions), version 0.50.2 (approaching 1.0), regular commits, and comprehensive crate ecosystem. However, the 0.x version suggests API stability is still being solidified, but the scale and infrastructure indicate serious backing.

Moderate risk: large Rust monorepo with 50+ member crates creates tight coupling and complex dependency graph (Cargo.lock present). The transition note in README ('transitioning to fluvio-community hosted build') suggests recent organizational changes. Single-language ecosystem (Rust-only) limits contribution pool. Monitor GitHub Issues for blockers and check recent CI status in workflows.

Active areas of work

Active development on: cluster deployment (cd_dev.yaml, cd_release.yml workflows), connector publishing pipeline (connector-publish.yml), SmartModule SDK enhancements, and release automation (publish_crates.yml for crate publication). Recent focus on macOS CI parity (ci_mac.yaml, cd_dev_mac.yaml) and unused dependency detection (ci_unused_deps.yml).

πŸš€Get running

git clone https://github.com/fluvio-community/fluvio.git
cd fluvio
curl -fsS https://raw.githubusercontent.com/fluvio-community/fluvio/master/install.sh | FVM_VERSION=dev bash
export PATH="$HOME/.fluvio/bin:$PATH"
fluvio cluster start
fluvio topic create hello-fluvio
fluvio produce hello-fluvio

Daily commands: For local development: make (see Makefile in root). For cluster: fluvio cluster start (requires fvm installed via install.sh). For specific crates: cargo build -p <crate-name> (e.g., cargo build -p fluvio-cli). CI uses cargo test and cargo build variants across workflows.

πŸ—ΊοΈMap of the codebase

  • Cargo.toml β€” Workspace root defining all member crates, dependencies, and the fundamental structure of the Fluvio distributed streaming system.
  • crates/fluvio/Cargo.toml β€” Core Fluvio SDK crateβ€”entry point for all client-side streaming operations and the primary public API.
  • crates/fluvio-cli/Cargo.toml β€” Command-line interface for cluster administration and topic management; essential for operators and developers.
  • crates/fluvio-cluster/Cargo.toml β€” Cluster provisioning and lifecycle management; required to understand deployment and scaling architecture.
  • crates/fluvio-controlplane/Cargo.toml β€” Control plane orchestration and metadata managementβ€”the brain of the distributed system.
  • crates/cdk/src/main.rs β€” SmartModule Development Kit entry point; critical for custom data transformation and stream processing extensions.
  • README.md β€” High-level project overview, design goals, and quick-start guide that frames all architectural decisions.

πŸ› οΈHow to make changes

Add a new SmartModule filter/transformation

  1. Generate SmartModule scaffold using CDK: cdk generate --name my-filter (crates/cdk/src/generate.rs)
  2. Implement filter/map logic in generated Rust source following WASM constraints (crates/cdk/src/cmd.rs)
  3. Test locally with cdk test which invokes the build and test harness (crates/cdk/src/test.rs)
  4. Deploy to Fluvio Hub with cdk deploy which publishes WASM artifact and metadata (crates/cdk/src/deploy.rs)
  5. Use in consumer pipeline by referencing SmartModule in topic subscription config (examples/02-consume/Cargo.toml)

Add a new source or sink connector

  1. Use template generator: cargo generate --git https://github.com/fluvio-community/fluvio --path connector/cargo_template (connector/cargo_template/cargo-generate.toml)
  2. Implement Source or Sink trait in main.rs, handling configuration and data flow (connector/json-test-connector/src/main.rs)
  3. Define connector metadata and config schema in Connector.toml (connector/json-test-connector/Connector.toml)
  4. Build Docker image and publish to Fluvio Hub via CI workflow (.github/workflows/connector-publish.yml)
  5. Reference in cluster config to automatically deploy and connect to topics (connector/json-test-connector/sample-config.yaml)

Add a new CLI command

  1. Define command struct and implement subcommand handler in CLI module (crates/fluvio-cli/Cargo.toml)
  2. Use shared CLI utilities for output formatting and configuration (crates/fluvio-cli-common/Cargo.toml)
  3. Register command in main CLI dispatcher and add help documentation (crates/fluvio-cli/src/main.rs)
  4. Add integration test exercising command against running cluster (.github/workflows/ci.yml)

Extend the control plane with a new resource type

  1. Define resource schema and metadata type in controlplane-metadata (crates/fluvio-controlplane-metadata/Cargo.toml)
  2. Implement store and replication logic in control plane core (crates/fluvio-controlplane/Cargo.toml)
  3. Add admin API handlers to expose CRUD operations (crates/fluvio-cli/Cargo.toml)
  4. Add CLI subcommand to manage the new resource type (crates/fluvio-cli/Cargo.toml)

πŸ”§Why these technologies

  • Rust β€” Memory safety without garbage collection, zero-cost abstractions, and performance critical for streaming at scale; enables safe concurrency for distributed consensus.
  • WebAssembly (WASM) β€” SmartModules run transformations in sandboxed context without JVM overhead; language-agnostic and portable across platforms while maintaining security isolation.
  • Kubernetes / Helm β€” Cloud-native deployment model; integrates with ecosystem tooling for orchestration, scaling, and lifecycle management of distributed cluster.
  • gRPC / Protocol Buffers β€” Efficient, typed RPC for control plane and data plane communication; multiplexing and streaming natively supported for low-latency protocols.
  • Raft / paxos β€” Distributed consensus for metadata replication and leader election; ensures control plane consistency across cluster membership changes.

βš–οΈTrade-offs already made

  • SmartModule as WASM rather than native plugins

    • Why: Eliminates need to recompile/redeploy broker; safer sandboxing prevents connector crashes from crashing broker.
    • Consequence: WASM startup overhead per-transformation and limited to WebAssembly capabilities; cannot use arbitrary native libraries without wrapping.
  • Log-structured storage (immutable append-only) rather than mutable tables

    • Why: Simplifies replication, recovery, and enables time-travel queries; natural fit for streaming use case.
    • Consequence: Disk space grows unbounded; requires explicit

πŸͺ€Traps & gotchas

  1. FVM bootstrap version: README explicitly warns to use FVM_VERSION=dev during install.sh due to ongoing community transition; using stable version will fail. 2) Rust edition 2024: Requires Rust 1.82+; older toolchains will fail on workspace import. 3) Monorepo build interdependencies: Many crates depend on fluvio-protocol; changing protocol struct definitions requires cascading crate rebuilds. 4) macOS-specific CI: .github/workflows/ci_mac.yaml and cd_dev_mac.yaml exist but may drift from Linux CI; always test both. 5) Connector deployer chain: fluvio-connector-deployer depends on successful publication of fluvio-connector-common; publishing order matters (see connector-publish.yml). 6) SmartModule WASM runtime: fluvio-smartengine requires WASM runtime setup; local dev may need wasm32 target: rustup target add wasm32-unknown-unknown.

πŸ—οΈArchitecture

πŸ’‘Concepts to learn

  • SmartModule (WASM-based inline transformations) β€” Core innovation in Fluvio that allows users to deploy data transformations (map, filter, aggregate) as sandboxed WASM bytecode directly on brokers without external processing overhead; essential for understanding fluvio-smartmodule-derive and fluvio-smartengine
  • Stateful DataFlow (SDF) β€” Fluvio's declarative stream processing paradigm that unifies data streaming and processing in one model; learning this is critical for understanding crates/fluvio-stream-dispatcher and how stateful operations work across partitions
  • Stream Processing Unit (SPU) partitioning model β€” Fluvio divides work across multiple SPU brokers by topic partition; critical for understanding crates/fluvio-spu and why fluvio-controlplane-metadata tracks partition leadership and replica assignment
  • Metadata control plane (StreamController) β€” The fluvio-sc crate implements the control plane that manages cluster state, topic metadata, and partition election; understanding this is essential for cluster operations and debugging state inconsistencies
  • Protocol buffers + Rust derive macros β€” fluvio-protocol-derive provides proc macros to auto-generate serialization/deserialization for protocol messages; understanding this is key to adding new message types and avoiding protocol mismatches between broker versions
  • Connector framework (sink/source abstractions) β€” crates/fluvio-connector-* define how external systems (Kafka, databases, cloud queues) integrate with Fluvio; essential for understanding data flow beyond the core broker and for implementing custom connectors
  • Consumer offset tracking and offset management β€” Fluvio clients track consume position per partition; understanding fluvio-storage offset persistence and fluvio-kv-storage is critical for building reliable consumers and debugging message loss issues
  • vectordotdev/vector β€” Rust-based data streaming tool with connector ecosystem; similar use case (data pipeline orchestration) but lighter-weight than Fluvio, good reference for Rust stream patterns
  • apache/kafka β€” The architectural inspiration for Fluvio's broker model; Fluvio explicitly positions as 'Kafka-like' but with lower operational overhead and Rust native implementation
  • flink/flink β€” Inspiration for Fluvio's Stateful DataFlow processing model; Fluvio's SDF framework is a declarative alternative to Flink's DataStream API with WASM-based transforms
  • tonic-rs/tonic β€” gRPC framework used by Fluvio for inter-broker communication and client protocols (implied by fluvio-protocol use of protobuf patterns); understanding Tonic is essential for networking contributions
  • infinyon/infinyon-labs β€” Official InfinyOn companion repo; hosts SmartModule examples, connectors, and reference implementations that integrate with this Fluvio core

πŸͺ„PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add integration tests for GitHub Actions setup workflow in .github/actions/setup-fluvio/action.yml

The setup-fluvio action is a critical shared utility used across multiple CI workflows (ci.yml, cd_dev.yaml, benchmarks.yml). Currently, there are no visible integration tests validating that this action correctly installs and configures Fluvio across different platforms. Adding tests would catch regressions early and ensure reliability across the CI/CD pipeline.

  • [ ] Create .github/actions/setup-fluvio/tests directory with integration test scripts
  • [ ] Add tests for Linux (x86_64 and aarch64) and macOS setups using matrix strategy
  • [ ] Verify the action correctly sets up PATH, installs required dependencies, and validates Fluvio version
  • [ ] Document test execution in DEVELOPER.md
  • [ ] Add a test workflow .github/workflows/test-setup-action.yml to run these tests on PRs

Add missing CI workflow for Connector development and validation

The repo has connector templates and tooling (connector/cargo_template, connector/docker, connector-publish.yml) but lacks a dedicated CI workflow to validate connector builds during PR testing. Currently, only connector publication is automated, not validation. This would catch breaking changes to the connector SDK early.

  • [ ] Create .github/workflows/ci_connectors.yml to build and test connector templates
  • [ ] Add validation steps for connector/cargo_template builds with cargo build and cargo test
  • [ ] Include Dockerfile validation using docker build for connector/docker
  • [ ] Test the connector development kit (crates/fluvio-connector-common, fluvio-connector-derive) with unit tests
  • [ ] Run on pull_request events to catch SDK regressions before merge

Add architecture documentation and module dependency graph to DEVELOPER.md

The workspace contains 60+ crates with complex interdependencies (smartmodule, connector, protocol, storage, etc.). New contributors struggle to understand which crates to modify for different features. DEVELOPER.md exists but lacks detailed architecture documentation and a dependency map specific to the crate structure.

  • [ ] Document the core architectural layers: protocol, storage, control-plane, SPU (Stream Processing Unit), smartmodule, and connector layers
  • [ ] Create a dependency graph section showing key crate relationships (e.g., fluvio-cli depends on fluvio, fluvio-smartmodule, fluvio-connector-*)
  • [ ] Add a table mapping common tasks to relevant crate directories (e.g., 'Add a new admin command' β†’ crates/fluvio-cli)
  • [ ] Document the release-tools workflow and version management crates (fluvio-version-manager, check-crate-version)
  • [ ] Link to each crate's Cargo.toml with brief purpose descriptions

🌿Good first issues

  • Add integration tests for fluvio topic delete command in crates/fluvio-cli/tests/; currently only topic create/list have test coverage (visible gap in examples/03-echo and examples/04-admin-watch missing delete workflow).
  • Document the SmartModule SDK lifecycle in crates/smartmodule-development-kit/README.md with a concrete end-to-end example (filter β†’ map β†’ aggregate); current docs jump to API without motivation.
  • Implement missing platform variants in actions/zig-install.sh and actions/zig-uninstall.sh for ARM architectures (aarch64-darwin, aarch64-linux); build-scripts/aarch64-linux-musl-zig-cc exists but install action doesn't use it.

⭐Top contributors

Click to expand

πŸ“Recent commits

Click to expand
  • 889caea β€” ci(deps): bump docker/login-action from 3 to 4 (#4659) (dependabot[bot])
  • 75221b5 β€” build(deps): bump quinn-proto from 0.11.12 to 0.11.14 (#4662) (dependabot[bot])
  • d5c025b β€” chore: fix clippy warnings (#4667) (morenol)
  • a7289e4 β€” chore: Add fvm_version input and update environment variables (#4651) (morenol)
  • ebe2c42 β€” fix: handle invalid Direction display (#4649) (Olexandr88)
  • 0c41665 β€” build(deps): bump wasmtime from 34.0.1 to 38.0.4 (#4618) (dependabot[bot])
  • c6bd325 β€” docs: fix broken API documentation links (#4648) (Olexandr88)
  • 1321465 β€” build(deps): bump bytes from 1.11.0 to 1.11.1 (#4646) (dependabot[bot])
  • d9c3879 β€” build(deps): bump bytes in /smartmodule/regex-filter (#4647) (dependabot[bot])
  • 7bacd1a β€” build(deps): bump bytes from 1.10.1 to 1.11.1 in /smartmodule/examples (#4645) (dependabot[bot])

πŸ”’Security observations

The Fluvio project demonstrates a reasonable security posture as a large, active open-source Rust project. The primary concerns are: (1) an exposed secrets file in test connectors that should be gitignored, (2) the inherent complexity and supply chain risks of a 50+ crate monorepo workspace, and (3) missing or incomplete configuration metadata. The use of Rust as the primary language provides memory safety benefits. Recommended actions include immediate removal of secrets.txt from version control, implementation of dependency auditing tools (cargo-audit, cargo-deny), and establishment of a formal supply chain security process. The incomplete repository URL should also be corrected.

  • Medium Β· Exposed Secrets File in Connector Test Directory β€” connector/sink-test-connector/secrets.txt. The file 'connector/sink-test-connector/secrets.txt' appears to contain secrets or sensitive credentials. Having plaintext secrets files in the repository, even for testing purposes, poses a security risk if the repository is public or if credentials are accidentally committed. Fix: Remove secrets.txt from version control. Use environment variables, secrets management tools, or .gitignore entries for sensitive files. Implement pre-commit hooks to prevent accidental secrets commits.
  • Medium Β· Large Monorepo with Mixed Dependencies β€” Cargo.toml (workspace configuration). The workspace contains 50+ member crates with shared dependency management. This increases the attack surface as vulnerabilities in transitive dependencies could affect multiple components. The 'resolver = 2' setting helps but doesn't eliminate the risk. Fix: Implement regular dependency audits using 'cargo audit'. Use 'cargo-deny' for supply chain security. Establish a dependency update policy and monitor advisories from crates.io.
  • Low Β· Missing Edition Specification β€” Cargo.toml (workspace.package.edition). The workspace.package section specifies 'edition = "2024"', which is not a valid Rust edition. Valid editions are 2015, 2018, and 2021. This may cause build failures or unexpected behavior. Fix: Update the edition to a valid Rust edition, such as '2021'.
  • Low Β· Incomplete Repository URL in Workspace Package β€” Cargo.toml (workspace.package.repository). The repository URL in workspace.package appears to be truncated ('https://github.com/fluvio-comm...'), making it impossible to verify the actual source repository. Fix: Complete the repository URL with the full path: 'https://github.com/fluvio-community/fluvio'
  • Low Β· Lack of SBOM and Provenance Documentation β€” Repository root. No Software Bill of Materials (SBOM) or provenance documentation is visible in the provided file structure. This makes it difficult to track the supply chain and ensure all dependencies are legitimate. Fix: Generate and maintain an SBOM using tools like 'cargo-sbom' or 'syft'. Publish provenance information and consider implementing SLSA framework compliance.

LLM-derived; treat as a starting point, not a security audit.

πŸ€–Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale β€” STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI Β· unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/fluvio-community/fluvio shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything β€” but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

βœ…Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live fluvio-community/fluvio repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale β€” regenerate it at repopilot.app/r/fluvio-community/fluvio.

What it runs against: a local clone of fluvio-community/fluvio β€” the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in fluvio-community/fluvio | Confirms the artifact applies here, not a fork | | 2 | License is still Apache-2.0 | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≀ 33 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> β€” paste this script from inside your clone of <code>fluvio-community/fluvio</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of fluvio-community/fluvio. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/fluvio-community/fluvio.git
#   cd fluvio
#
# Then paste this script. Every check is read-only β€” no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of fluvio-community/fluvio and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "fluvio-community/fluvio(\\.git)?\\b" \\
  && ok "origin remote is fluvio-community/fluvio" \\
  || miss "origin remote is not fluvio-community/fluvio (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(Apache-2\\.0)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"Apache-2\\.0\"" package.json 2>/dev/null) \\
  && ok "license is Apache-2.0" \\
  || miss "license drift β€” was Apache-2.0 at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 4. Critical files exist
test -f "Cargo.toml" \\
  && ok "Cargo.toml" \\
  || miss "missing critical file: Cargo.toml"
test -f "crates/fluvio/Cargo.toml" \\
  && ok "crates/fluvio/Cargo.toml" \\
  || miss "missing critical file: crates/fluvio/Cargo.toml"
test -f "crates/fluvio-cli/Cargo.toml" \\
  && ok "crates/fluvio-cli/Cargo.toml" \\
  || miss "missing critical file: crates/fluvio-cli/Cargo.toml"
test -f "crates/fluvio-cluster/Cargo.toml" \\
  && ok "crates/fluvio-cluster/Cargo.toml" \\
  || miss "missing critical file: crates/fluvio-cluster/Cargo.toml"
test -f "crates/fluvio-controlplane/Cargo.toml" \\
  && ok "crates/fluvio-controlplane/Cargo.toml" \\
  || miss "missing critical file: crates/fluvio-controlplane/Cargo.toml"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 33 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~3d)"
else
  miss "last commit was $days_since_last days ago β€” artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) β€” safe to trust"
else
  echo "artifact has $fail stale claim(s) β€” regenerate at https://repopilot.app/r/fluvio-community/fluvio"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

Generated by RepoPilot. Verdict based on maintenance signals β€” see the live page for receipts. Re-run on a new commit to refresh.

Embed this chat in your README β†’

Drop this iframe anywhere β€” the widget runs against the same live analysis cache as the main app.

<iframe
  src="https://repopilot.app/embed/fluvio-community/fluvio"
  width="100%" height="500"
  style="border:1px solid #d0d7de; border-radius:8px;"
  allow="microphone"
  loading="lazy"
></iframe>