Crate Map

IndexBus is split into three layers. Lower layers are no_std-first with minimal dependencies; higher layers add ergonomics and production scaffolding.

Layer Model

┌──────────────────────────────────────────────────────────────┐
│                    Platform Layer                             │
│  indexbus-platform-*: lifecycle, config, observability,       │
│  HTTP, DB/auth adapters. std-first production scaffolding.    │
├──────────────────────────────────────────────────────────────┤
│                      Kit Layer                               │
│  indexbus-kit: safe constructors, named lanes, typed          │
│  convenience. "Happy path" without hiding the substrate.      │
├──────────────────────────────────────────────────────────────┤
│                   Substrate Layer                             │
│  indexbus-abi, indexbus-core, indexbus-transport-*,            │
│  indexbus-codec-*, indexbus-route, indexbus-seq,               │
│  indexbus-log, indexbus-msg, indexbus-typed, ...               │
│  ABI layouts, core algorithms, transports, codecs.            │
│  no_std-first, minimal deps, hot-path correctness.            │
└──────────────────────────────────────────────────────────────┘

Substrate Crates

no_std-first crates that implement ABI layouts, core algorithms, transports, and codecs.

CratePurpose
indexbus-abiv1 #[repr(C)] ABI layouts — source of truth
indexbus-coreCore algorithms + safe handles over ABI layouts
indexbus-msgv1 envelope (fixed header, magic USM1, type/version)
indexbus-typedTyped message glue (codec dispatch + envelope)
indexbus-codecCodec trait
indexbus-codec-rawRaw POD codec (zero-copy #[repr(C)])
indexbus-codec-serdeSerde-based codec
indexbus-codec-rkyvrkyv (zero-copy archive) codec
indexbus-codec-sbeSBE (Simple Binary Encoding) codec
indexbus-transport-localIn-process transport (testing and single-process)
indexbus-transport-shmFile-backed SHM transport
indexbus-transport-udpUDP transport (experimental)
indexbus-routeRouter runner + CLI (indexbus-router)
indexbus-seqSequencer + gating sequences
indexbus-logJournal/segment log algorithms
indexbus-wakeWake primitives for OS blocking
indexbus-blockingBlocking wait strategies
indexbus-adaptersRuntime adapters (tokio, async-std, smol)
indexbus-adapters-coreAdapter traits
indexbus-inspectRegion inspection CLI tool
indexbus-benchCriterion benchmarks

Kit Crates

Ergonomic layer that wraps the substrate with safe constructors and typed convenience.

CratePurpose
indexbus-kitSafe constructors, named lanes, typed convenience wrappers

Platform Crates

std-first production scaffolding for lifecycle, configuration, observability, and service integrations.

CratePurpose
indexbus-platform-coreLifecycle, supervision, shutdown
indexbus-platform-configConfiguration conventions and loaders
indexbus-platform-obsObservability (tracing/logging/metrics)
indexbus-platform-httpHTTP server/client (axum/reqwest)
indexbus-platform-opsOS helpers (CPU affinity, memlock)
indexbus-platform-dbDatabase traits + pools
indexbus-platform-db-sqlxsqlx backend
indexbus-platform-authAuthn/authz traits
indexbus-platform-auth-jwtJWT verification
indexbus-platform-auth-oidcOIDC discovery and verification
indexbus-platformUmbrella re-export

Application Crates

CratePurpose
indexbusStart-here umbrella (re-exports kit + platform)
indexbus-appApp template (multi-process roles + platform)

What IndexBus Does NOT Do

These concerns are intentionally pushed to higher layers:

  • No durability — regions are volatile shared memory.
  • No retries or acks — at-most-once is the contract.
  • No exactly-once delivery — by design.
  • No fairness guarantees — scheduling is OS/caller responsibility.
  • No cross-host reliability — single-host IPC only (UDP transport is experimental).
Provenance
Need the canonical source?
Use the public hub to orient yourself, then jump to repo-owned docs or rustdoc when you need contract-level detail.