hckrnws
Show HN: Hibana – An Affine MPST Runtime for Rust
by o8vm
Hi HN — I just open-sourced Hibana and hibana-agent.
Hibana is an Affine MPST runtime for Rust: - global choreography -> compile-time projection -> role-local execution - core is no_std / no_alloc-oriented - deterministic route/offer/recv/decode model
Repo: https://github.com/hibanaworks/hibana Demo (AI control with session-typed branching): https://github.com/hibanaworks/hibana-agent
HN is technical but not that technical. Next time explain why "Affine MultiParty Session Types for Rust" are cool! And maybe how they relate to choreographies and choreographic programming.
Thanks for sharing, this looks cool.
Thank you — this is very helpful feedback.
You’re absolutely right that I led with terminology instead of value. A simpler way to describe it is:
Hibana helps prevent protocol drift bugs in distributed systems. You describe the interaction once as a global choreography, and each role gets a projected local API. Because steps are affine (consumed once), invalid transitions like skipping, reusing, or taking the wrong branch are rejected by the type/protocol model.
So the practical goal is fewer hidden state-machine bugs, with one global source of truth for interaction order.
I appreciate the suggestion, and I’ll explain it this way in the next write-up.
Examples would help.
Here is an example of how a protocol defined in Hibana can confine even an AI agent’s behavior within an explicit interaction flow.
https://github.com/hibanaworks/hibana-agent
From an AMPST perspective, the key idea is this: one global choreography is projected into role-local protocols (Agent/Browser/Human), with affine progression (each step is consumed exactly once).
const LOOP_BODY: g::Program<LoopBodySteps> = g::seq(
g::send::<Agent, Browser, BrowserAction, 0>(),
g::send::<Browser, Agent, BrowserObservation, 0>(),
);
const ADD_TO_CART_APPROVAL: g::Program<AddToCartApprovalSteps> = g::seq(
g::send::<Agent, Human, RequestApproval, 0>(),
g::seq(
g::send::<Human, Agent, ApprovalDecision, 0>(),
g::route::<0, _>(
g::route_chain::<0, AddToCartArm>(ADD_TO_CART_ARM)
.and::<SkipAddToCartArm>(SKIP_ADD_TO_CART_ARM),
),
),
);
So even AI-agent behavior is confined by protocol structure: illegal traces (skip/reorder/reuse/wrong branch) are unrepresentable, not merely blocked by ad hoc runtime checks.As another example, we’re also preparing `hibana-quic` (a QUIC implementation built with Hibana) for public release. It already passes interop tests with neqo.
The habana-quic link is unavailable in GitHub. Is that possibly a private repo that you meant to make public?
Yes, good catch — that repo is currently private while we prepare it for public release.
Current status: we’re actively preparing `hibana-quic` for publication, and it is already passing interop tests with neqo. Please wait a little longer for the public release. Thanks for your patience.
[flagged]
Crafted by Rajat
Source Code