Show HN: Hibana – An Affine MPST Runtime for Rust
17 points by o8vm 7 days ago | 6 comments
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


seg_lol 6 days ago
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.

reply
o8vm 6 days ago
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.

reply
antonvs 2 days ago
Examples would help.
reply
o8vm 13 hours ago
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.

reply
kej 2 days ago
The habana-quic link is unavailable in GitHub. Is that possibly a private repo that you meant to make public?
reply
o8vm 13 hours ago
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.

reply
alvinunreal 7 days ago
[flagged]
reply