Quickstart
This quickstart gets you streaming live Solana data in a few minutes using the ORE demo — a real, deployed Hyperstack stack for the ORE mining program. It’s the fastest way to see Hyperstack in action.
Prerequisites
Section titled “Prerequisites”Choose how you want to run the CLI:
Install the native binary via Cargo:
cargo install hyperstack-cliThen use the hs command:
hs create my-appThis is the same CLI — Cargo installs it as hs while npm uses hyperstack-cli.
No installation needed — just run:
npx hyperstack-cli create my-appThis downloads and runs the CLI without installing it globally.
Install globally via npm:
npm install -g hyperstack-cliThen use the hyperstack-cli command:
hyperstack-cli create my-appCreate Your App
Section titled “Create Your App”hs create my-appnpx hyperstack-cli create my-apphyperstack-cli create my-appYou’ll be prompted to select a template:
| Template | Description | Run Command |
|---|---|---|
react-ore | React + Vite dashboard | npm run dev → open localhost:5173 |
typescript-ore | TypeScript CLI client | npm start |
rust-ore | Rust + Tokio client | cargo run |
Or specify the template directly:
hs create my-app --template rust-ore # or react-ore, typescript-orenpx hyperstack-cli create my-app --template react-ore # or typescript-ore, rust-orehyperstack-cli create my-app --template react-ore # or typescript-ore, rust-oreThat’s it. You’re streaming live Solana data.
What You Just Built
Section titled “What You Just Built”The scaffolded app connects to a deployed Hyperstack Stack — a streaming data pipeline that:
- Watches Solana for ORE mining program activity
- Transforms raw transactions into structured round data (round ID, motherlode, deployment totals)
- Streams updates to your app via WebSocket as they happen on-chain
Solana
ORE program
Hyperstack
ORE stack
Your App
Live feed
No RPC calls. No polling. No custom indexer. Just streaming data.
Available Templates
Section titled “Available Templates”| Template | Command | What You Get |
|---|---|---|
| react-ore | npx hyperstack-cli create my-app | React + Vite dashboard showing live ORE mining rounds |
| typescript-ore | npx hyperstack-cli create my-app | TypeScript CLI that streams ORE data to your terminal |
| rust-ore | npx hyperstack-cli create my-app | Rust + Tokio client streaming ORE round updates |
All templates connect to the public ORE stack at wss://ore.stack.usehyperstack.com.
You can also specify the template directly:
npx hyperstack-cli create my-app --template react-oreWhat’s Inside
Section titled “What’s Inside”The React template uses hyperstack-react with a pre-built stack definition:
import { HyperstackProvider } from "hyperstack-react";import { OreDashboard } from "./components/OreDashboard";
export default function App() { return ( <HyperstackProvider websocketUrl="wss://ore.stack.usehyperstack.com" autoConnect={true} > <OreDashboard /> </HyperstackProvider> );}import { useHyperstack } from "hyperstack-react";import { ORE_STREAM_STACK } from "hyperstack-stacks/ore";
export function OreDashboard() { const { views, isConnected } = useHyperstack(ORE_STREAM_STACK); const { data: rounds } = views.OreRound.latest.use({ take: 5 });
return ( <div> <p>{isConnected ? "Live" : "Connecting..."}</p> {rounds?.map((round) => ( <div key={round.id?.round_id}> Round #{round.id?.round_id} — Motherlode: {round.state?.motherlode} </div> ))} </div> );}The TypeScript template uses hyperstack-typescript with typed views:
import { HyperStack } from "hyperstack-typescript";import { ORE_STREAM_STACK, type OreRound } from "hyperstack-stacks/ore";
const hs = await HyperStack.connect("wss://ore.stack.usehyperstack.com", { stack: ORE_STREAM_STACK,});
for await (const update of hs.views.OreRound.latest.watch({ take: 1 })) { if (update.type === "upsert" || update.type === "patch") { console.log(`Round #${update.data.id?.round_id}`); console.log(`Motherlode: ${update.data.state?.motherlode}`); }}The Rust template uses hyperstack-sdk with typed views:
use hyperstack_sdk::prelude::*;use hyperstack_stacks::ore::{OreStack, OreRound};
#[tokio::main]async fn main() -> anyhow::Result<()> { let hs = HyperStack::<OreStack>::connect().await?;
let mut stream = hs.views.ore_round.latest().listen();
while let Some(round) = stream.next().await { println!("Round # {:?}", round.id.round_id); println!("Motherlode: {:?}", round.state.motherlode); } Ok(())}Using an AI Coding Agent?
Section titled “Using an AI Coding Agent?”Install Hyperstack agent skills so your AI can write correct code without you looking up docs:
npx skills add usehyperstack/skillsNow try asking your agent: “Show me the ORE mining round data in a table with live updates.”
See Build with AI for the full guide and prompt cookbook.
Next Steps
Section titled “Next Steps”Now that you’ve seen Hyperstack in action, where you go next depends on what you’re building:
Using an existing on-chain program that has a Hyperstack stack?
- Connect to a Stack — Add Hyperstack to an existing project
- React SDK — Build a full React app against a deployed stack
- TypeScript SDK — Use Hyperstack in Node.js, Vue, Svelte, or vanilla JS
- Rust SDK — Native Rust client
Have your own on-chain program and want to stream its data?
- Build Your Own Stack — Create a custom data stream for any Solana program
Want to understand what’s happening under the hood?
- How It Works — Stacks, Views, and how live data flows
Using an AI coding tool?
- Build with AI — Let your agent write Hyperstack code with the right context