Real-time streaming data pipelines for Solana - transform on-chain events into typed state projections.
| Package | Language | Registry | Description |
|---|---|---|---|
| hyperstack | Rust | crates.io | Umbrella crate re-exporting all components |
| hyperstack-interpreter | Rust | crates.io | AST transformation runtime and VM |
| hyperstack-macros | Rust | crates.io | Proc-macros for stream definitions |
| hyperstack-server | Rust | crates.io | WebSocket server and projection handlers |
| hyperstack-sdk | Rust | crates.io | Rust client SDK |
| hyperstack-cli | Rust | crates.io | CLI tool for SDK generation |
| hyperstack-typescript | TypeScript | npm | Pure TypeScript SDK (framework-agnostic) |
| hyperstack-react | TypeScript | npm | React SDK with hooks |
| hyperstack-sdk | Python | PyPI | Python client SDK (work in progress - not yet published) |
Add to your Cargo.toml:
[dependencies]
hyperstack = "0.2"npm install hyperstack-typescriptnpm install hyperstack-reactNote: The Python SDK is a work in progress and has not yet been published to PyPI.
# Coming soon
pip install hyperstack-sdkhyperstack/: Main umbrella crateinterpreter/: AST transformation runtime and VMhyperstack-macros/: Proc-macros for stream definitionsrust/hyperstack-server/: WebSocket server and projection handlersrust/hyperstack-sdk/: Rust client SDKcli/: CLI tool for SDK generationtypescript/core/: Pure TypeScript SDKtypescript/react/: React SDK with hookspython/hyperstack-sdk/: Python client SDK
This repo uses release-please for automated releases.
-
Make commits using conventional commit format:
feat: add new feature- triggers minor version bumpfix: resolve bug- triggers patch version bumpfeat!: breaking change- triggers major version bumpchore:,docs:,refactor:- no version bump
-
Push to
main- release-please automatically creates/updates a Release PR -
Merge the Release PR - this:
- Updates
CHANGELOG.mdin affected packages - Bumps versions in
Cargo.toml,package.json,pyproject.toml - Creates a GitHub Release with a unified version tag
- Triggers publish workflows to crates.io, npm, and PyPI
- Updates
| File | Purpose |
|---|---|
release-please-config.json |
Package definitions and release settings |
.release-please-manifest.json |
Tracks current version of each package |
All packages (Rust and TypeScript) are kept at the same version number using the linked-versions plugin. When any package receives a version bump, all packages are updated to the highest version in the group. This ensures compatibility when using packages individually.
Tags follow the pattern v{version} (e.g., v0.2.0). Since all packages are version-synchronized, a single tag represents all packages in the release.
- Rust: 1.70+ (install via rustup)
- Node.js: 16+ (for TypeScript SDK)
- Python: 3.9+ (for Python SDK)
# Clone the repository
git clone https://github.com/HyperTekOrg/hyperstack.git
cd hyperstack
# Build all Rust packages
cargo build --workspace
# Build TypeScript SDKs
cd typescript/core && npm install && npm run build
cd ../react && npm install && npm run build
# Install Python SDK in development mode
cd python/hyperstack-sdk && pip install -e .# Rust tests
cargo test --workspace
# Rust linting
cargo clippy --workspace -- -D warnings
# TypeScript tests
cd typescript/core && npm test
cd ../react && npm test
# Python tests
cd python/hyperstack-sdk && pytesthyperstack/
├── hyperstack/ # Rust umbrella crate
├── interpreter/ # AST transformation runtime and VM
├── hyperstack-macros/ # Proc-macros for stream definitions
├── cli/ # CLI tool (hyperstack-cli)
├── rust/
│ ├── hyperstack-sdk/ # Rust client SDK
│ └── hyperstack-server/ # WebSocket server
├── typescript/
│ ├── core/ # Pure TypeScript SDK (hyperstack-typescript)
│ └── react/ # React SDK (hyperstack-react)
├── python/hyperstack-sdk/ # Python client SDK
└── docs/ # Documentation (MDX)
- Concepts Overview - Architecture and core concepts
- Stack API - Client-side API reference
- CLI Commands - CLI usage guide
- React Quickstart - Getting started with React
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Make your changes
- Run tests (
cargo test --workspace) - Commit using conventional commits format
- Open a pull request
We use conventional commits for automated releases:
| Prefix | Purpose | Version Bump |
|---|---|---|
feat: |
New feature | Minor |
fix: |
Bug fix | Patch |
feat!: or fix!: |
Breaking change | Major |
docs: |
Documentation only | None |
chore: |
Maintenance | None |
refactor: |
Code refactoring | None |
- Rust: Follow
rustfmtdefaults, passclippywith no warnings - TypeScript: Follow ESLint configuration in
typescript/ - Python: Follow PEP 8
This project uses a dual license approach:
- Rust infrastructure (hyperstack, interpreter, hyperstack-macros, server, cli): Apache-2.0
- Client SDKs (TypeScript, Python, Rust SDK): MIT