A TypeScript-first toolkit for building robust Stellar and Soroban applications with deterministic error handling, composable workflows, and extensible plugin architecture.
The foundation of the Colibri ecosystem. Provides pipelines, processes, and utilities for Stellar and Soroban workflows.
deno add jsr:@colibri/core
# or
npm install @colibri/coreA plugin that enables fee sponsorship by wrapping transactions in Fee Bump Transactions.
deno add jsr:@colibri/plugin-fee-bump
# or
npm install @colibri/plugin-fee-bumpA real-time event streaming client for Stellar/Soroban that supports live streaming, historical ingestion, and automatic mode switching.
deno add jsr:@colibri/event-streamer
# or
npm install @colibri/event-streamerColibri is designed around a specific mindset to ensure reliability and debuggability in blockchain applications. It is built on top of the Convee framework, leveraging its patterns for functional, railway-oriented programming.
We do not throw generic errors. Every error in Colibri is a typed ColibriError containing:
- Domain: The logical area (e.g.,
Pipeline,Process,Account). - Code: A stable, unique identifier (e.g.,
PIPE_INVC_002). - Meta: Structured data relevant to the error context.
- Diagnostic: Human-readable suggestions for resolution.
The architecture separates orchestration from execution, promoting reusability and testability.
-
Processes (The "How"): Atomic, stateless units of work. They focus on doing one thing well.
- Example:
P_SignAuthEntriestakes a transaction and a signer, and produces signed authorization entries. It doesn't care where the transaction came from or what happens next. - Example:
P_SimulateTransactiontakes a transaction, sends it to the RPC, and returns the simulation results (or a specific error if simulation fails).
- Example:
-
Pipelines (The "What"): Orchestrators that chain processes together to achieve a high-level business goal.
- Example:
PIPE_InvokeContractis a pipeline composed of several processes:P_BuildTransaction(Create the XDR)P_SimulateTransaction(Check if it's valid)P_AssembleTransaction(Apply simulation data)P_SignEnvelope(Gather signatures)P_SendTransaction(Submit to network)
- Example:
This composition allows us to swap parts easily. For instance, a FeeBump plugin simply injects a P_WrapFeeBump process into the pipeline before the signing phase, without rewriting the core logic.
Everything is strictly typed. From network configurations to error metadata, TypeScript is used to enforce correctness at compile time.
The system is built in layers, aiming to provide both high-level tools for specific use cases and highly specialized, bullet-proof building blocks.
- Layer 4: Plugins, Clients & Streamers
- Extensions (Fee Bump), specialized clients (Contract, Signer), and event streaming.
- Layer 3: Pipelines
- High-level workflows (
PIPE_InvokeContract,PIPE_ReadFromContract).
- High-level workflows (
- Layer 2: Processes
- Atomic logic blocks (
P_BuildTransaction,P_SimulateTransaction).
- Atomic logic blocks (
- Layer 1: Core
- Base types, Error primitives, Network configurations, and Account wrappers.
This workspace is a Deno monorepo. We use specific tasks defined in deno.json to maintain quality.
Run the test suite. You can run all tests or target specific types.
# Run all tests (Unit + Integration)
deno task test
# Run only unit tests
deno task test:unit
# Run only integration tests (requires network connection)
deno task test:integrationEnsure code style consistency.
deno lintGenerate and view test coverage reports.
deno task coverage:reportMIT License - see LICENSE for details.
Status: Beta (🪶)